{
  "id": "b77ab3813a62735cc5d2f9124a0c89f8",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.8.13",
  "solcLongVersion": "0.8.13+commit.abaa5c0e",
  "input": {
    "language": "Solidity",
    "sources": {
      "src/contracts/Conduit.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\nimport \"seaport/contracts/conduit/Conduit.sol\";\n"
      },
      "seaport/contracts/conduit/Conduit.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\nimport { ConduitInterface } from \"../interfaces/ConduitInterface.sol\";\n\nimport { ConduitItemType } from \"./lib/ConduitEnums.sol\";\n\nimport { TokenTransferrer } from \"../lib/TokenTransferrer.sol\";\n\n// prettier-ignore\nimport {\n    ConduitTransfer,\n    ConduitBatch1155Transfer\n} from \"./lib/ConduitStructs.sol\";\n\n/**\n * @title Conduit\n * @author 0age\n * @notice This contract serves as an originator for \"proxied\" transfers. Each\n *         conduit is deployed and controlled by a \"conduit controller\" that can\n *         add and remove \"channels\" or contracts that can instruct the conduit\n *         to transfer approved ERC20/721/1155 tokens. *IMPORTANT NOTE: each\n *         conduit has an owner that can arbitrarily add or remove channels, and\n *         a malicious or negligent owner can add a channel that allows for any\n *         approved ERC20/721/1155 tokens to be taken immediately — be extremely\n *         cautious with what conduits you give token approvals to!*\n */\ncontract Conduit is ConduitInterface, TokenTransferrer {\n    // Set deployer as an immutable controller that can update channel statuses.\n    address private immutable _controller;\n\n    // Track the status of each channel.\n    mapping(address => bool) private _channels;\n\n    /**\n     * @notice In the constructor, set the deployer as the controller.\n     */\n    constructor() {\n        // Set the deployer as the controller.\n        _controller = msg.sender;\n    }\n\n    /**\n     * @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\n     *         with an open channel can call this function.\n     *\n     * @param transfers The ERC20/721/1155 transfers to perform.\n     *\n     * @return magicValue A magic value indicating that the transfers were\n     *                    performed successfully.\n     */\n    function execute(ConduitTransfer[] calldata transfers)\n        external\n        override\n        returns (bytes4 magicValue)\n    {\n        // Ensure that the caller has an open channel.\n        if (!_channels[msg.sender]) {\n            revert ChannelClosed();\n        }\n\n        // Retrieve the total number of transfers and place on the stack.\n        uint256 totalStandardTransfers = transfers.length;\n\n        // Iterate over each transfer.\n        for (uint256 i = 0; i < totalStandardTransfers; ) {\n            // Retrieve the transfer in question.\n            ConduitTransfer calldata standardTransfer = transfers[i];\n\n            // Perform the transfer.\n            _transfer(standardTransfer);\n\n            // Skip overflow check as for loop is indexed starting at zero.\n            unchecked {\n                ++i;\n            }\n        }\n\n        // Return a magic value indicating that the transfers were performed.\n        magicValue = this.execute.selector;\n    }\n\n    /**\n     * @notice Execute a sequence of batch 1155 transfers. Only a caller with an\n     *         open channel can call this function.\n     *\n     * @param batchTransfers The 1155 batch transfers to perform.\n     *\n     * @return magicValue A magic value indicating that the transfers were\n     *                    performed successfully.\n     */\n    function executeBatch1155(\n        ConduitBatch1155Transfer[] calldata batchTransfers\n    ) external override returns (bytes4 magicValue) {\n        // Ensure that the caller has an open channel.\n        if (!_channels[msg.sender]) {\n            revert ChannelClosed();\n        }\n\n        // Perform 1155 batch transfers.\n        _performERC1155BatchTransfers(batchTransfers);\n\n        // Return a magic value indicating that the transfers were performed.\n        magicValue = this.executeBatch1155.selector;\n    }\n\n    /**\n     * @notice Execute a sequence of transfers, both single and batch 1155. Only\n     *         a caller with an open channel can call this function.\n     *\n     * @param standardTransfers The ERC20/721/1155 transfers to perform.\n     * @param batchTransfers    The 1155 batch transfers to perform.\n     *\n     * @return magicValue A magic value indicating that the transfers were\n     *                    performed successfully.\n     */\n    function executeWithBatch1155(\n        ConduitTransfer[] calldata standardTransfers,\n        ConduitBatch1155Transfer[] calldata batchTransfers\n    ) external override returns (bytes4 magicValue) {\n        // Ensure that the caller has an open channel.\n        if (!_channels[msg.sender]) {\n            revert ChannelClosed();\n        }\n\n        // Retrieve the total number of transfers and place on the stack.\n        uint256 totalStandardTransfers = standardTransfers.length;\n\n        // Iterate over each standard transfer.\n        for (uint256 i = 0; i < totalStandardTransfers; ) {\n            // Retrieve the transfer in question.\n            ConduitTransfer calldata standardTransfer = standardTransfers[i];\n\n            // Perform the transfer.\n            _transfer(standardTransfer);\n\n            // Skip overflow check as for loop is indexed starting at zero.\n            unchecked {\n                ++i;\n            }\n        }\n\n        // Perform 1155 batch transfers.\n        _performERC1155BatchTransfers(batchTransfers);\n\n        // Return a magic value indicating that the transfers were performed.\n        magicValue = this.executeWithBatch1155.selector;\n    }\n\n    /**\n     * @notice Open or close a given channel. Only callable by the controller.\n     *\n     * @param channel The channel to open or close.\n     * @param isOpen  The status of the channel (either open or closed).\n     */\n    function updateChannel(address channel, bool isOpen) external override {\n        // Ensure that the caller is the controller of this contract.\n        if (msg.sender != _controller) {\n            revert InvalidController();\n        }\n\n        // Update the status of the channel.\n        _channels[channel] = isOpen;\n\n        // Emit a corresponding event.\n        emit ChannelUpdated(channel, isOpen);\n    }\n\n    /**\n     * @dev Internal function to transfer a given ERC20/721/1155 item.\n     *\n     * @param item The ERC20/721/1155 item to transfer.\n     */\n    function _transfer(ConduitTransfer calldata item) internal {\n        // If the item type indicates Ether or a native token...\n        if (item.itemType == ConduitItemType.ERC20) {\n            // Transfer ERC20 token.\n            _performERC20Transfer(item.token, item.from, item.to, item.amount);\n        } else if (item.itemType == ConduitItemType.ERC721) {\n            // Ensure that exactly one 721 item is being transferred.\n            if (item.amount != 1) {\n                revert InvalidERC721TransferAmount();\n            }\n\n            // Transfer ERC721 token.\n            _performERC721Transfer(\n                item.token,\n                item.from,\n                item.to,\n                item.identifier\n            );\n        } else if (item.itemType == ConduitItemType.ERC1155) {\n            // Transfer ERC1155 token.\n            _performERC1155Transfer(\n                item.token,\n                item.from,\n                item.to,\n                item.identifier,\n                item.amount\n            );\n        } else {\n            // Throw with an error.\n            revert InvalidItemType();\n        }\n    }\n}\n"
      },
      "seaport/contracts/interfaces/ConduitInterface.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\n// prettier-ignore\nimport {\n    ConduitTransfer,\n    ConduitBatch1155Transfer\n} from \"../conduit/lib/ConduitStructs.sol\";\n\n/**\n * @title ConduitInterface\n * @author 0age\n * @notice ConduitInterface contains all external function interfaces, events,\n *         and errors for conduit contracts.\n */\ninterface ConduitInterface {\n    /**\n     * @dev Revert with an error when attempting to execute transfers using a\n     *      caller that does not have an open channel.\n     */\n    error ChannelClosed();\n\n    /**\n     * @dev Revert with an error when attempting to execute a transfer for an\n     *      item that does not have an ERC20/721/1155 item type.\n     */\n    error InvalidItemType();\n\n    /**\n     * @dev Revert with an error when attempting to update the status of a\n     *      channel from a caller that is not the conduit controller.\n     */\n    error InvalidController();\n\n    /**\n     * @dev Revert with an error when attempting to execute an 1155 batch\n     *      transfer using calldata not produced by default ABI encoding or with\n     *      different lengths for ids and amounts arrays.\n     */\n    error Invalid1155BatchTransferEncoding();\n\n    /**\n     * @dev Emit an event whenever a channel is opened or closed.\n     *\n     * @param channel The channel that has been updated.\n     * @param open    A boolean indicating whether the conduit is open or not.\n     */\n    event ChannelUpdated(address channel, bool open);\n\n    /**\n     * @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\n     *         with an open channel can call this function.\n     *\n     * @param transfers The ERC20/721/1155 transfers to perform.\n     *\n     * @return magicValue A magic value indicating that the transfers were\n     *                    performed successfully.\n     */\n    function execute(ConduitTransfer[] calldata transfers)\n        external\n        returns (bytes4 magicValue);\n\n    /**\n     * @notice Execute a sequence of batch 1155 transfers. Only a caller with an\n     *         open channel can call this function.\n     *\n     * @param batch1155Transfers The 1155 batch transfers to perform.\n     *\n     * @return magicValue A magic value indicating that the transfers were\n     *                    performed successfully.\n     */\n    function executeBatch1155(\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\n    ) external returns (bytes4 magicValue);\n\n    /**\n     * @notice Execute a sequence of transfers, both single and batch 1155. Only\n     *         a caller with an open channel can call this function.\n     *\n     * @param standardTransfers  The ERC20/721/1155 transfers to perform.\n     * @param batch1155Transfers The 1155 batch transfers to perform.\n     *\n     * @return magicValue A magic value indicating that the transfers were\n     *                    performed successfully.\n     */\n    function executeWithBatch1155(\n        ConduitTransfer[] calldata standardTransfers,\n        ConduitBatch1155Transfer[] calldata batch1155Transfers\n    ) external returns (bytes4 magicValue);\n\n    /**\n     * @notice Open or close a given channel. Only callable by the controller.\n     *\n     * @param channel The channel to open or close.\n     * @param isOpen  The status of the channel (either open or closed).\n     */\n    function updateChannel(address channel, bool isOpen) external;\n}\n"
      },
      "seaport/contracts/conduit/lib/ConduitEnums.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\nenum ConduitItemType {\n    NATIVE, // unused\n    ERC20,\n    ERC721,\n    ERC1155\n}\n"
      },
      "seaport/contracts/lib/TokenTransferrer.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\nimport \"./TokenTransferrerConstants.sol\";\n\n// prettier-ignore\nimport {\n    TokenTransferrerErrors\n} from \"../interfaces/TokenTransferrerErrors.sol\";\n\nimport { ConduitBatch1155Transfer } from \"../conduit/lib/ConduitStructs.sol\";\n\ncontract TokenTransferrer is TokenTransferrerErrors {\n    /**\n     * @dev Internal function to transfer ERC20 tokens from a given originator\n     *      to a given recipient. Sufficient approvals must be set on the\n     *      contract performing the transfer.\n     *\n     * @param token      The ERC20 token to transfer.\n     * @param from       The originator of the transfer.\n     * @param to         The recipient of the transfer.\n     * @param amount     The amount to transfer.\n     */\n    function _performERC20Transfer(\n        address token,\n        address from,\n        address to,\n        uint256 amount\n    ) internal {\n        // Utilize assembly to perform an optimized ERC20 token transfer.\n        assembly {\n            // Write calldata to the free memory pointer, but restore it later.\n            let memPointer := mload(FreeMemoryPointerSlot)\n\n            // Write calldata into memory, starting with function selector.\n            mstore(ERC20_transferFrom_sig_ptr, ERC20_transferFrom_signature)\n            mstore(ERC20_transferFrom_from_ptr, from)\n            mstore(ERC20_transferFrom_to_ptr, to)\n            mstore(ERC20_transferFrom_amount_ptr, amount)\n\n            // Make call & copy up to 32 bytes of return data to scratch space.\n            let callStatus := call(\n                gas(),\n                token,\n                0,\n                ERC20_transferFrom_sig_ptr,\n                ERC20_transferFrom_length,\n                0,\n                OneWord\n            )\n\n            // Determine whether transfer was successful using status & result.\n            let success := and(\n                // Set success to whether the call reverted, if not check it\n                // either returned exactly 1 (can't just be non-zero data), or\n                // had no return data.\n                or(\n                    and(eq(mload(0), 1), gt(returndatasize(), 31)),\n                    iszero(returndatasize())\n                ),\n                callStatus\n            )\n\n            // If the transfer failed or it returned nothing:\n            // Group these because they should be uncommon.\n            // Equivalent to `or(iszero(success), iszero(returndatasize()))`\n            // but after it's inverted for JUMPI this expression is cheaper.\n            if iszero(and(success, iszero(iszero(returndatasize())))) {\n                // If the token has no code or the transfer failed:\n                // Equivalent to `or(iszero(success), iszero(extcodesize(token)))`\n                // but after it's inverted for JUMPI this expression is cheaper.\n                if iszero(and(iszero(iszero(extcodesize(token))), success)) {\n                    // If the transfer failed:\n                    if iszero(success) {\n                        // If it was due to a revert:\n                        if iszero(callStatus) {\n                            // If it returned a message, bubble it up as long as\n                            // sufficient gas remains to do so:\n                            if returndatasize() {\n                                // Ensure that sufficient gas is available to\n                                // copy returndata while expanding memory where\n                                // necessary. Start by computing the word size\n                                // of returndata and allocated memory.\n                                let returnDataWords := div(\n                                    returndatasize(),\n                                    OneWord\n                                )\n\n                                // Note: use the free memory pointer in place of\n                                // msize() to work around a Yul warning that\n                                // prevents accessing msize directly when the IR\n                                // pipeline is activated.\n                                let msizeWords := div(memPointer, OneWord)\n\n                                // Next, compute the cost of the returndatacopy.\n                                let cost := mul(CostPerWord, returnDataWords)\n\n                                // Then, compute cost of new memory allocation.\n                                if gt(returnDataWords, msizeWords) {\n                                    cost := add(\n                                        cost,\n                                        add(\n                                            mul(\n                                                sub(\n                                                    returnDataWords,\n                                                    msizeWords\n                                                ),\n                                                CostPerWord\n                                            ),\n                                            div(\n                                                sub(\n                                                    mul(\n                                                        returnDataWords,\n                                                        returnDataWords\n                                                    ),\n                                                    mul(msizeWords, msizeWords)\n                                                ),\n                                                MemoryExpansionCoefficient\n                                            )\n                                        )\n                                    )\n                                }\n\n                                // Finally, add a small constant and compare to\n                                // gas remaining; bubble up the revert data if\n                                // enough gas is still available.\n                                if lt(add(cost, ExtraGasBuffer), gas()) {\n                                    // Copy returndata to memory; overwrite\n                                    // existing memory.\n                                    returndatacopy(0, 0, returndatasize())\n\n                                    // Revert, specifying memory region with\n                                    // copied returndata.\n                                    revert(0, returndatasize())\n                                }\n                            }\n\n                            // Otherwise revert with a generic error message.\n                            mstore(\n                                TokenTransferGenericFailure_error_sig_ptr,\n                                TokenTransferGenericFailure_error_signature\n                            )\n                            mstore(\n                                TokenTransferGenericFailure_error_token_ptr,\n                                token\n                            )\n                            mstore(\n                                TokenTransferGenericFailure_error_from_ptr,\n                                from\n                            )\n                            mstore(TokenTransferGenericFailure_error_to_ptr, to)\n                            mstore(TokenTransferGenericFailure_error_id_ptr, 0)\n                            mstore(\n                                TokenTransferGenericFailure_error_amount_ptr,\n                                amount\n                            )\n                            revert(\n                                TokenTransferGenericFailure_error_sig_ptr,\n                                TokenTransferGenericFailure_error_length\n                            )\n                        }\n\n                        // Otherwise revert with a message about the token\n                        // returning false.\n                        mstore(\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\n                            BadReturnValueFromERC20OnTransfer_error_signature\n                        )\n                        mstore(\n                            BadReturnValueFromERC20OnTransfer_error_token_ptr,\n                            token\n                        )\n                        mstore(\n                            BadReturnValueFromERC20OnTransfer_error_from_ptr,\n                            from\n                        )\n                        mstore(\n                            BadReturnValueFromERC20OnTransfer_error_to_ptr,\n                            to\n                        )\n                        mstore(\n                            BadReturnValueFromERC20OnTransfer_error_amount_ptr,\n                            amount\n                        )\n                        revert(\n                            BadReturnValueFromERC20OnTransfer_error_sig_ptr,\n                            BadReturnValueFromERC20OnTransfer_error_length\n                        )\n                    }\n\n                    // Otherwise revert with error about token not having code:\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\n                    mstore(NoContract_error_token_ptr, token)\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\n                }\n\n                // Otherwise the token just returned nothing but otherwise\n                // succeeded; no need to optimize for this as it's not\n                // technically ERC20 compliant.\n            }\n\n            // Restore the original free memory pointer.\n            mstore(FreeMemoryPointerSlot, memPointer)\n\n            // Restore the zero slot to zero.\n            mstore(ZeroSlot, 0)\n        }\n    }\n\n    /**\n     * @dev Internal function to transfer an ERC721 token from a given\n     *      originator to a given recipient. Sufficient approvals must be set on\n     *      the contract performing the transfer.\n     *\n     * @param token      The ERC721 token to transfer.\n     * @param from       The originator of the transfer.\n     * @param to         The recipient of the transfer.\n     * @param identifier The tokenId to transfer.\n     */\n    function _performERC721Transfer(\n        address token,\n        address from,\n        address to,\n        uint256 identifier\n    ) internal {\n        // Utilize assembly to perform an optimized ERC721 token transfer.\n        assembly {\n            // If the token has no code, revert.\n            if iszero(extcodesize(token)) {\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\n                mstore(NoContract_error_token_ptr, token)\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\n            }\n\n            // Write calldata to free memory pointer (restore it later).\n            let memPointer := mload(FreeMemoryPointerSlot)\n\n            // Write calldata to memory starting with function selector.\n            mstore(ERC721_transferFrom_sig_ptr, ERC721_transferFrom_signature)\n            mstore(ERC721_transferFrom_from_ptr, from)\n            mstore(ERC721_transferFrom_to_ptr, to)\n            mstore(ERC721_transferFrom_id_ptr, identifier)\n\n            // Perform the call, ignoring return data.\n            let success := call(\n                gas(),\n                token,\n                0,\n                ERC721_transferFrom_sig_ptr,\n                ERC721_transferFrom_length,\n                0,\n                0\n            )\n\n            // If the transfer reverted:\n            if iszero(success) {\n                // If it returned a message, bubble it up as long as sufficient\n                // gas remains to do so:\n                if returndatasize() {\n                    // Ensure that sufficient gas is available to copy\n                    // returndata while expanding memory where necessary. Start\n                    // by computing word size of returndata & allocated memory.\n                    let returnDataWords := div(returndatasize(), OneWord)\n\n                    // Note: use the free memory pointer in place of msize() to\n                    // work around a Yul warning that prevents accessing msize\n                    // directly when the IR pipeline is activated.\n                    let msizeWords := div(memPointer, OneWord)\n\n                    // Next, compute the cost of the returndatacopy.\n                    let cost := mul(CostPerWord, returnDataWords)\n\n                    // Then, compute cost of new memory allocation.\n                    if gt(returnDataWords, msizeWords) {\n                        cost := add(\n                            cost,\n                            add(\n                                mul(\n                                    sub(returnDataWords, msizeWords),\n                                    CostPerWord\n                                ),\n                                div(\n                                    sub(\n                                        mul(returnDataWords, returnDataWords),\n                                        mul(msizeWords, msizeWords)\n                                    ),\n                                    MemoryExpansionCoefficient\n                                )\n                            )\n                        )\n                    }\n\n                    // Finally, add a small constant and compare to gas\n                    // remaining; bubble up the revert data if enough gas is\n                    // still available.\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\n                        // Copy returndata to memory; overwrite existing memory.\n                        returndatacopy(0, 0, returndatasize())\n\n                        // Revert, giving memory region with copied returndata.\n                        revert(0, returndatasize())\n                    }\n                }\n\n                // Otherwise revert with a generic error message.\n                mstore(\n                    TokenTransferGenericFailure_error_sig_ptr,\n                    TokenTransferGenericFailure_error_signature\n                )\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\n                mstore(TokenTransferGenericFailure_error_amount_ptr, 1)\n                revert(\n                    TokenTransferGenericFailure_error_sig_ptr,\n                    TokenTransferGenericFailure_error_length\n                )\n            }\n\n            // Restore the original free memory pointer.\n            mstore(FreeMemoryPointerSlot, memPointer)\n\n            // Restore the zero slot to zero.\n            mstore(ZeroSlot, 0)\n        }\n    }\n\n    /**\n     * @dev Internal function to transfer ERC1155 tokens from a given\n     *      originator to a given recipient. Sufficient approvals must be set on\n     *      the contract performing the transfer and contract recipients must\n     *      implement onReceived to indicate that they are willing to accept the\n     *      transfer.\n     *\n     * @param token      The ERC1155 token to transfer.\n     * @param from       The originator of the transfer.\n     * @param to         The recipient of the transfer.\n     * @param identifier The id to transfer.\n     * @param amount     The amount to transfer.\n     */\n    function _performERC1155Transfer(\n        address token,\n        address from,\n        address to,\n        uint256 identifier,\n        uint256 amount\n    ) internal {\n        // Utilize assembly to perform an optimized ERC1155 token transfer.\n        assembly {\n            // If the token has no code, revert.\n            if iszero(extcodesize(token)) {\n                mstore(NoContract_error_sig_ptr, NoContract_error_signature)\n                mstore(NoContract_error_token_ptr, token)\n                revert(NoContract_error_sig_ptr, NoContract_error_length)\n            }\n\n            // Write calldata to these slots below, but restore them later.\n            let memPointer := mload(FreeMemoryPointerSlot)\n            let slot0x80 := mload(Slot0x80)\n            let slot0xA0 := mload(Slot0xA0)\n            let slot0xC0 := mload(Slot0xC0)\n\n            // Write calldata into memory, beginning with function selector.\n            mstore(\n                ERC1155_safeTransferFrom_sig_ptr,\n                ERC1155_safeTransferFrom_signature\n            )\n            mstore(ERC1155_safeTransferFrom_from_ptr, from)\n            mstore(ERC1155_safeTransferFrom_to_ptr, to)\n            mstore(ERC1155_safeTransferFrom_id_ptr, identifier)\n            mstore(ERC1155_safeTransferFrom_amount_ptr, amount)\n            mstore(\n                ERC1155_safeTransferFrom_data_offset_ptr,\n                ERC1155_safeTransferFrom_data_length_offset\n            )\n            mstore(ERC1155_safeTransferFrom_data_length_ptr, 0)\n\n            let success := call(\n                gas(),\n                token,\n                0,\n                ERC1155_safeTransferFrom_sig_ptr,\n                ERC1155_safeTransferFrom_length,\n                0,\n                0\n            )\n\n            // If the transfer reverted:\n            if iszero(success) {\n                // If it returned a message, bubble it up as long as sufficient\n                // gas remains to do so:\n                if returndatasize() {\n                    // Ensure that sufficient gas is available to copy\n                    // returndata while expanding memory where necessary. Start\n                    // by computing word size of returndata & allocated memory.\n                    let returnDataWords := div(returndatasize(), OneWord)\n\n                    // Note: use the free memory pointer in place of msize() to\n                    // work around a Yul warning that prevents accessing msize\n                    // directly when the IR pipeline is activated.\n                    let msizeWords := div(memPointer, OneWord)\n\n                    // Next, compute the cost of the returndatacopy.\n                    let cost := mul(CostPerWord, returnDataWords)\n\n                    // Then, compute cost of new memory allocation.\n                    if gt(returnDataWords, msizeWords) {\n                        cost := add(\n                            cost,\n                            add(\n                                mul(\n                                    sub(returnDataWords, msizeWords),\n                                    CostPerWord\n                                ),\n                                div(\n                                    sub(\n                                        mul(returnDataWords, returnDataWords),\n                                        mul(msizeWords, msizeWords)\n                                    ),\n                                    MemoryExpansionCoefficient\n                                )\n                            )\n                        )\n                    }\n\n                    // Finally, add a small constant and compare to gas\n                    // remaining; bubble up the revert data if enough gas is\n                    // still available.\n                    if lt(add(cost, ExtraGasBuffer), gas()) {\n                        // Copy returndata to memory; overwrite existing memory.\n                        returndatacopy(0, 0, returndatasize())\n\n                        // Revert, giving memory region with copied returndata.\n                        revert(0, returndatasize())\n                    }\n                }\n\n                // Otherwise revert with a generic error message.\n                mstore(\n                    TokenTransferGenericFailure_error_sig_ptr,\n                    TokenTransferGenericFailure_error_signature\n                )\n                mstore(TokenTransferGenericFailure_error_token_ptr, token)\n                mstore(TokenTransferGenericFailure_error_from_ptr, from)\n                mstore(TokenTransferGenericFailure_error_to_ptr, to)\n                mstore(TokenTransferGenericFailure_error_id_ptr, identifier)\n                mstore(TokenTransferGenericFailure_error_amount_ptr, amount)\n                revert(\n                    TokenTransferGenericFailure_error_sig_ptr,\n                    TokenTransferGenericFailure_error_length\n                )\n            }\n\n            mstore(Slot0x80, slot0x80) // Restore slot 0x80.\n            mstore(Slot0xA0, slot0xA0) // Restore slot 0xA0.\n            mstore(Slot0xC0, slot0xC0) // Restore slot 0xC0.\n\n            // Restore the original free memory pointer.\n            mstore(FreeMemoryPointerSlot, memPointer)\n\n            // Restore the zero slot to zero.\n            mstore(ZeroSlot, 0)\n        }\n    }\n\n    /**\n     * @dev Internal function to transfer ERC1155 tokens from a given\n     *      originator to a given recipient. Sufficient approvals must be set on\n     *      the contract performing the transfer and contract recipients must\n     *      implement onReceived to indicate that they are willing to accept the\n     *      transfer.\n     *\n     * @param batchTransfers The group of 1155 batch transfers to perform.\n     */\n    function _performERC1155BatchTransfers(\n        ConduitBatch1155Transfer[] calldata batchTransfers\n    ) internal {\n        // Utilize assembly to perform optimized batch 1155 transfers.\n        assembly {\n            let len := batchTransfers.length\n            // Pointer to first head in the array, which is offset to the struct\n            // at each index. This gets incremented after each loop to avoid\n            // multiplying by 32 to get the offset for each element.\n            let nextElementHeadPtr := batchTransfers.offset\n\n            // Pointer to beginning of the head of the array. This is the\n            // reference position each offset references. It's held static to\n            // let each loop calculate the data position for an element.\n            let arrayHeadPtr := nextElementHeadPtr\n\n            // Write the function selector, which will be reused for each call:\n            // safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\n            mstore(\n                ConduitBatch1155Transfer_from_offset,\n                ERC1155_safeBatchTransferFrom_signature\n            )\n\n            // Iterate over each batch transfer.\n            for {\n                let i := 0\n            } lt(i, len) {\n                i := add(i, 1)\n            } {\n                // Read the offset to the beginning of the element and add\n                // it to pointer to the beginning of the array head to get\n                // the absolute position of the element in calldata.\n                let elementPtr := add(\n                    arrayHeadPtr,\n                    calldataload(nextElementHeadPtr)\n                )\n\n                // Update the offset position for the next loop\n                nextElementHeadPtr := add(nextElementHeadPtr, OneWord)\n\n                // Copy the first section of calldata (before dynamic values).\n                calldatacopy(\n                    BatchTransfer1155Params_ptr,\n                    add(elementPtr, ConduitBatch1155Transfer_from_offset),\n                    ConduitBatch1155Transfer_usable_head_size\n                )\n\n                // Get the total number of supplied ids.\n                let idsLength := calldataload(\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset)\n                )\n\n                // Determine size of calldata required for ids and amounts. Note\n                // that the size includes both lengths as well as the data.\n                let idsAndAmountsSize := add(TwoWords, mul(idsLength, TwoWords))\n\n                // Update the offset for the data array in memory.\n                mstore(\n                    BatchTransfer1155Params_data_head_ptr,\n                    add(\n                        BatchTransfer1155Params_ids_length_offset,\n                        idsAndAmountsSize\n                    )\n                )\n\n                // Set the length of the data array in memory to zero.\n                mstore(\n                    add(\n                        BatchTransfer1155Params_data_length_basePtr,\n                        idsAndAmountsSize\n                    ),\n                    0\n                )\n\n                // Determine the total calldata size for the call to transfer.\n                let transferDataSize := add(\n                    BatchTransfer1155Params_data_length_basePtr,\n                    mul(idsLength, TwoWords)\n                )\n\n                // Copy second section of calldata (including dynamic values).\n                calldatacopy(\n                    BatchTransfer1155Params_ids_length_ptr,\n                    add(elementPtr, ConduitBatch1155Transfer_ids_length_offset),\n                    idsAndAmountsSize\n                )\n\n                // Determine the expected offset for the amounts array.\n                let expectedAmountsOffset := add(\n                    ConduitBatch1155Transfer_amounts_length_baseOffset,\n                    mul(idsLength, OneWord)\n                )\n\n                // Validate struct encoding.\n                let invalidEncoding := iszero(\n                    and(\n                        // ids.length == amounts.length\n                        eq(\n                            idsLength,\n                            calldataload(add(elementPtr, expectedAmountsOffset))\n                        ),\n                        and(\n                            // ids_offset == 0xa0\n                            eq(\n                                calldataload(\n                                    add(\n                                        elementPtr,\n                                        ConduitBatch1155Transfer_ids_head_offset\n                                    )\n                                ),\n                                ConduitBatch1155Transfer_ids_length_offset\n                            ),\n                            // amounts_offset == 0xc0 + ids.length*32\n                            eq(\n                                calldataload(\n                                    add(\n                                        elementPtr,\n                                        ConduitBatch1155Transfer_amounts_head_offset\n                                    )\n                                ),\n                                expectedAmountsOffset\n                            )\n                        )\n                    )\n                )\n\n                // Revert with an error if the encoding is not valid.\n                if invalidEncoding {\n                    mstore(\n                        Invalid1155BatchTransferEncoding_ptr,\n                        Invalid1155BatchTransferEncoding_selector\n                    )\n                    revert(\n                        Invalid1155BatchTransferEncoding_ptr,\n                        Invalid1155BatchTransferEncoding_length\n                    )\n                }\n\n                // Retrieve the token from calldata.\n                let token := calldataload(elementPtr)\n\n                // If the token has no code, revert.\n                if iszero(extcodesize(token)) {\n                    mstore(NoContract_error_sig_ptr, NoContract_error_signature)\n                    mstore(NoContract_error_token_ptr, token)\n                    revert(NoContract_error_sig_ptr, NoContract_error_length)\n                }\n\n                // Perform the call to transfer 1155 tokens.\n                let success := call(\n                    gas(),\n                    token,\n                    0,\n                    ConduitBatch1155Transfer_from_offset, // Data portion start.\n                    transferDataSize, // Location of the length of callData.\n                    0,\n                    0\n                )\n\n                // If the transfer reverted:\n                if iszero(success) {\n                    // If it returned a message, bubble it up as long as\n                    // sufficient gas remains to do so:\n                    if returndatasize() {\n                        // Ensure that sufficient gas is available to copy\n                        // returndata while expanding memory where necessary.\n                        // Start by computing word size of returndata and\n                        // allocated memory.\n                        let returnDataWords := div(returndatasize(), OneWord)\n\n                        // Note: use transferDataSize in place of msize() to\n                        // work around a Yul warning that prevents accessing\n                        // msize directly when the IR pipeline is activated.\n                        // The free memory pointer is not used here because\n                        // this function does almost all memory management\n                        // manually and does not update it, and transferDataSize\n                        // should be the largest memory value used (unless a\n                        // previous batch was larger).\n                        let msizeWords := div(transferDataSize, OneWord)\n\n                        // Next, compute the cost of the returndatacopy.\n                        let cost := mul(CostPerWord, returnDataWords)\n\n                        // Then, compute cost of new memory allocation.\n                        if gt(returnDataWords, msizeWords) {\n                            cost := add(\n                                cost,\n                                add(\n                                    mul(\n                                        sub(returnDataWords, msizeWords),\n                                        CostPerWord\n                                    ),\n                                    div(\n                                        sub(\n                                            mul(\n                                                returnDataWords,\n                                                returnDataWords\n                                            ),\n                                            mul(msizeWords, msizeWords)\n                                        ),\n                                        MemoryExpansionCoefficient\n                                    )\n                                )\n                            )\n                        }\n\n                        // Finally, add a small constant and compare to gas\n                        // remaining; bubble up the revert data if enough gas is\n                        // still available.\n                        if lt(add(cost, ExtraGasBuffer), gas()) {\n                            // Copy returndata to memory; overwrite existing.\n                            returndatacopy(0, 0, returndatasize())\n\n                            // Revert with memory region containing returndata.\n                            revert(0, returndatasize())\n                        }\n                    }\n\n                    // Set the error signature.\n                    mstore(\n                        0,\n                        ERC1155BatchTransferGenericFailure_error_signature\n                    )\n\n                    // Write the token.\n                    mstore(ERC1155BatchTransferGenericFailure_token_ptr, token)\n\n                    // Move the ids and amounts offsets forward a word.\n                    mstore(\n                        BatchTransfer1155Params_ids_head_ptr,\n                        ConduitBatch1155Transfer_amounts_head_offset\n                    )\n                    mstore(\n                        BatchTransfer1155Params_amounts_head_ptr,\n                        add(\n                            OneWord,\n                            mload(BatchTransfer1155Params_amounts_head_ptr)\n                        )\n                    )\n\n                    // Return modified region with one fewer word at the end.\n                    revert(\n                        0,\n                        add(transferDataSize, BatchTransfer1155Params_ptr)\n                    )\n                }\n            }\n\n            // Reset the free memory pointer to the default value; memory must\n            // be assumed to be dirtied and not reused from this point forward.\n            mstore(FreeMemoryPointerSlot, DefaultFreeMemoryPointer)\n        }\n    }\n}\n"
      },
      "seaport/contracts/conduit/lib/ConduitStructs.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\nimport { ConduitItemType } from \"./ConduitEnums.sol\";\n\nstruct ConduitTransfer {\n    ConduitItemType itemType;\n    address token;\n    address from;\n    address to;\n    uint256 identifier;\n    uint256 amount;\n}\n\nstruct ConduitBatch1155Transfer {\n    address token;\n    address from;\n    address to;\n    uint256[] ids;\n    uint256[] amounts;\n}\n"
      },
      "seaport/contracts/lib/TokenTransferrerConstants.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\n/*\n * -------------------------- Disambiguation & Other Notes ---------------------\n *    - The term \"head\" is used as it is in the documentation for ABI encoding,\n *      but only in reference to dynamic types, i.e. it always refers to the\n *      offset or pointer to the body of a dynamic type. In calldata, the head\n *      is always an offset (relative to the parent object), while in memory,\n *      the head is always the pointer to the body. More information found here:\n *      https://docs.soliditylang.org/en/v0.8.13/abi-spec.html#argument-encoding\n *        - Note that the length of an array is separate from and precedes the\n *          head of the array.\n *\n *    - The term \"body\" is used in place of the term \"head\" used in the ABI\n *      documentation. It refers to the start of the data for a dynamic type,\n *      e.g. the first word of a struct or the first word of the first element\n *      in an array.\n *\n *    - The term \"pointer\" is used to describe the absolute position of a value\n *      and never an offset relative to another value.\n *        - The suffix \"_ptr\" refers to a memory pointer.\n *        - The suffix \"_cdPtr\" refers to a calldata pointer.\n *\n *    - The term \"offset\" is used to describe the position of a value relative\n *      to some parent value. For example, OrderParameters_conduit_offset is the\n *      offset to the \"conduit\" value in the OrderParameters struct relative to\n *      the start of the body.\n *        - Note: Offsets are used to derive pointers.\n *\n *    - Some structs have pointers defined for all of their fields in this file.\n *      Lines which are commented out are fields that are not used in the\n *      codebase but have been left in for readability.\n */\n\nuint256 constant OneWord = 0x20;\nuint256 constant TwoWords = 0x40;\nuint256 constant ThreeWords = 0x60;\n\nuint256 constant FreeMemoryPointerSlot = 0x40;\nuint256 constant ZeroSlot = 0x60;\nuint256 constant DefaultFreeMemoryPointer = 0x80;\n\nuint256 constant Slot0x80 = 0x80;\nuint256 constant Slot0xA0 = 0xa0;\nuint256 constant Slot0xC0 = 0xc0;\n\n// abi.encodeWithSignature(\"transferFrom(address,address,uint256)\")\nuint256 constant ERC20_transferFrom_signature = (\n    0x23b872dd00000000000000000000000000000000000000000000000000000000\n);\nuint256 constant ERC20_transferFrom_sig_ptr = 0x0;\nuint256 constant ERC20_transferFrom_from_ptr = 0x04;\nuint256 constant ERC20_transferFrom_to_ptr = 0x24;\nuint256 constant ERC20_transferFrom_amount_ptr = 0x44;\nuint256 constant ERC20_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\n\n// abi.encodeWithSignature(\n//     \"safeTransferFrom(address,address,uint256,uint256,bytes)\"\n// )\nuint256 constant ERC1155_safeTransferFrom_signature = (\n    0xf242432a00000000000000000000000000000000000000000000000000000000\n);\nuint256 constant ERC1155_safeTransferFrom_sig_ptr = 0x0;\nuint256 constant ERC1155_safeTransferFrom_from_ptr = 0x04;\nuint256 constant ERC1155_safeTransferFrom_to_ptr = 0x24;\nuint256 constant ERC1155_safeTransferFrom_id_ptr = 0x44;\nuint256 constant ERC1155_safeTransferFrom_amount_ptr = 0x64;\nuint256 constant ERC1155_safeTransferFrom_data_offset_ptr = 0x84;\nuint256 constant ERC1155_safeTransferFrom_data_length_ptr = 0xa4;\nuint256 constant ERC1155_safeTransferFrom_length = 0xc4; // 4 + 32 * 6 == 196\nuint256 constant ERC1155_safeTransferFrom_data_length_offset = 0xa0;\n\n// abi.encodeWithSignature(\n//     \"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\"\n// )\nuint256 constant ERC1155_safeBatchTransferFrom_signature = (\n    0x2eb2c2d600000000000000000000000000000000000000000000000000000000\n);\n\nbytes4 constant ERC1155_safeBatchTransferFrom_selector = bytes4(\n    bytes32(ERC1155_safeBatchTransferFrom_signature)\n);\n\nuint256 constant ERC721_transferFrom_signature = ERC20_transferFrom_signature;\nuint256 constant ERC721_transferFrom_sig_ptr = 0x0;\nuint256 constant ERC721_transferFrom_from_ptr = 0x04;\nuint256 constant ERC721_transferFrom_to_ptr = 0x24;\nuint256 constant ERC721_transferFrom_id_ptr = 0x44;\nuint256 constant ERC721_transferFrom_length = 0x64; // 4 + 32 * 3 == 100\n\n// abi.encodeWithSignature(\"NoContract(address)\")\nuint256 constant NoContract_error_signature = (\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\n);\nuint256 constant NoContract_error_sig_ptr = 0x0;\nuint256 constant NoContract_error_token_ptr = 0x4;\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\n\n// abi.encodeWithSignature(\n//     \"TokenTransferGenericFailure(address,address,address,uint256,uint256)\"\n// )\nuint256 constant TokenTransferGenericFailure_error_signature = (\n    0xf486bc8700000000000000000000000000000000000000000000000000000000\n);\nuint256 constant TokenTransferGenericFailure_error_sig_ptr = 0x0;\nuint256 constant TokenTransferGenericFailure_error_token_ptr = 0x4;\nuint256 constant TokenTransferGenericFailure_error_from_ptr = 0x24;\nuint256 constant TokenTransferGenericFailure_error_to_ptr = 0x44;\nuint256 constant TokenTransferGenericFailure_error_id_ptr = 0x64;\nuint256 constant TokenTransferGenericFailure_error_amount_ptr = 0x84;\n\n// 4 + 32 * 5 == 164\nuint256 constant TokenTransferGenericFailure_error_length = 0xa4;\n\nuint256 constant ERC1155BatchTransferGenericFailure_error_signature = (\n    0xafc445e200000000000000000000000000000000000000000000000000000000\n);\nuint256 constant ERC1155BatchTransferGenericFailure_token_ptr = 0x04;\n\n// abi.encodeWithSignature(\n//     \"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\"\n// )\nuint256 constant BadReturnValueFromERC20OnTransfer_error_signature = (\n    0x9889192300000000000000000000000000000000000000000000000000000000\n);\nuint256 constant BadReturnValueFromERC20OnTransfer_error_sig_ptr = 0x0;\nuint256 constant BadReturnValueFromERC20OnTransfer_error_token_ptr = 0x4;\nuint256 constant BadReturnValueFromERC20OnTransfer_error_from_ptr = 0x24;\nuint256 constant BadReturnValueFromERC20OnTransfer_error_to_ptr = 0x44;\nuint256 constant BadReturnValueFromERC20OnTransfer_error_amount_ptr = 0x64;\n\n// 4 + 32 * 4 == 132\nuint256 constant BadReturnValueFromERC20OnTransfer_error_length = 0x84;\n\nuint256 constant ExtraGasBuffer = 0x20;\nuint256 constant CostPerWord = 3;\nuint256 constant MemoryExpansionCoefficient = 0x200;\n\n// Values are offset by 32 bytes in order to write the token to the beginning\n// in the event of a revert\nuint256 constant BatchTransfer1155Params_ptr = 0x24;\nuint256 constant BatchTransfer1155Params_ids_head_ptr = 0x44;\nuint256 constant BatchTransfer1155Params_amounts_head_ptr = 0x84;\nuint256 constant BatchTransfer1155Params_data_head_ptr = 0xa4;\nuint256 constant BatchTransfer1155Params_data_length_basePtr = 0x104;\n\nuint256 constant BatchTransfer1155Params_ids_length_ptr = 0xc4;\n\nuint256 constant BatchTransfer1155Params_ids_length_offset = 0xa0;\nuint256 constant BatchTransfer1155Params_amounts_length_baseOffset = 0xc0;\nuint256 constant BatchTransfer1155Params_data_length_baseOffset = 0xe0;\n\nuint256 constant ConduitBatch1155Transfer_usable_head_size = 0x80;\n\nuint256 constant ConduitBatch1155Transfer_from_offset = 0x20;\nuint256 constant ConduitBatch1155Transfer_ids_head_offset = 0x60;\nuint256 constant ConduitBatch1155Transfer_amounts_head_offset = 0x80;\nuint256 constant ConduitBatch1155Transfer_ids_length_offset = 0xa0;\nuint256 constant ConduitBatch1155Transfer_amounts_length_baseOffset = 0xc0;\nuint256 constant ConduitBatch1155Transfer_calldata_baseSize = 0xc0;\n\nuint256 constant Invalid1155BatchTransferEncoding_ptr = 0x00;\nuint256 constant Invalid1155BatchTransferEncoding_length = 0x04;\nuint256 constant Invalid1155BatchTransferEncoding_selector = (\n    0xeba2084c00000000000000000000000000000000000000000000000000000000\n);\n"
      },
      "seaport/contracts/interfaces/TokenTransferrerErrors.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\n/**\n * @title TokenTransferrerErrors\n */\ninterface TokenTransferrerErrors {\n    /**\n     * @dev Revert with an error when an ERC721 transfer with amount other than\n     *      one is attempted.\n     */\n    error InvalidERC721TransferAmount();\n\n    /**\n     * @dev Revert with an error when attempting to fulfill an order where an\n     *      item has an amount of zero.\n     */\n    error MissingItemAmount();\n\n    /**\n     * @dev Revert with an error when an ERC20, ERC721, or ERC1155 token\n     *      transfer reverts.\n     *\n     * @param token      The token for which the transfer was attempted.\n     * @param from       The source of the attempted transfer.\n     * @param to         The recipient of the attempted transfer.\n     * @param identifier The identifier for the attempted transfer.\n     * @param amount     The amount for the attempted transfer.\n     */\n    error TokenTransferGenericFailure(\n        address token,\n        address from,\n        address to,\n        uint256 identifier,\n        uint256 amount\n    );\n\n    /**\n     * @dev Revert with an error when a batch ERC1155 token transfer reverts.\n     *\n     * @param token       The token for which the transfer was attempted.\n     * @param from        The source of the attempted transfer.\n     * @param to          The recipient of the attempted transfer.\n     * @param identifiers The identifiers for the attempted transfer.\n     * @param amounts     The amounts for the attempted transfer.\n     */\n    error ERC1155BatchTransferGenericFailure(\n        address token,\n        address from,\n        address to,\n        uint256[] identifiers,\n        uint256[] amounts\n    );\n\n    /**\n     * @dev Revert with an error when an ERC20 token transfer returns a falsey\n     *      value.\n     *\n     * @param token      The token for which the ERC20 transfer was attempted.\n     * @param from       The source of the attempted ERC20 transfer.\n     * @param to         The recipient of the attempted ERC20 transfer.\n     * @param amount     The amount for the attempted ERC20 transfer.\n     */\n    error BadReturnValueFromERC20OnTransfer(\n        address token,\n        address from,\n        address to,\n        uint256 amount\n    );\n\n    /**\n     * @dev Revert with an error when an account being called as an assumed\n     *      contract does not have code and returns no data.\n     *\n     * @param account The account that should contain code.\n     */\n    error NoContract(address account);\n}\n"
      },
      "seaport/contracts/conduit/ConduitController.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\n// prettier-ignore\nimport {\n\tConduitControllerInterface\n} from \"../interfaces/ConduitControllerInterface.sol\";\n\nimport { ConduitInterface } from \"../interfaces/ConduitInterface.sol\";\n\nimport { Conduit } from \"./Conduit.sol\";\n\n/**\n * @title ConduitController\n * @author 0age\n * @notice ConduitController enables deploying and managing new conduits, or\n *         contracts that allow registered callers (or open \"channels\") to\n *         transfer approved ERC20/721/1155 tokens on their behalf.\n */\ncontract ConduitController is ConduitControllerInterface {\n    // Register keys, owners, new potential owners, and channels by conduit.\n    mapping(address => ConduitProperties) internal _conduits;\n\n    // Set conduit creation code and runtime code hashes as immutable arguments.\n    bytes32 internal immutable _CONDUIT_CREATION_CODE_HASH;\n    bytes32 internal immutable _CONDUIT_RUNTIME_CODE_HASH;\n\n    /**\n     * @dev Initialize contract by deploying a conduit and setting the creation\n     *      code and runtime code hashes as immutable arguments.\n     */\n    constructor() {\n        // Derive the conduit creation code hash and set it as an immutable.\n        _CONDUIT_CREATION_CODE_HASH = keccak256(type(Conduit).creationCode);\n\n        // Deploy a conduit with the zero hash as the salt.\n        Conduit zeroConduit = new Conduit{ salt: bytes32(0) }();\n\n        // Retrieve the conduit runtime code hash and set it as an immutable.\n        _CONDUIT_RUNTIME_CODE_HASH = address(zeroConduit).codehash;\n    }\n\n    /**\n     * @notice Deploy a new conduit using a supplied conduit key and assigning\n     *         an initial owner for the deployed conduit. Note that the first\n     *         twenty bytes of the supplied conduit key must match the caller\n     *         and that a new conduit cannot be created if one has already been\n     *         deployed using the same conduit key.\n     *\n     * @param conduitKey   The conduit key used to deploy the conduit. Note that\n     *                     the first twenty bytes of the conduit key must match\n     *                     the caller of this contract.\n     * @param initialOwner The initial owner to set for the new conduit.\n     *\n     * @return conduit The address of the newly deployed conduit.\n     */\n    function createConduit(bytes32 conduitKey, address initialOwner)\n        external\n        override\n        returns (address conduit)\n    {\n        // If the first 20 bytes of the conduit key do not match the caller...\n        if (address(uint160(bytes20(conduitKey))) != msg.sender) {\n            // Revert with an error indicating that the creator is invalid.\n            revert InvalidCreator();\n        }\n\n        // Derive address from deployer, conduit key and creation code hash.\n        conduit = address(\n            uint160(\n                uint256(\n                    keccak256(\n                        abi.encodePacked(\n                            bytes1(0xff),\n                            address(this),\n                            conduitKey,\n                            _CONDUIT_CREATION_CODE_HASH\n                        )\n                    )\n                )\n            )\n        );\n\n        // If derived conduit exists, as evidenced by comparing runtime code...\n        if (conduit.codehash == _CONDUIT_RUNTIME_CODE_HASH) {\n            // Revert with an error indicating that the conduit already exists.\n            revert ConduitAlreadyExists(conduit);\n        }\n\n        // Deploy the conduit via CREATE2 using the conduit key as the salt.\n        new Conduit{ salt: conduitKey }();\n\n        // Set the supplied initial owner as the owner of the conduit.\n        _conduits[conduit].owner = initialOwner;\n\n        // Set conduit key used to deploy the conduit to enable reverse lookup.\n        _conduits[conduit].key = conduitKey;\n\n        // Emit an event indicating that the conduit has been deployed.\n        emit NewConduit(conduit, conduitKey);\n\n        // Emit an event indicating that conduit ownership has been assigned.\n        emit OwnershipTransferred(conduit, address(0), initialOwner);\n    }\n\n    /**\n     * @notice Open or close a channel on a given conduit, thereby allowing the\n     *         specified account to execute transfers against that conduit.\n     *         Extreme care must be taken when updating channels, as malicious\n     *         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\n     *         tokens where the token holder has granted the conduit approval.\n     *         Only the owner of the conduit in question may call this function.\n     *\n     * @param conduit The conduit for which to open or close the channel.\n     * @param channel The channel to open or close on the conduit.\n     * @param isOpen  A boolean indicating whether to open or close the channel.\n     */\n    function updateChannel(\n        address conduit,\n        address channel,\n        bool isOpen\n    ) external override {\n        // Ensure the caller is the current owner of the conduit in question.\n        _assertCallerIsConduitOwner(conduit);\n\n        // Call the conduit, updating the channel.\n        ConduitInterface(conduit).updateChannel(channel, isOpen);\n\n        // Retrieve storage region where channels for the conduit are tracked.\n        ConduitProperties storage conduitProperties = _conduits[conduit];\n\n        // Retrieve the index, if one currently exists, for the updated channel.\n        uint256 channelIndexPlusOne = (\n            conduitProperties.channelIndexesPlusOne[channel]\n        );\n\n        // Determine whether the updated channel is already tracked as open.\n        bool channelPreviouslyOpen = channelIndexPlusOne != 0;\n\n        // If the channel has been set to open and was previously closed...\n        if (isOpen && !channelPreviouslyOpen) {\n            // Add the channel to the channels array for the conduit.\n            conduitProperties.channels.push(channel);\n\n            // Add new open channel length to associated mapping as index + 1.\n            conduitProperties.channelIndexesPlusOne[channel] = (\n                conduitProperties.channels.length\n            );\n        } else if (!isOpen && channelPreviouslyOpen) {\n            // Set a previously open channel as closed via \"swap & pop\" method.\n            // Decrement located index to get the index of the closed channel.\n            uint256 removedChannelIndex = channelIndexPlusOne - 1;\n\n            // Use length of channels array to determine index of last channel.\n            uint256 finalChannelIndex = conduitProperties.channels.length - 1;\n\n            // If closed channel is not last channel in the channels array...\n            if (finalChannelIndex != removedChannelIndex) {\n                // Retrieve the final channel and place the value on the stack.\n                address finalChannel = (\n                    conduitProperties.channels[finalChannelIndex]\n                );\n\n                // Overwrite the removed channel using the final channel value.\n                conduitProperties.channels[removedChannelIndex] = finalChannel;\n\n                // Update final index in associated mapping to removed index.\n                conduitProperties.channelIndexesPlusOne[finalChannel] = (\n                    channelIndexPlusOne\n                );\n            }\n\n            // Remove the last channel from the channels array for the conduit.\n            conduitProperties.channels.pop();\n\n            // Remove the closed channel from associated mapping of indexes.\n            delete conduitProperties.channelIndexesPlusOne[channel];\n        }\n    }\n\n    /**\n     * @notice Initiate conduit ownership transfer by assigning a new potential\n     *         owner for the given conduit. Once set, the new potential owner\n     *         may call `acceptOwnership` to claim ownership of the conduit.\n     *         Only the owner of the conduit in question may call this function.\n     *\n     * @param conduit The conduit for which to initiate ownership transfer.\n     */\n    function transferOwnership(address conduit, address newPotentialOwner)\n        external\n        override\n    {\n        // Ensure the caller is the current owner of the conduit in question.\n        _assertCallerIsConduitOwner(conduit);\n\n        // Ensure the new potential owner is not an invalid address.\n        if (newPotentialOwner == address(0)) {\n            revert NewPotentialOwnerIsZeroAddress(conduit);\n        }\n\n        // Emit an event indicating that the potential owner has been updated.\n        emit PotentialOwnerUpdated(conduit, newPotentialOwner);\n\n        // Set the new potential owner as the potential owner of the conduit.\n        _conduits[conduit].potentialOwner = newPotentialOwner;\n    }\n\n    /**\n     * @notice Clear the currently set potential owner, if any, from a conduit.\n     *         Only the owner of the conduit in question may call this function.\n     *\n     * @param conduit The conduit for which to cancel ownership transfer.\n     */\n    function cancelOwnershipTransfer(address conduit) external override {\n        // Ensure the caller is the current owner of the conduit in question.\n        _assertCallerIsConduitOwner(conduit);\n\n        // Emit an event indicating that the potential owner has been cleared.\n        emit PotentialOwnerUpdated(conduit, address(0));\n\n        // Clear the current new potential owner from the conduit.\n        delete _conduits[conduit].potentialOwner;\n    }\n\n    /**\n     * @notice Accept ownership of a supplied conduit. Only accounts that the\n     *         current owner has set as the new potential owner may call this\n     *         function.\n     *\n     * @param conduit The conduit for which to accept ownership.\n     */\n    function acceptOwnership(address conduit) external override {\n        // Ensure that the conduit in question exists.\n        _assertConduitExists(conduit);\n\n        // If caller does not match current potential owner of the conduit...\n        if (msg.sender != _conduits[conduit].potentialOwner) {\n            // Revert, indicating that caller is not current potential owner.\n            revert CallerIsNotNewPotentialOwner(conduit);\n        }\n\n        // Emit an event indicating that the potential owner has been cleared.\n        emit PotentialOwnerUpdated(conduit, address(0));\n\n        // Clear the current new potential owner from the conduit.\n        delete _conduits[conduit].potentialOwner;\n\n        // Emit an event indicating conduit ownership has been transferred.\n        emit OwnershipTransferred(\n            conduit,\n            _conduits[conduit].owner,\n            msg.sender\n        );\n\n        // Set the caller as the owner of the conduit.\n        _conduits[conduit].owner = msg.sender;\n    }\n\n    /**\n     * @notice Retrieve the current owner of a deployed conduit.\n     *\n     * @param conduit The conduit for which to retrieve the associated owner.\n     *\n     * @return owner The owner of the supplied conduit.\n     */\n    function ownerOf(address conduit)\n        external\n        view\n        override\n        returns (address owner)\n    {\n        // Ensure that the conduit in question exists.\n        _assertConduitExists(conduit);\n\n        // Retrieve the current owner of the conduit in question.\n        owner = _conduits[conduit].owner;\n    }\n\n    /**\n     * @notice Retrieve the conduit key for a deployed conduit via reverse\n     *         lookup.\n     *\n     * @param conduit The conduit for which to retrieve the associated conduit\n     *                key.\n     *\n     * @return conduitKey The conduit key used to deploy the supplied conduit.\n     */\n    function getKey(address conduit)\n        external\n        view\n        override\n        returns (bytes32 conduitKey)\n    {\n        // Attempt to retrieve a conduit key for the conduit in question.\n        conduitKey = _conduits[conduit].key;\n\n        // Revert if no conduit key was located.\n        if (conduitKey == bytes32(0)) {\n            revert NoConduit();\n        }\n    }\n\n    /**\n     * @notice Derive the conduit associated with a given conduit key and\n     *         determine whether that conduit exists (i.e. whether it has been\n     *         deployed).\n     *\n     * @param conduitKey The conduit key used to derive the conduit.\n     *\n     * @return conduit The derived address of the conduit.\n     * @return exists  A boolean indicating whether the derived conduit has been\n     *                 deployed or not.\n     */\n    function getConduit(bytes32 conduitKey)\n        external\n        view\n        override\n        returns (address conduit, bool exists)\n    {\n        // Derive address from deployer, conduit key and creation code hash.\n        conduit = address(\n            uint160(\n                uint256(\n                    keccak256(\n                        abi.encodePacked(\n                            bytes1(0xff),\n                            address(this),\n                            conduitKey,\n                            _CONDUIT_CREATION_CODE_HASH\n                        )\n                    )\n                )\n            )\n        );\n\n        // Determine whether conduit exists by retrieving its runtime code.\n        exists = (conduit.codehash == _CONDUIT_RUNTIME_CODE_HASH);\n    }\n\n    /**\n     * @notice Retrieve the potential owner, if any, for a given conduit. The\n     *         current owner may set a new potential owner via\n     *         `transferOwnership` and that owner may then accept ownership of\n     *         the conduit in question via `acceptOwnership`.\n     *\n     * @param conduit The conduit for which to retrieve the potential owner.\n     *\n     * @return potentialOwner The potential owner, if any, for the conduit.\n     */\n    function getPotentialOwner(address conduit)\n        external\n        view\n        override\n        returns (address potentialOwner)\n    {\n        // Ensure that the conduit in question exists.\n        _assertConduitExists(conduit);\n\n        // Retrieve the current potential owner of the conduit in question.\n        potentialOwner = _conduits[conduit].potentialOwner;\n    }\n\n    /**\n     * @notice Retrieve the status (either open or closed) of a given channel on\n     *         a conduit.\n     *\n     * @param conduit The conduit for which to retrieve the channel status.\n     * @param channel The channel for which to retrieve the status.\n     *\n     * @return isOpen The status of the channel on the given conduit.\n     */\n    function getChannelStatus(address conduit, address channel)\n        external\n        view\n        override\n        returns (bool isOpen)\n    {\n        // Ensure that the conduit in question exists.\n        _assertConduitExists(conduit);\n\n        // Retrieve the current channel status for the conduit in question.\n        isOpen = _conduits[conduit].channelIndexesPlusOne[channel] != 0;\n    }\n\n    /**\n     * @notice Retrieve the total number of open channels for a given conduit.\n     *\n     * @param conduit The conduit for which to retrieve the total channel count.\n     *\n     * @return totalChannels The total number of open channels for the conduit.\n     */\n    function getTotalChannels(address conduit)\n        external\n        view\n        override\n        returns (uint256 totalChannels)\n    {\n        // Ensure that the conduit in question exists.\n        _assertConduitExists(conduit);\n\n        // Retrieve the total open channel count for the conduit in question.\n        totalChannels = _conduits[conduit].channels.length;\n    }\n\n    /**\n     * @notice Retrieve an open channel at a specific index for a given conduit.\n     *         Note that the index of a channel can change as a result of other\n     *         channels being closed on the conduit.\n     *\n     * @param conduit      The conduit for which to retrieve the open channel.\n     * @param channelIndex The index of the channel in question.\n     *\n     * @return channel The open channel, if any, at the specified channel index.\n     */\n    function getChannel(address conduit, uint256 channelIndex)\n        external\n        view\n        override\n        returns (address channel)\n    {\n        // Ensure that the conduit in question exists.\n        _assertConduitExists(conduit);\n\n        // Retrieve the total open channel count for the conduit in question.\n        uint256 totalChannels = _conduits[conduit].channels.length;\n\n        // Ensure that the supplied index is within range.\n        if (channelIndex >= totalChannels) {\n            revert ChannelOutOfRange(conduit);\n        }\n\n        // Retrieve the channel at the given index.\n        channel = _conduits[conduit].channels[channelIndex];\n    }\n\n    /**\n     * @notice Retrieve all open channels for a given conduit. Note that calling\n     *         this function for a conduit with many channels will revert with\n     *         an out-of-gas error.\n     *\n     * @param conduit The conduit for which to retrieve open channels.\n     *\n     * @return channels An array of open channels on the given conduit.\n     */\n    function getChannels(address conduit)\n        external\n        view\n        override\n        returns (address[] memory channels)\n    {\n        // Ensure that the conduit in question exists.\n        _assertConduitExists(conduit);\n\n        // Retrieve all of the open channels on the conduit in question.\n        channels = _conduits[conduit].channels;\n    }\n\n    /**\n     * @dev Retrieve the conduit creation code and runtime code hashes.\n     */\n    function getConduitCodeHashes()\n        external\n        view\n        override\n        returns (bytes32 creationCodeHash, bytes32 runtimeCodeHash)\n    {\n        // Retrieve the conduit creation code hash from runtime.\n        creationCodeHash = _CONDUIT_CREATION_CODE_HASH;\n\n        // Retrieve the conduit runtime code hash from runtime.\n        runtimeCodeHash = _CONDUIT_RUNTIME_CODE_HASH;\n    }\n\n    /**\n     * @dev Internal view function to revert if the caller is not the owner of a\n     *      given conduit.\n     *\n     * @param conduit The conduit for which to assert ownership.\n     */\n    function _assertCallerIsConduitOwner(address conduit) internal view {\n        // Ensure that the conduit in question exists.\n        _assertConduitExists(conduit);\n\n        // If the caller does not match the current owner of the conduit...\n        if (msg.sender != _conduits[conduit].owner) {\n            // Revert, indicating that the caller is not the owner.\n            revert CallerIsNotOwner(conduit);\n        }\n    }\n\n    /**\n     * @dev Internal view function to revert if a given conduit does not exist.\n     *\n     * @param conduit The conduit for which to assert existence.\n     */\n    function _assertConduitExists(address conduit) internal view {\n        // Attempt to retrieve a conduit key for the conduit in question.\n        if (_conduits[conduit].key == bytes32(0)) {\n            // Revert if no conduit key was located.\n            revert NoConduit();\n        }\n    }\n}\n"
      },
      "seaport/contracts/interfaces/ConduitControllerInterface.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\n/**\n * @title ConduitControllerInterface\n * @author 0age\n * @notice ConduitControllerInterface contains all external function interfaces,\n *         structs, events, and errors for the conduit controller.\n */\ninterface ConduitControllerInterface {\n    /**\n     * @dev Track the conduit key, current owner, new potential owner, and open\n     *      channels for each deployed conduit.\n     */\n    struct ConduitProperties {\n        bytes32 key;\n        address owner;\n        address potentialOwner;\n        address[] channels;\n        mapping(address => uint256) channelIndexesPlusOne;\n    }\n\n    /**\n     * @dev Emit an event whenever a new conduit is created.\n     *\n     * @param conduit    The newly created conduit.\n     * @param conduitKey The conduit key used to create the new conduit.\n     */\n    event NewConduit(address conduit, bytes32 conduitKey);\n\n    /**\n     * @dev Emit an event whenever conduit ownership is transferred.\n     *\n     * @param conduit       The conduit for which ownership has been\n     *                      transferred.\n     * @param previousOwner The previous owner of the conduit.\n     * @param newOwner      The new owner of the conduit.\n     */\n    event OwnershipTransferred(\n        address indexed conduit,\n        address indexed previousOwner,\n        address indexed newOwner\n    );\n\n    /**\n     * @dev Emit an event whenever a conduit owner registers a new potential\n     *      owner for that conduit.\n     *\n     * @param conduit           The conduit for which ownership may now be\n     *                          transferred.\n     * @param newPotentialOwner The new potential owner of the conduit.\n     */\n    event PotentialOwnerUpdated(\n        address indexed conduit,\n        address indexed newPotentialOwner\n    );\n\n    /**\n     * @dev Revert with an error when attempting to create a new conduit using a\n     *      conduit key where the last twenty bytes of the key do not match the\n     *      address of the caller.\n     */\n    error InvalidCreator();\n\n    /**\n     * @dev Revert with an error when attempting to interact with a conduit that\n     *      does not yet exist.\n     */\n    error NoConduit();\n\n    /**\n     * @dev Revert with an error when attempting to create a conduit that\n     *      already exists.\n     */\n    error ConduitAlreadyExists(address conduit);\n\n    /**\n     * @dev Revert with an error when attempting to update channels or transfer\n     *      ownership of a conduit when the caller is not the owner of the\n     *      conduit in question.\n     */\n    error CallerIsNotOwner(address conduit);\n\n    /**\n     * @dev Revert with an error when attempting to register a new potential\n     *      owner and supplying the null address.\n     */\n    error NewPotentialOwnerIsZeroAddress(address conduit);\n\n    /**\n     * @dev Revert with an error when attempting to claim ownership of a conduit\n     *      with a caller that is not the current potential owner for the\n     *      conduit in question.\n     */\n    error CallerIsNotNewPotentialOwner(address conduit);\n\n    /**\n     * @dev Revert with an error when attempting to retrieve a channel using an\n     *      index that is out of range.\n     */\n    error ChannelOutOfRange(address conduit);\n\n    /**\n     * @notice Deploy a new conduit using a supplied conduit key and assigning\n     *         an initial owner for the deployed conduit. Note that the last\n     *         twenty bytes of the supplied conduit key must match the caller\n     *         and that a new conduit cannot be created if one has already been\n     *         deployed using the same conduit key.\n     *\n     * @param conduitKey   The conduit key used to deploy the conduit. Note that\n     *                     the last twenty bytes of the conduit key must match\n     *                     the caller of this contract.\n     * @param initialOwner The initial owner to set for the new conduit.\n     *\n     * @return conduit The address of the newly deployed conduit.\n     */\n    function createConduit(bytes32 conduitKey, address initialOwner)\n        external\n        returns (address conduit);\n\n    /**\n     * @notice Open or close a channel on a given conduit, thereby allowing the\n     *         specified account to execute transfers against that conduit.\n     *         Extreme care must be taken when updating channels, as malicious\n     *         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\n     *         tokens where the token holder has granted the conduit approval.\n     *         Only the owner of the conduit in question may call this function.\n     *\n     * @param conduit The conduit for which to open or close the channel.\n     * @param channel The channel to open or close on the conduit.\n     * @param isOpen  A boolean indicating whether to open or close the channel.\n     */\n    function updateChannel(\n        address conduit,\n        address channel,\n        bool isOpen\n    ) external;\n\n    /**\n     * @notice Initiate conduit ownership transfer by assigning a new potential\n     *         owner for the given conduit. Once set, the new potential owner\n     *         may call `acceptOwnership` to claim ownership of the conduit.\n     *         Only the owner of the conduit in question may call this function.\n     *\n     * @param conduit The conduit for which to initiate ownership transfer.\n     */\n    function transferOwnership(address conduit, address newPotentialOwner)\n        external;\n\n    /**\n     * @notice Clear the currently set potential owner, if any, from a conduit.\n     *         Only the owner of the conduit in question may call this function.\n     *\n     * @param conduit The conduit for which to cancel ownership transfer.\n     */\n    function cancelOwnershipTransfer(address conduit) external;\n\n    /**\n     * @notice Accept ownership of a supplied conduit. Only accounts that the\n     *         current owner has set as the new potential owner may call this\n     *         function.\n     *\n     * @param conduit The conduit for which to accept ownership.\n     */\n    function acceptOwnership(address conduit) external;\n\n    /**\n     * @notice Retrieve the current owner of a deployed conduit.\n     *\n     * @param conduit The conduit for which to retrieve the associated owner.\n     *\n     * @return owner The owner of the supplied conduit.\n     */\n    function ownerOf(address conduit) external view returns (address owner);\n\n    /**\n     * @notice Retrieve the conduit key for a deployed conduit via reverse\n     *         lookup.\n     *\n     * @param conduit The conduit for which to retrieve the associated conduit\n     *                key.\n     *\n     * @return conduitKey The conduit key used to deploy the supplied conduit.\n     */\n    function getKey(address conduit) external view returns (bytes32 conduitKey);\n\n    /**\n     * @notice Derive the conduit associated with a given conduit key and\n     *         determine whether that conduit exists (i.e. whether it has been\n     *         deployed).\n     *\n     * @param conduitKey The conduit key used to derive the conduit.\n     *\n     * @return conduit The derived address of the conduit.\n     * @return exists  A boolean indicating whether the derived conduit has been\n     *                 deployed or not.\n     */\n    function getConduit(bytes32 conduitKey)\n        external\n        view\n        returns (address conduit, bool exists);\n\n    /**\n     * @notice Retrieve the potential owner, if any, for a given conduit. The\n     *         current owner may set a new potential owner via\n     *         `transferOwnership` and that owner may then accept ownership of\n     *         the conduit in question via `acceptOwnership`.\n     *\n     * @param conduit The conduit for which to retrieve the potential owner.\n     *\n     * @return potentialOwner The potential owner, if any, for the conduit.\n     */\n    function getPotentialOwner(address conduit)\n        external\n        view\n        returns (address potentialOwner);\n\n    /**\n     * @notice Retrieve the status (either open or closed) of a given channel on\n     *         a conduit.\n     *\n     * @param conduit The conduit for which to retrieve the channel status.\n     * @param channel The channel for which to retrieve the status.\n     *\n     * @return isOpen The status of the channel on the given conduit.\n     */\n    function getChannelStatus(address conduit, address channel)\n        external\n        view\n        returns (bool isOpen);\n\n    /**\n     * @notice Retrieve the total number of open channels for a given conduit.\n     *\n     * @param conduit The conduit for which to retrieve the total channel count.\n     *\n     * @return totalChannels The total number of open channels for the conduit.\n     */\n    function getTotalChannels(address conduit)\n        external\n        view\n        returns (uint256 totalChannels);\n\n    /**\n     * @notice Retrieve an open channel at a specific index for a given conduit.\n     *         Note that the index of a channel can change as a result of other\n     *         channels being closed on the conduit.\n     *\n     * @param conduit      The conduit for which to retrieve the open channel.\n     * @param channelIndex The index of the channel in question.\n     *\n     * @return channel The open channel, if any, at the specified channel index.\n     */\n    function getChannel(address conduit, uint256 channelIndex)\n        external\n        view\n        returns (address channel);\n\n    /**\n     * @notice Retrieve all open channels for a given conduit. Note that calling\n     *         this function for a conduit with many channels will revert with\n     *         an out-of-gas error.\n     *\n     * @param conduit The conduit for which to retrieve open channels.\n     *\n     * @return channels An array of open channels on the given conduit.\n     */\n    function getChannels(address conduit)\n        external\n        view\n        returns (address[] memory channels);\n\n    /**\n     * @dev Retrieve the conduit creation code and runtime code hashes.\n     */\n    function getConduitCodeHashes()\n        external\n        view\n        returns (bytes32 creationCodeHash, bytes32 runtimeCodeHash);\n}\n"
      },
      "seaport/contracts/lib/Executor.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\n// prettier-ignore\nimport {\n    ERC20Interface,\n    ERC721Interface,\n    ERC1155Interface\n} from \"../interfaces/AbridgedTokenInterfaces.sol\";\n\nimport { ConduitInterface } from \"../interfaces/ConduitInterface.sol\";\n\nimport { ItemType } from \"./ConsiderationEnums.sol\";\n\nimport { ReceivedItem } from \"./ConsiderationStructs.sol\";\n\nimport { Verifiers } from \"./Verifiers.sol\";\n\nimport { TokenTransferrer } from \"./TokenTransferrer.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\n/**\n * @title Executor\n * @author 0age\n * @notice Executor contains functions related to processing executions (i.e.\n *         transferring items, either directly or via conduits).\n */\ncontract Executor is Verifiers, TokenTransferrer {\n    /**\n     * @dev Derive and set hashes, reference chainId, and associated domain\n     *      separator during deployment.\n     *\n     * @param conduitController A contract that deploys conduits, or proxies\n     *                          that may optionally be used to transfer approved\n     *                          ERC20/721/1155 tokens.\n     */\n    constructor(address conduitController) Verifiers(conduitController) {}\n\n    /**\n     * @dev Internal function to transfer a given item, either directly or via\n     *      a corresponding conduit.\n     *\n     * @param item        The item to transfer, including an amount and a\n     *                    recipient.\n     * @param from        The account supplying the item.\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\n     *                    if any, to source token approvals from. The zero hash\n     *                    signifies that no conduit should be used, with direct\n     *                    approvals set on this contract.\n     * @param accumulator An open-ended array that collects transfers to execute\n     *                    against a given conduit in a single call.\n     */\n    function _transfer(\n        ReceivedItem memory item,\n        address from,\n        bytes32 conduitKey,\n        bytes memory accumulator\n    ) internal {\n        // If the item type indicates Ether or a native token...\n        if (item.itemType == ItemType.NATIVE) {\n            // transfer the native tokens to the recipient.\n            _transferEth(item.recipient, item.amount);\n        } else if (item.itemType == ItemType.ERC20) {\n            // Transfer ERC20 tokens from the source to the recipient.\n            _transferERC20(\n                item.token,\n                from,\n                item.recipient,\n                item.amount,\n                conduitKey,\n                accumulator\n            );\n        } else if (item.itemType == ItemType.ERC721) {\n            // Transfer ERC721 token from the source to the recipient.\n            _transferERC721(\n                item.token,\n                from,\n                item.recipient,\n                item.identifier,\n                item.amount,\n                conduitKey,\n                accumulator\n            );\n        } else {\n            // Transfer ERC1155 token from the source to the recipient.\n            _transferERC1155(\n                item.token,\n                from,\n                item.recipient,\n                item.identifier,\n                item.amount,\n                conduitKey,\n                accumulator\n            );\n        }\n    }\n\n    /**\n     * @dev Internal function to transfer an individual ERC721 or ERC1155 item\n     *      from a given originator to a given recipient. The accumulator will\n     *      be bypassed, meaning that this function should be utilized in cases\n     *      where multiple item transfers can be accumulated into a single\n     *      conduit call. Sufficient approvals must be set, either on the\n     *      respective conduit or on this contract itself.\n     *\n     * @param itemType   The type of item to transfer, either ERC721 or ERC1155.\n     * @param token      The token to transfer.\n     * @param from       The originator of the transfer.\n     * @param to         The recipient of the transfer.\n     * @param identifier The tokenId to transfer.\n     * @param amount     The amount to transfer.\n     * @param conduitKey A bytes32 value indicating what corresponding conduit,\n     *                   if any, to source token approvals from. The zero hash\n     *                   signifies that no conduit should be used, with direct\n     *                   approvals set on this contract.\n     */\n    function _transferIndividual721Or1155Item(\n        ItemType itemType,\n        address token,\n        address from,\n        address to,\n        uint256 identifier,\n        uint256 amount,\n        bytes32 conduitKey\n    ) internal {\n        // Determine if the transfer is to be performed via a conduit.\n        if (conduitKey != bytes32(0)) {\n            // Use free memory pointer as calldata offset for the conduit call.\n            uint256 callDataOffset;\n\n            // Utilize assembly to place each argument in free memory.\n            assembly {\n                // Retrieve the free memory pointer and use it as the offset.\n                callDataOffset := mload(FreeMemoryPointerSlot)\n\n                // Write ConduitInterface.execute.selector to memory.\n                mstore(callDataOffset, Conduit_execute_signature)\n\n                // Write the offset to the ConduitTransfer array in memory.\n                mstore(\n                    add(\n                        callDataOffset,\n                        Conduit_execute_ConduitTransfer_offset_ptr\n                    ),\n                    Conduit_execute_ConduitTransfer_ptr\n                )\n\n                // Write the length of the ConduitTransfer array to memory.\n                mstore(\n                    add(\n                        callDataOffset,\n                        Conduit_execute_ConduitTransfer_length_ptr\n                    ),\n                    Conduit_execute_ConduitTransfer_length\n                )\n\n                // Write the item type to memory.\n                mstore(\n                    add(callDataOffset, Conduit_execute_transferItemType_ptr),\n                    itemType\n                )\n\n                // Write the token to memory.\n                mstore(\n                    add(callDataOffset, Conduit_execute_transferToken_ptr),\n                    token\n                )\n\n                // Write the transfer source to memory.\n                mstore(\n                    add(callDataOffset, Conduit_execute_transferFrom_ptr),\n                    from\n                )\n\n                // Write the transfer recipient to memory.\n                mstore(add(callDataOffset, Conduit_execute_transferTo_ptr), to)\n\n                // Write the token identifier to memory.\n                mstore(\n                    add(callDataOffset, Conduit_execute_transferIdentifier_ptr),\n                    identifier\n                )\n\n                // Write the transfer amount to memory.\n                mstore(\n                    add(callDataOffset, Conduit_execute_transferAmount_ptr),\n                    amount\n                )\n            }\n\n            // Perform the call to the conduit.\n            _callConduitUsingOffsets(\n                conduitKey,\n                callDataOffset,\n                OneConduitExecute_size\n            );\n        } else {\n            // Otherwise, determine whether it is an ERC721 or ERC1155 item.\n            if (itemType == ItemType.ERC721) {\n                // Ensure that exactly one 721 item is being transferred.\n                if (amount != 1) {\n                    revert InvalidERC721TransferAmount();\n                }\n\n                // Perform transfer via the token contract directly.\n                _performERC721Transfer(token, from, to, identifier);\n            } else {\n                // Perform transfer via the token contract directly.\n                _performERC1155Transfer(token, from, to, identifier, amount);\n            }\n        }\n    }\n\n    /**\n     * @dev Internal function to transfer Ether or other native tokens to a\n     *      given recipient.\n     *\n     * @param to     The recipient of the transfer.\n     * @param amount The amount to transfer.\n     */\n    function _transferEth(address payable to, uint256 amount) internal {\n        // Ensure that the supplied amount is non-zero.\n        _assertNonZeroAmount(amount);\n\n        // Declare a variable indicating whether the call was successful or not.\n        bool success;\n\n        assembly {\n            // Transfer the ETH and store if it succeeded or not.\n            success := call(gas(), to, amount, 0, 0, 0, 0)\n        }\n\n        // If the call fails...\n        if (!success) {\n            // Revert and pass the revert reason along if one was returned.\n            _revertWithReasonIfOneIsReturned();\n\n            // Otherwise, revert with a generic error message.\n            revert EtherTransferGenericFailure(to, amount);\n        }\n    }\n\n    /**\n     * @dev Internal function to transfer ERC20 tokens from a given originator\n     *      to a given recipient using a given conduit if applicable. Sufficient\n     *      approvals must be set on this contract or on a respective conduit.\n     *\n     * @param token       The ERC20 token to transfer.\n     * @param from        The originator of the transfer.\n     * @param to          The recipient of the transfer.\n     * @param amount      The amount to transfer.\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\n     *                    if any, to source token approvals from. The zero hash\n     *                    signifies that no conduit should be used, with direct\n     *                    approvals set on this contract.\n     * @param accumulator An open-ended array that collects transfers to execute\n     *                    against a given conduit in a single call.\n     */\n    function _transferERC20(\n        address token,\n        address from,\n        address to,\n        uint256 amount,\n        bytes32 conduitKey,\n        bytes memory accumulator\n    ) internal {\n        // Ensure that the supplied amount is non-zero.\n        _assertNonZeroAmount(amount);\n\n        // Trigger accumulated transfers if the conduits differ.\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\n\n        // If no conduit has been specified...\n        if (conduitKey == bytes32(0)) {\n            // Perform the token transfer directly.\n            _performERC20Transfer(token, from, to, amount);\n        } else {\n            // Insert the call to the conduit into the accumulator.\n            _insert(\n                conduitKey,\n                accumulator,\n                uint256(1),\n                token,\n                from,\n                to,\n                uint256(0),\n                amount\n            );\n        }\n    }\n\n    /**\n     * @dev Internal function to transfer a single ERC721 token from a given\n     *      originator to a given recipient. Sufficient approvals must be set,\n     *      either on the respective conduit or on this contract itself.\n     *\n     * @param token       The ERC721 token to transfer.\n     * @param from        The originator of the transfer.\n     * @param to          The recipient of the transfer.\n     * @param identifier  The tokenId to transfer (must be 1 for ERC721).\n     * @param amount      The amount to transfer.\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\n     *                    if any, to source token approvals from. The zero hash\n     *                    signifies that no conduit should be used, with direct\n     *                    approvals set on this contract.\n     * @param accumulator An open-ended array that collects transfers to execute\n     *                    against a given conduit in a single call.\n     */\n    function _transferERC721(\n        address token,\n        address from,\n        address to,\n        uint256 identifier,\n        uint256 amount,\n        bytes32 conduitKey,\n        bytes memory accumulator\n    ) internal {\n        // Trigger accumulated transfers if the conduits differ.\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\n\n        // If no conduit has been specified...\n        if (conduitKey == bytes32(0)) {\n            // Ensure that exactly one 721 item is being transferred.\n            if (amount != 1) {\n                revert InvalidERC721TransferAmount();\n            }\n\n            // Perform transfer via the token contract directly.\n            _performERC721Transfer(token, from, to, identifier);\n        } else {\n            // Insert the call to the conduit into the accumulator.\n            _insert(\n                conduitKey,\n                accumulator,\n                uint256(2),\n                token,\n                from,\n                to,\n                identifier,\n                amount\n            );\n        }\n    }\n\n    /**\n     * @dev Internal function to transfer ERC1155 tokens from a given originator\n     *      to a given recipient. Sufficient approvals must be set, either on\n     *      the respective conduit or on this contract itself.\n     *\n     * @param token       The ERC1155 token to transfer.\n     * @param from        The originator of the transfer.\n     * @param to          The recipient of the transfer.\n     * @param identifier  The id to transfer.\n     * @param amount      The amount to transfer.\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\n     *                    if any, to source token approvals from. The zero hash\n     *                    signifies that no conduit should be used, with direct\n     *                    approvals set on this contract.\n     * @param accumulator An open-ended array that collects transfers to execute\n     *                    against a given conduit in a single call.\n     */\n    function _transferERC1155(\n        address token,\n        address from,\n        address to,\n        uint256 identifier,\n        uint256 amount,\n        bytes32 conduitKey,\n        bytes memory accumulator\n    ) internal {\n        // Ensure that the supplied amount is non-zero.\n        _assertNonZeroAmount(amount);\n\n        // Trigger accumulated transfers if the conduits differ.\n        _triggerIfArmedAndNotAccumulatable(accumulator, conduitKey);\n\n        // If no conduit has been specified...\n        if (conduitKey == bytes32(0)) {\n            // Perform transfer via the token contract directly.\n            _performERC1155Transfer(token, from, to, identifier, amount);\n        } else {\n            // Insert the call to the conduit into the accumulator.\n            _insert(\n                conduitKey,\n                accumulator,\n                uint256(3),\n                token,\n                from,\n                to,\n                identifier,\n                amount\n            );\n        }\n    }\n\n    /**\n     * @dev Internal function to trigger a call to the conduit currently held by\n     *      the accumulator if the accumulator contains item transfers (i.e. it\n     *      is \"armed\") and the supplied conduit key does not match the key held\n     *      by the accumulator.\n     *\n     * @param accumulator An open-ended array that collects transfers to execute\n     *                    against a given conduit in a single call.\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\n     *                    if any, to source token approvals from. The zero hash\n     *                    signifies that no conduit should be used, with direct\n     *                    approvals set on this contract.\n     */\n    function _triggerIfArmedAndNotAccumulatable(\n        bytes memory accumulator,\n        bytes32 conduitKey\n    ) internal {\n        // Retrieve the current conduit key from the accumulator.\n        bytes32 accumulatorConduitKey = _getAccumulatorConduitKey(accumulator);\n\n        // Perform conduit call if the set key does not match the supplied key.\n        if (accumulatorConduitKey != conduitKey) {\n            _triggerIfArmed(accumulator);\n        }\n    }\n\n    /**\n     * @dev Internal function to trigger a call to the conduit currently held by\n     *      the accumulator if the accumulator contains item transfers (i.e. it\n     *      is \"armed\").\n     *\n     * @param accumulator An open-ended array that collects transfers to execute\n     *                    against a given conduit in a single call.\n     */\n    function _triggerIfArmed(bytes memory accumulator) internal {\n        // Exit if the accumulator is not \"armed\".\n        if (accumulator.length != 64) {\n            return;\n        }\n\n        // Retrieve the current conduit key from the accumulator.\n        bytes32 accumulatorConduitKey = _getAccumulatorConduitKey(accumulator);\n\n        // Perform conduit call.\n        _trigger(accumulatorConduitKey, accumulator);\n    }\n\n    /**\n     * @dev Internal function to trigger a call to the conduit corresponding to\n     *      a given conduit key, supplying all accumulated item transfers. The\n     *      accumulator will be \"disarmed\" and reset in the process.\n     *\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\n     *                    if any, to source token approvals from. The zero hash\n     *                    signifies that no conduit should be used, with direct\n     *                    approvals set on this contract.\n     * @param accumulator An open-ended array that collects transfers to execute\n     *                    against a given conduit in a single call.\n     */\n    function _trigger(bytes32 conduitKey, bytes memory accumulator) internal {\n        // Declare variables for offset in memory & size of calldata to conduit.\n        uint256 callDataOffset;\n        uint256 callDataSize;\n\n        // Call the conduit with all the accumulated transfers.\n        assembly {\n            // Call begins at third word; the first is length or \"armed\" status,\n            // and the second is the current conduit key.\n            callDataOffset := add(accumulator, TwoWords)\n\n            // 68 + items * 192\n            callDataSize := add(\n                Accumulator_array_offset_ptr,\n                mul(\n                    mload(add(accumulator, Accumulator_array_length_ptr)),\n                    Conduit_transferItem_size\n                )\n            )\n        }\n\n        // Call conduit derived from conduit key & supply accumulated transfers.\n        _callConduitUsingOffsets(conduitKey, callDataOffset, callDataSize);\n\n        // Reset accumulator length to signal that it is now \"disarmed\".\n        assembly {\n            mstore(accumulator, AccumulatorDisarmed)\n        }\n    }\n\n    /**\n     * @dev Internal function to perform a call to the conduit corresponding to\n     *      a given conduit key based on the offset and size of the calldata in\n     *      question in memory.\n     *\n     * @param conduitKey     A bytes32 value indicating what corresponding\n     *                       conduit, if any, to source token approvals from.\n     *                       The zero hash signifies that no conduit should be\n     *                       used, with direct approvals set on this contract.\n     * @param callDataOffset The memory pointer where calldata is contained.\n     * @param callDataSize   The size of calldata in memory.\n     */\n    function _callConduitUsingOffsets(\n        bytes32 conduitKey,\n        uint256 callDataOffset,\n        uint256 callDataSize\n    ) internal {\n        // Derive the address of the conduit using the conduit key.\n        address conduit = _deriveConduit(conduitKey);\n\n        bool success;\n\n        // call the conduit.\n        assembly {\n            // Ensure first word of scratch space is empty.\n            mstore(0, 0)\n\n            // Perform call, placing first word of return data in scratch space.\n            success := call(\n                gas(),\n                conduit,\n                0,\n                callDataOffset,\n                callDataSize,\n                0,\n                OneWord\n            )\n        }\n\n        // If the call failed...\n        if (!success) {\n            // Pass along whatever revert reason was given by the conduit.\n            _revertWithReasonIfOneIsReturned();\n\n            // Otherwise, revert with a generic error.\n            revert InvalidCallToConduit(conduit);\n        }\n\n        // Ensure that the conduit returned the correct magic value.\n        bytes4 result;\n        assembly {\n            // Take value from scratch space and place it on the stack.\n            result := mload(0)\n        }\n\n        // Ensure result was extracted and matches EIP-1271 magic value.\n        if (result != ConduitInterface.execute.selector) {\n            revert InvalidConduit(conduitKey, conduit);\n        }\n    }\n\n    /**\n     * @dev Internal pure function to retrieve the current conduit key set for\n     *      the accumulator.\n     *\n     * @param accumulator An open-ended array that collects transfers to execute\n     *                    against a given conduit in a single call.\n     *\n     * @return accumulatorConduitKey The conduit key currently set for the\n     *                               accumulator.\n     */\n    function _getAccumulatorConduitKey(bytes memory accumulator)\n        internal\n        pure\n        returns (bytes32 accumulatorConduitKey)\n    {\n        // Retrieve the current conduit key from the accumulator.\n        assembly {\n            accumulatorConduitKey := mload(\n                add(accumulator, Accumulator_conduitKey_ptr)\n            )\n        }\n    }\n\n    /**\n     * @dev Internal pure function to place an item transfer into an accumulator\n     *      that collects a series of transfers to execute against a given\n     *      conduit in a single call.\n     *\n     * @param conduitKey  A bytes32 value indicating what corresponding conduit,\n     *                    if any, to source token approvals from. The zero hash\n     *                    signifies that no conduit should be used, with direct\n     *                    approvals set on this contract.\n     * @param accumulator An open-ended array that collects transfers to execute\n     *                    against a given conduit in a single call.\n     * @param itemType    The type of the item to transfer.\n     * @param token       The token to transfer.\n     * @param from        The originator of the transfer.\n     * @param to          The recipient of the transfer.\n     * @param identifier  The tokenId to transfer.\n     * @param amount      The amount to transfer.\n     */\n    function _insert(\n        bytes32 conduitKey,\n        bytes memory accumulator,\n        uint256 itemType,\n        address token,\n        address from,\n        address to,\n        uint256 identifier,\n        uint256 amount\n    ) internal pure {\n        uint256 elements;\n        // \"Arm\" and prime accumulator if it's not already armed. The sentinel\n        // value is held in the length of the accumulator array.\n        if (accumulator.length == AccumulatorDisarmed) {\n            elements = 1;\n            bytes4 selector = ConduitInterface.execute.selector;\n            assembly {\n                mstore(accumulator, AccumulatorArmed) // \"arm\" the accumulator.\n                mstore(add(accumulator, Accumulator_conduitKey_ptr), conduitKey)\n                mstore(add(accumulator, Accumulator_selector_ptr), selector)\n                mstore(\n                    add(accumulator, Accumulator_array_offset_ptr),\n                    Accumulator_array_offset\n                )\n                mstore(add(accumulator, Accumulator_array_length_ptr), elements)\n            }\n        } else {\n            // Otherwise, increase the number of elements by one.\n            assembly {\n                elements := add(\n                    mload(add(accumulator, Accumulator_array_length_ptr)),\n                    1\n                )\n                mstore(add(accumulator, Accumulator_array_length_ptr), elements)\n            }\n        }\n\n        // Insert the item.\n        assembly {\n            let itemPointer := sub(\n                add(accumulator, mul(elements, Conduit_transferItem_size)),\n                Accumulator_itemSizeOffsetDifference\n            )\n            mstore(itemPointer, itemType)\n            mstore(add(itemPointer, Conduit_transferItem_token_ptr), token)\n            mstore(add(itemPointer, Conduit_transferItem_from_ptr), from)\n            mstore(add(itemPointer, Conduit_transferItem_to_ptr), to)\n            mstore(\n                add(itemPointer, Conduit_transferItem_identifier_ptr),\n                identifier\n            )\n            mstore(add(itemPointer, Conduit_transferItem_amount_ptr), amount)\n        }\n    }\n}\n"
      },
      "seaport/contracts/interfaces/AbridgedTokenInterfaces.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\ninterface ERC20Interface {\n    function transferFrom(\n        address,\n        address,\n        uint256\n    ) external returns (bool);\n}\n\ninterface ERC721Interface {\n    function transferFrom(\n        address,\n        address,\n        uint256\n    ) external;\n}\n\ninterface ERC1155Interface {\n    function safeTransferFrom(\n        address from,\n        address to,\n        uint256 id,\n        uint256 amount,\n        bytes calldata data\n    ) external;\n\n    function safeBatchTransferFrom(\n        address from,\n        address to,\n        uint256[] calldata ids,\n        uint256[] calldata amounts,\n        bytes calldata data\n    ) external;\n}\n"
      },
      "seaport/contracts/lib/ConsiderationEnums.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\n// prettier-ignore\nenum OrderType {\n    // 0: no partial fills, anyone can execute\n    FULL_OPEN,\n\n    // 1: partial fills supported, anyone can execute\n    PARTIAL_OPEN,\n\n    // 2: no partial fills, only offerer or zone can execute\n    FULL_RESTRICTED,\n\n    // 3: partial fills supported, only offerer or zone can execute\n    PARTIAL_RESTRICTED\n}\n\n// prettier-ignore\nenum BasicOrderType {\n    // 0: no partial fills, anyone can execute\n    ETH_TO_ERC721_FULL_OPEN,\n\n    // 1: partial fills supported, anyone can execute\n    ETH_TO_ERC721_PARTIAL_OPEN,\n\n    // 2: no partial fills, only offerer or zone can execute\n    ETH_TO_ERC721_FULL_RESTRICTED,\n\n    // 3: partial fills supported, only offerer or zone can execute\n    ETH_TO_ERC721_PARTIAL_RESTRICTED,\n\n    // 4: no partial fills, anyone can execute\n    ETH_TO_ERC1155_FULL_OPEN,\n\n    // 5: partial fills supported, anyone can execute\n    ETH_TO_ERC1155_PARTIAL_OPEN,\n\n    // 6: no partial fills, only offerer or zone can execute\n    ETH_TO_ERC1155_FULL_RESTRICTED,\n\n    // 7: partial fills supported, only offerer or zone can execute\n    ETH_TO_ERC1155_PARTIAL_RESTRICTED,\n\n    // 8: no partial fills, anyone can execute\n    ERC20_TO_ERC721_FULL_OPEN,\n\n    // 9: partial fills supported, anyone can execute\n    ERC20_TO_ERC721_PARTIAL_OPEN,\n\n    // 10: no partial fills, only offerer or zone can execute\n    ERC20_TO_ERC721_FULL_RESTRICTED,\n\n    // 11: partial fills supported, only offerer or zone can execute\n    ERC20_TO_ERC721_PARTIAL_RESTRICTED,\n\n    // 12: no partial fills, anyone can execute\n    ERC20_TO_ERC1155_FULL_OPEN,\n\n    // 13: partial fills supported, anyone can execute\n    ERC20_TO_ERC1155_PARTIAL_OPEN,\n\n    // 14: no partial fills, only offerer or zone can execute\n    ERC20_TO_ERC1155_FULL_RESTRICTED,\n\n    // 15: partial fills supported, only offerer or zone can execute\n    ERC20_TO_ERC1155_PARTIAL_RESTRICTED,\n\n    // 16: no partial fills, anyone can execute\n    ERC721_TO_ERC20_FULL_OPEN,\n\n    // 17: partial fills supported, anyone can execute\n    ERC721_TO_ERC20_PARTIAL_OPEN,\n\n    // 18: no partial fills, only offerer or zone can execute\n    ERC721_TO_ERC20_FULL_RESTRICTED,\n\n    // 19: partial fills supported, only offerer or zone can execute\n    ERC721_TO_ERC20_PARTIAL_RESTRICTED,\n\n    // 20: no partial fills, anyone can execute\n    ERC1155_TO_ERC20_FULL_OPEN,\n\n    // 21: partial fills supported, anyone can execute\n    ERC1155_TO_ERC20_PARTIAL_OPEN,\n\n    // 22: no partial fills, only offerer or zone can execute\n    ERC1155_TO_ERC20_FULL_RESTRICTED,\n\n    // 23: partial fills supported, only offerer or zone can execute\n    ERC1155_TO_ERC20_PARTIAL_RESTRICTED\n}\n\n// prettier-ignore\nenum BasicOrderRouteType {\n    // 0: provide Ether (or other native token) to receive offered ERC721 item.\n    ETH_TO_ERC721,\n\n    // 1: provide Ether (or other native token) to receive offered ERC1155 item.\n    ETH_TO_ERC1155,\n\n    // 2: provide ERC20 item to receive offered ERC721 item.\n    ERC20_TO_ERC721,\n\n    // 3: provide ERC20 item to receive offered ERC1155 item.\n    ERC20_TO_ERC1155,\n\n    // 4: provide ERC721 item to receive offered ERC20 item.\n    ERC721_TO_ERC20,\n\n    // 5: provide ERC1155 item to receive offered ERC20 item.\n    ERC1155_TO_ERC20\n}\n\n// prettier-ignore\nenum ItemType {\n    // 0: ETH on mainnet, MATIC on polygon, etc.\n    NATIVE,\n\n    // 1: ERC20 items (ERC777 and ERC20 analogues could also technically work)\n    ERC20,\n\n    // 2: ERC721 items\n    ERC721,\n\n    // 3: ERC1155 items\n    ERC1155,\n\n    // 4: ERC721 items where a number of tokenIds are supported\n    ERC721_WITH_CRITERIA,\n\n    // 5: ERC1155 items where a number of ids are supported\n    ERC1155_WITH_CRITERIA\n}\n\n// prettier-ignore\nenum Side {\n    // 0: Items that can be spent\n    OFFER,\n    \n    // 1: Items that must be received\n    CONSIDERATION\n}\n"
      },
      "seaport/contracts/lib/ConsiderationStructs.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\n// prettier-ignore\nimport {\n    OrderType,\n    BasicOrderType,\n    ItemType,\n    Side\n} from \"./ConsiderationEnums.sol\";\n\n/**\n * @dev An order contains ten components: an offerer, a zone (or account that\n *      can cancel the order or restrict who can fulfill the order depending on\n *      the type), the order type (specifying partial fill support as well as\n *      restricted order status), the start and end time, a hash that will be\n *      provided to the zone when validating restricted orders, a salt, a key\n *      corresponding to a given conduit, a nonce, and an arbitrary number of\n *      offer items that can be spent along with consideration items that must\n *      be received by their respective recipient.\n */\nstruct OrderComponents {\n    address offerer;\n    address zone;\n    OfferItem[] offer;\n    ConsiderationItem[] consideration;\n    OrderType orderType;\n    uint256 startTime;\n    uint256 endTime;\n    bytes32 zoneHash;\n    uint256 salt;\n    bytes32 conduitKey;\n    uint256 nonce;\n}\n\n/**\n * @dev An offer item has five components: an item type (ETH or other native\n *      tokens, ERC20, ERC721, and ERC1155, as well as criteria-based ERC721 and\n *      ERC1155), a token address, a dual-purpose \"identifierOrCriteria\"\n *      component that will either represent a tokenId or a merkle root\n *      depending on the item type, and a start and end amount that support\n *      increasing or decreasing amounts over the duration of the respective\n *      order.\n */\nstruct OfferItem {\n    ItemType itemType;\n    address token;\n    uint256 identifierOrCriteria;\n    uint256 startAmount;\n    uint256 endAmount;\n}\n\n/**\n * @dev A consideration item has the same five components as an offer item and\n *      an additional sixth component designating the required recipient of the\n *      item.\n */\nstruct ConsiderationItem {\n    ItemType itemType;\n    address token;\n    uint256 identifierOrCriteria;\n    uint256 startAmount;\n    uint256 endAmount;\n    address payable recipient;\n}\n\n/**\n * @dev A spent item is translated from a utilized offer item an has four\n *      components: an item type (ETH or other native tokens, ERC20, ERC721, and\n *      ERC1155), a token address, a tokenId, and an amount.\n */\nstruct SpentItem {\n    ItemType itemType;\n    address token;\n    uint256 identifier;\n    uint256 amount;\n}\n\n/**\n * @dev A received item is translated from a utilized consideration item and has\n *      the same four components as a spent item, as well as an additional fifth\n *      component designating the required recipient of the item.\n */\nstruct ReceivedItem {\n    ItemType itemType;\n    address token;\n    uint256 identifier;\n    uint256 amount;\n    address payable recipient;\n}\n\n/**\n * @dev For basic orders involving ETH / native / ERC20 <=> ERC721 / ERC1155\n *      matching, a group of six functions may be called that only requires a\n *      subset of the usual order arguments. Note the use of a \"basicOrderType\"\n *      enum; this represents both the usual order type as well as the \"route\"\n *      of the basic order (a simple derivation function for the basic order\n *      type is `basicOrderType = orderType + (4 * basicOrderRoute)`.)\n */\nstruct BasicOrderParameters {\n    // calldata offset\n    address considerationToken; // 0x24\n    uint256 considerationIdentifier; // 0x44\n    uint256 considerationAmount; // 0x64\n    address payable offerer; // 0x84\n    address zone; // 0xa4\n    address offerToken; // 0xc4\n    uint256 offerIdentifier; // 0xe4\n    uint256 offerAmount; // 0x104\n    BasicOrderType basicOrderType; // 0x124\n    uint256 startTime; // 0x144\n    uint256 endTime; // 0x164\n    bytes32 zoneHash; // 0x184\n    uint256 salt; // 0x1a4\n    bytes32 offererConduitKey; // 0x1c4\n    bytes32 fulfillerConduitKey; // 0x1e4\n    uint256 totalOriginalAdditionalRecipients; // 0x204\n    AdditionalRecipient[] additionalRecipients; // 0x224\n    bytes signature; // 0x244\n    // Total length, excluding dynamic array data: 0x264 (580)\n}\n\n/**\n * @dev Basic orders can supply any number of additional recipients, with the\n *      implied assumption that they are supplied from the offered ETH (or other\n *      native token) or ERC20 token for the order.\n */\nstruct AdditionalRecipient {\n    uint256 amount;\n    address payable recipient;\n}\n\n/**\n * @dev The full set of order components, with the exception of the nonce, must\n *      be supplied when fulfilling more sophisticated orders or groups of\n *      orders. The total number of original consideration items must also be\n *      supplied, as the caller may specify additional consideration items.\n */\nstruct OrderParameters {\n    address offerer; // 0x00\n    address zone; // 0x20\n    OfferItem[] offer; // 0x40\n    ConsiderationItem[] consideration; // 0x60\n    OrderType orderType; // 0x80\n    uint256 startTime; // 0xa0\n    uint256 endTime; // 0xc0\n    bytes32 zoneHash; // 0xe0\n    uint256 salt; // 0x100\n    bytes32 conduitKey; // 0x120\n    uint256 totalOriginalConsiderationItems; // 0x140\n    // offer.length                          // 0x160\n}\n\n/**\n * @dev Orders require a signature in addition to the other order parameters.\n */\nstruct Order {\n    OrderParameters parameters;\n    bytes signature;\n}\n\n/**\n * @dev Advanced orders include a numerator (i.e. a fraction to attempt to fill)\n *      and a denominator (the total size of the order) in addition to the\n *      signature and other order parameters. It also supports an optional field\n *      for supplying extra data; this data will be included in a staticcall to\n *      `isValidOrderIncludingExtraData` on the zone for the order if the order\n *      type is restricted and the offerer or zone are not the caller.\n */\nstruct AdvancedOrder {\n    OrderParameters parameters;\n    uint120 numerator;\n    uint120 denominator;\n    bytes signature;\n    bytes extraData;\n}\n\n/**\n * @dev Orders can be validated (either explicitly via `validate`, or as a\n *      consequence of a full or partial fill), specifically cancelled (they can\n *      also be cancelled in bulk via incrementing a per-zone nonce), and\n *      partially or fully filled (with the fraction filled represented by a\n *      numerator and denominator).\n */\nstruct OrderStatus {\n    bool isValidated;\n    bool isCancelled;\n    uint120 numerator;\n    uint120 denominator;\n}\n\n/**\n * @dev A criteria resolver specifies an order, side (offer vs. consideration),\n *      and item index. It then provides a chosen identifier (i.e. tokenId)\n *      alongside a merkle proof demonstrating the identifier meets the required\n *      criteria.\n */\nstruct CriteriaResolver {\n    uint256 orderIndex;\n    Side side;\n    uint256 index;\n    uint256 identifier;\n    bytes32[] criteriaProof;\n}\n\n/**\n * @dev A fulfillment is applied to a group of orders. It decrements a series of\n *      offer and consideration items, then generates a single execution\n *      element. A given fulfillment can be applied to as many offer and\n *      consideration items as desired, but must contain at least one offer and\n *      at least one consideration that match. The fulfillment must also remain\n *      consistent on all key parameters across all offer items (same offerer,\n *      token, type, tokenId, and conduit preference) as well as across all\n *      consideration items (token, type, tokenId, and recipient).\n */\nstruct Fulfillment {\n    FulfillmentComponent[] offerComponents;\n    FulfillmentComponent[] considerationComponents;\n}\n\n/**\n * @dev Each fulfillment component contains one index referencing a specific\n *      order and another referencing a specific offer or consideration item.\n */\nstruct FulfillmentComponent {\n    uint256 orderIndex;\n    uint256 itemIndex;\n}\n\n/**\n * @dev An execution is triggered once all consideration items have been zeroed\n *      out. It sends the item in question from the offerer to the item's\n *      recipient, optionally sourcing approvals from either this contract\n *      directly or from the offerer's chosen conduit if one is specified. An\n *      execution is not provided as an argument, but rather is derived via\n *      orders, criteria resolvers, and fulfillments (where the total number of\n *      executions will be less than or equal to the total number of indicated\n *      fulfillments) and returned as part of `matchOrders`.\n */\nstruct Execution {\n    ReceivedItem item;\n    address offerer;\n    bytes32 conduitKey;\n}\n"
      },
      "seaport/contracts/lib/Verifiers.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\nimport { OrderStatus } from \"./ConsiderationStructs.sol\";\n\nimport { Assertions } from \"./Assertions.sol\";\n\nimport { SignatureVerification } from \"./SignatureVerification.sol\";\n\n/**\n * @title Verifiers\n * @author 0age\n * @notice Verifiers contains functions for performing verifications.\n */\ncontract Verifiers is Assertions, SignatureVerification {\n    /**\n     * @dev Derive and set hashes, reference chainId, and associated domain\n     *      separator during deployment.\n     *\n     * @param conduitController A contract that deploys conduits, or proxies\n     *                          that may optionally be used to transfer approved\n     *                          ERC20/721/1155 tokens.\n     */\n    constructor(address conduitController) Assertions(conduitController) {}\n\n    /**\n     * @dev Internal view function to ensure that the current time falls within\n     *      an order's valid timespan.\n     *\n     * @param startTime       The time at which the order becomes active.\n     * @param endTime         The time at which the order becomes inactive.\n     * @param revertOnInvalid A boolean indicating whether to revert if the\n     *                        order is not active.\n     *\n     * @return valid A boolean indicating whether the order is active.\n     */\n    function _verifyTime(\n        uint256 startTime,\n        uint256 endTime,\n        bool revertOnInvalid\n    ) internal view returns (bool valid) {\n        // Revert if order's timespan hasn't started yet or has already ended.\n        if (startTime > block.timestamp || endTime <= block.timestamp) {\n            // Only revert if revertOnInvalid has been supplied as true.\n            if (revertOnInvalid) {\n                revert InvalidTime();\n            }\n\n            // Return false as the order is invalid.\n            return false;\n        }\n\n        // Return true as the order time is valid.\n        valid = true;\n    }\n\n    /**\n     * @dev Internal view function to verify the signature of an order. An\n     *      ERC-1271 fallback will be attempted if either the signature length\n     *      is not 32 or 33 bytes or if the recovered signer does not match the\n     *      supplied offerer. Note that in cases where a 32 or 33 byte signature\n     *      is supplied, only standard ECDSA signatures that recover to a\n     *      non-zero address are supported.\n     *\n     * @param offerer   The offerer for the order.\n     * @param orderHash The order hash.\n     * @param signature A signature from the offerer indicating that the order\n     *                  has been approved.\n     */\n    function _verifySignature(\n        address offerer,\n        bytes32 orderHash,\n        bytes memory signature\n    ) internal view {\n        // Skip signature verification if the offerer is the caller.\n        if (offerer == msg.sender) {\n            return;\n        }\n\n        // Derive EIP-712 digest using the domain separator and the order hash.\n        bytes32 digest = _deriveEIP712Digest(_domainSeparator(), orderHash);\n\n        // Ensure that the signature for the digest is valid for the offerer.\n        _assertValidSignature(offerer, digest, signature);\n    }\n\n    /**\n     * @dev Internal pure function to validate that a given order is fillable\n     *      and not cancelled based on the order status.\n     *\n     * @param orderHash       The order hash.\n     * @param orderStatus     The status of the order, including whether it has\n     *                        been cancelled and the fraction filled.\n     * @param onlyAllowUnused A boolean flag indicating whether partial fills\n     *                        are supported by the calling function.\n     * @param revertOnInvalid A boolean indicating whether to revert if the\n     *                        order has been cancelled or filled beyond the\n     *                        allowable amount.\n     *\n     * @return valid A boolean indicating whether the order is valid.\n     */\n    function _verifyOrderStatus(\n        bytes32 orderHash,\n        OrderStatus memory orderStatus,\n        bool onlyAllowUnused,\n        bool revertOnInvalid\n    ) internal pure returns (bool valid) {\n        // Ensure that the order has not been cancelled.\n        if (orderStatus.isCancelled) {\n            // Only revert if revertOnInvalid has been supplied as true.\n            if (revertOnInvalid) {\n                revert OrderIsCancelled(orderHash);\n            }\n\n            // Return false as the order status is invalid.\n            return false;\n        }\n\n        // If the order is not entirely unused...\n        if (orderStatus.numerator != 0) {\n            // ensure the order has not been partially filled when not allowed.\n            if (onlyAllowUnused) {\n                // Always revert on partial fills when onlyAllowUnused is true.\n                revert OrderPartiallyFilled(orderHash);\n                // Otherwise, ensure that order has not been entirely filled.\n            } else if (orderStatus.numerator >= orderStatus.denominator) {\n                // Only revert if revertOnInvalid has been supplied as true.\n                if (revertOnInvalid) {\n                    revert OrderAlreadyFilled(orderHash);\n                }\n\n                // Return false as the order status is invalid.\n                return false;\n            }\n        }\n\n        // Return true as the order status is valid.\n        valid = true;\n    }\n}\n"
      },
      "seaport/contracts/lib/ConsiderationConstants.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\n/*\n * -------------------------- Disambiguation & Other Notes ---------------------\n *    - The term \"head\" is used as it is in the documentation for ABI encoding,\n *      but only in reference to dynamic types, i.e. it always refers to the\n *      offset or pointer to the body of a dynamic type. In calldata, the head\n *      is always an offset (relative to the parent object), while in memory,\n *      the head is always the pointer to the body. More information found here:\n *      https://docs.soliditylang.org/en/v0.8.13/abi-spec.html#argument-encoding\n *        - Note that the length of an array is separate from and precedes the\n *          head of the array.\n *\n *    - The term \"body\" is used in place of the term \"head\" used in the ABI\n *      documentation. It refers to the start of the data for a dynamic type,\n *      e.g. the first word of a struct or the first word of the first element\n *      in an array.\n *\n *    - The term \"pointer\" is used to describe the absolute position of a value\n *      and never an offset relative to another value.\n *        - The suffix \"_ptr\" refers to a memory pointer.\n *        - The suffix \"_cdPtr\" refers to a calldata pointer.\n *\n *    - The term \"offset\" is used to describe the position of a value relative\n *      to some parent value. For example, OrderParameters_conduit_offset is the\n *      offset to the \"conduit\" value in the OrderParameters struct relative to\n *      the start of the body.\n *        - Note: Offsets are used to derive pointers.\n *\n *    - Some structs have pointers defined for all of their fields in this file.\n *      Lines which are commented out are fields that are not used in the\n *      codebase but have been left in for readability.\n */\n\n// Declare constants for name, version, and reentrancy sentinel values.\n\n// Name is right padded, so it touches the length which is left padded.\n// This lets us write both values at once.\n// Length goes at byte 63, and name fills bytes 64-77, so we write\n// both values left-padded to 45.\nuint256 constant NameLengthPtr = 45;\nuint256 constant NameWithLength = 0x0d436F6E73696465726174696F6E;\n\nuint256 constant Version = 0x31;\nuint256 constant Version_length = 1;\n\nuint256 constant _NOT_ENTERED = 1;\nuint256 constant _ENTERED = 2;\n\n// Common Offsets\n// Offsets for identically positioned fields shared by:\n// OfferItem, ConsiderationItem, SpentItem, ReceivedItem\n\nuint256 constant Common_token_offset = 0x20;\nuint256 constant Common_identifier_offset = 0x40;\nuint256 constant Common_amount_offset = 0x60;\n\nuint256 constant ReceivedItem_size = 0xa0;\nuint256 constant ReceivedItem_amount_offset = 0x60;\nuint256 constant ReceivedItem_recipient_offset = 0x80;\n\nuint256 constant ReceivedItem_CommonParams_size = 0x60;\n\nuint256 constant ConsiderationItem_recipient_offset = 0xa0;\n// Store the same constant in an abbreviated format for a line length fix.\nuint256 constant ConsiderItem_recipient_offset = 0xa0;\n\nuint256 constant Execution_offerer_offset = 0x20;\nuint256 constant Execution_conduit_offset = 0x40;\n\nuint256 constant InvalidFulfillmentComponentData_error_signature = (\n    0x7fda727900000000000000000000000000000000000000000000000000000000\n);\nuint256 constant InvalidFulfillmentComponentData_error_len = 0x20;\n\nuint256 constant Panic_error_signature = (\n    0x4e487b7100000000000000000000000000000000000000000000000000000000\n);\nuint256 constant Panic_error_offset = 0x04;\nuint256 constant Panic_error_length = 0x24;\nuint256 constant Panic_arithmetic = 0x11;\n\nuint256 constant MissingItemAmount_error_signature = (\n    0x91b3e51400000000000000000000000000000000000000000000000000000000\n);\nuint256 constant MissingItemAmount_error_len = 0x20;\n\nuint256 constant OrderParameters_offer_head_offset = 0x40;\nuint256 constant OrderParameters_consideration_head_offset = 0x60;\nuint256 constant OrderParameters_conduit_offset = 0x120;\nuint256 constant OrderParameters_nonce_offset = 0x140;\n\nuint256 constant Fulfillment_itemIndex_offset = 0x20;\n\nuint256 constant AdvancedOrder_numerator_offset = 0x20;\n\nuint256 constant OneWord = 0x20;\nuint256 constant TwoWords = 0x40;\nuint256 constant ThreeWords = 0x60;\nuint256 constant FourWords = 0x80;\nuint256 constant FiveWords = 0xa0;\n\nuint256 constant FreeMemoryPointerSlot = 0x40;\nuint256 constant ZeroSlot = 0x60;\nuint256 constant DefaultFreeMemoryPointer = 0x80;\n\nuint256 constant Slot0x80 = 0x80;\nuint256 constant Slot0xA0 = 0xa0;\n\nuint256 constant BasicOrder_endAmount_cdPtr = 0x104;\n\nuint256 constant BasicOrder_considerationHashesArray_ptr = 0x160;\n\nuint256 constant EIP712_Order_size = 0x180;\nuint256 constant EIP712_OfferItem_size = 0xc0;\nuint256 constant EIP712_ConsiderationItem_size = 0xe0;\nuint256 constant AdditionalRecipients_size = 0x40;\n\nuint256 constant EIP712_DomainSeparator_offset = 0x02;\nuint256 constant EIP712_OrderHash_offset = 0x22;\nuint256 constant EIP712_DigestPayload_size = 0x42;\n\nuint256 constant receivedItemsHash_ptr = 0x60;\n\n/*\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\n *  data for OrderFulfilled\n *\n *   event OrderFulfilled(\n *     bytes32 orderHash,\n *     address indexed offerer,\n *     address indexed zone,\n *     address fulfiller,\n *     SpentItem[] offer,\n *       > (itemType, token, id, amount)\n *     ReceivedItem[] consideration\n *       > (itemType, token, id, amount, recipient)\n *   )\n *\n *  - 0x00: orderHash\n *  - 0x20: fulfiller\n *  - 0x40: offer offset (0x80)\n *  - 0x60: consideration offset (0x120)\n *  - 0x80: offer.length (1)\n *  - 0xa0: offerItemType\n *  - 0xc0: offerToken\n *  - 0xe0: offerIdentifier\n *  - 0x100: offerAmount\n *  - 0x120: consideration.length (1 + additionalRecipients.length)\n *  - 0x140: considerationItemType\n *  - 0x160: considerationToken\n *  - 0x180: considerationIdentifier\n *  - 0x1a0: considerationAmount\n *  - 0x1c0: considerationRecipient\n *  - ...\n */\n\n// Minimum length of the OrderFulfilled event data.\n// Must be added to the size of the ReceivedItem array for additionalRecipients\n// (0xa0 * additionalRecipients.length) to calculate full size of the buffer.\nuint256 constant OrderFulfilled_baseSize = 0x1e0;\nuint256 constant OrderFulfilled_selector = (\n    0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31\n);\n\n// Minimum offset in memory to OrderFulfilled event data.\n// Must be added to the size of the EIP712 hash array for additionalRecipients\n// (32 * additionalRecipients.length) to calculate the pointer to event data.\nuint256 constant OrderFulfilled_baseOffset = 0x180;\nuint256 constant OrderFulfilled_consideration_length_baseOffset = 0x2a0;\nuint256 constant OrderFulfilled_offer_length_baseOffset = 0x200;\n\n// uint256 constant OrderFulfilled_orderHash_offset = 0x00;\nuint256 constant OrderFulfilled_fulfiller_offset = 0x20;\nuint256 constant OrderFulfilled_offer_head_offset = 0x40;\nuint256 constant OrderFulfilled_offer_body_offset = 0x80;\nuint256 constant OrderFulfilled_consideration_head_offset = 0x60;\nuint256 constant OrderFulfilled_consideration_body_offset = 0x120;\n\n// BasicOrderParameters\nuint256 constant BasicOrder_parameters_cdPtr = 0x04;\nuint256 constant BasicOrder_considerationToken_cdPtr = 0x24;\n// uint256 constant BasicOrder_considerationIdentifier_cdPtr = 0x44;\nuint256 constant BasicOrder_considerationAmount_cdPtr = 0x64;\nuint256 constant BasicOrder_offerer_cdPtr = 0x84;\nuint256 constant BasicOrder_zone_cdPtr = 0xa4;\nuint256 constant BasicOrder_offerToken_cdPtr = 0xc4;\n// uint256 constant BasicOrder_offerIdentifier_cdPtr = 0xe4;\nuint256 constant BasicOrder_offerAmount_cdPtr = 0x104;\nuint256 constant BasicOrder_basicOrderType_cdPtr = 0x124;\nuint256 constant BasicOrder_startTime_cdPtr = 0x144;\n// uint256 constant BasicOrder_endTime_cdPtr = 0x164;\n// uint256 constant BasicOrder_zoneHash_cdPtr = 0x184;\n// uint256 constant BasicOrder_salt_cdPtr = 0x1a4;\nuint256 constant BasicOrder_offererConduit_cdPtr = 0x1c4;\nuint256 constant BasicOrder_fulfillerConduit_cdPtr = 0x1e4;\nuint256 constant BasicOrder_totalOriginalAdditionalRecipients_cdPtr = 0x204;\nuint256 constant BasicOrder_additionalRecipients_head_cdPtr = 0x224;\nuint256 constant BasicOrder_signature_cdPtr = 0x244;\nuint256 constant BasicOrder_additionalRecipients_length_cdPtr = 0x264;\nuint256 constant BasicOrder_additionalRecipients_data_cdPtr = 0x284;\n\nuint256 constant BasicOrder_parameters_ptr = 0x20;\n\n/*\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\n *  EIP712 data for ConsiderationItem\n *   - 0x80: ConsiderationItem EIP-712 typehash (constant)\n *   - 0xa0: itemType\n *   - 0xc0: token\n *   - 0xe0: identifier\n *   - 0x100: startAmount\n *   - 0x120: endAmount\n *   - 0x140: recipient\n */\nuint256 constant BasicOrder_considerationItem_typeHash_ptr = 0x80; // memoryPtr\nuint256 constant BasicOrder_considerationItem_itemType_ptr = 0xa0;\nuint256 constant BasicOrder_considerationItem_token_ptr = 0xc0;\nuint256 constant BasicOrder_considerationItem_identifier_ptr = 0xe0;\nuint256 constant BasicOrder_considerationItem_startAmount_ptr = 0x100;\nuint256 constant BasicOrder_considerationItem_endAmount_ptr = 0x120;\n// uint256 constant BasicOrder_considerationItem_recipient_ptr = 0x140;\n\n/*\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\n *  EIP712 data for OfferItem\n *   - 0x80:  OfferItem EIP-712 typehash (constant)\n *   - 0xa0:  itemType\n *   - 0xc0:  token\n *   - 0xe0:  identifier (reused for offeredItemsHash)\n *   - 0x100: startAmount\n *   - 0x120: endAmount\n */\nuint256 constant BasicOrder_offerItem_typeHash_ptr = DefaultFreeMemoryPointer;\nuint256 constant BasicOrder_offerItem_itemType_ptr = 0xa0;\nuint256 constant BasicOrder_offerItem_token_ptr = 0xc0;\n// uint256 constant BasicOrder_offerItem_identifier_ptr = 0xe0;\n// uint256 constant BasicOrder_offerItem_startAmount_ptr = 0x100;\nuint256 constant BasicOrder_offerItem_endAmount_ptr = 0x120;\n\n/*\n *  Memory layout in _prepareBasicFulfillmentFromCalldata of\n *  EIP712 data for Order\n *   - 0x80:   Order EIP-712 typehash (constant)\n *   - 0xa0:   orderParameters.offerer\n *   - 0xc0:   orderParameters.zone\n *   - 0xe0:   keccak256(abi.encodePacked(offerHashes))\n *   - 0x100:  keccak256(abi.encodePacked(considerationHashes))\n *   - 0x120:  orderType\n *   - 0x140:  startTime\n *   - 0x160:  endTime\n *   - 0x180:  zoneHash\n *   - 0x1a0:  salt\n *   - 0x1c0:  conduit\n *   - 0x1e0:  _nonces[orderParameters.offerer] (from storage)\n */\nuint256 constant BasicOrder_order_typeHash_ptr = 0x80;\nuint256 constant BasicOrder_order_offerer_ptr = 0xa0;\n// uint256 constant BasicOrder_order_zone_ptr = 0xc0;\nuint256 constant BasicOrder_order_offerHashes_ptr = 0xe0;\nuint256 constant BasicOrder_order_considerationHashes_ptr = 0x100;\nuint256 constant BasicOrder_order_orderType_ptr = 0x120;\nuint256 constant BasicOrder_order_startTime_ptr = 0x140;\n// uint256 constant BasicOrder_order_endTime_ptr = 0x160;\n// uint256 constant BasicOrder_order_zoneHash_ptr = 0x180;\n// uint256 constant BasicOrder_order_salt_ptr = 0x1a0;\n// uint256 constant BasicOrder_order_conduitKey_ptr = 0x1c0;\nuint256 constant BasicOrder_order_nonce_ptr = 0x1e0;\nuint256 constant BasicOrder_additionalRecipients_head_ptr = 0x240;\nuint256 constant BasicOrder_signature_ptr = 0x260;\n\n// Signature-related\nbytes32 constant EIP2098_allButHighestBitMask = (\n    0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n);\n\n// abi.encodeWithSignature(\"NoContract(address)\")\nuint256 constant NoContract_error_signature = (\n    0x5f15d67200000000000000000000000000000000000000000000000000000000\n);\nuint256 constant NoContract_error_sig_ptr = 0x0;\nuint256 constant NoContract_error_token_ptr = 0x4;\nuint256 constant NoContract_error_length = 0x24; // 4 + 32 == 36\n\nuint256 constant EIP_712_PREFIX = (\n    0x1901000000000000000000000000000000000000000000000000000000000000\n);\n\nuint256 constant ExtraGasBuffer = 0x20;\nuint256 constant CostPerWord = 3;\nuint256 constant MemoryExpansionCoefficient = 0x200;\n\nuint256 constant Create2AddressDerivation_ptr = 0x0b;\nuint256 constant Create2AddressDerivation_length = 0x55;\n\nuint256 constant MaskOverByteTwelve = (\n    0x0000000000000000000000ff0000000000000000000000000000000000000000\n);\n\nuint256 constant MaskOverLastTwentyBytes = (\n    0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff\n);\n\nuint256 constant MaskOverFirstFourBytes = (\n    0xffffffff00000000000000000000000000000000000000000000000000000000\n);\n\nuint256 constant Conduit_execute_signature = (\n    0x4ce34aa200000000000000000000000000000000000000000000000000000000\n);\n\nuint256 constant Conduit_execute_ConduitTransfer_ptr = 0x20;\nuint256 constant Conduit_execute_ConduitTransfer_length = 0x01;\n\nuint256 constant Conduit_execute_ConduitTransfer_offset_ptr = 0x04;\nuint256 constant Conduit_execute_ConduitTransfer_length_ptr = 0x24;\nuint256 constant Conduit_execute_transferItemType_ptr = 0x44;\nuint256 constant Conduit_execute_transferToken_ptr = 0x64;\nuint256 constant Conduit_execute_transferFrom_ptr = 0x84;\nuint256 constant Conduit_execute_transferTo_ptr = 0xa4;\nuint256 constant Conduit_execute_transferIdentifier_ptr = 0xc4;\nuint256 constant Conduit_execute_transferAmount_ptr = 0xe4;\n\nuint256 constant OneConduitExecute_size = 0x104;\n\n// Sentinel value to indicate that the conduit accumulator is not armed.\nuint256 constant AccumulatorDisarmed = 0x20;\nuint256 constant AccumulatorArmed = 0x40;\nuint256 constant Accumulator_conduitKey_ptr = 0x20;\nuint256 constant Accumulator_selector_ptr = 0x40;\nuint256 constant Accumulator_array_offset_ptr = 0x44;\nuint256 constant Accumulator_array_length_ptr = 0x64;\n\nuint256 constant Accumulator_itemSizeOffsetDifference = 0x3c;\n\nuint256 constant Accumulator_array_offset = 0x20;\nuint256 constant Conduit_transferItem_size = 0xc0;\nuint256 constant Conduit_transferItem_token_ptr = 0x20;\nuint256 constant Conduit_transferItem_from_ptr = 0x40;\nuint256 constant Conduit_transferItem_to_ptr = 0x60;\nuint256 constant Conduit_transferItem_identifier_ptr = 0x80;\nuint256 constant Conduit_transferItem_amount_ptr = 0xa0;\n"
      },
      "seaport/contracts/lib/Assertions.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\nimport { OrderParameters } from \"./ConsiderationStructs.sol\";\n\nimport { GettersAndDerivers } from \"./GettersAndDerivers.sol\";\n\nimport { TokenTransferrerErrors } from \"../interfaces/TokenTransferrerErrors.sol\";\n\nimport { NonceManager } from \"./NonceManager.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\n/**\n * @title Assertions\n * @author 0age\n * @notice Assertions contains logic for making various assertions that do not\n *         fit neatly within a dedicated semantic scope.\n */\ncontract Assertions is\n    GettersAndDerivers,\n    NonceManager,\n    TokenTransferrerErrors\n{\n    /**\n     * @dev Derive and set hashes, reference chainId, and associated domain\n     *      separator during deployment.\n     *\n     * @param conduitController A contract that deploys conduits, or proxies\n     *                          that may optionally be used to transfer approved\n     *                          ERC20/721/1155 tokens.\n     */\n    constructor(address conduitController)\n        GettersAndDerivers(conduitController)\n    {}\n\n    /**\n     * @dev Internal view function to to ensure that the supplied consideration\n     *      array length on a given set of order parameters is not less than the\n     *      original consideration array length for that order and to retrieve\n     *      the current nonce for a given order's offerer and zone and use it to\n     *      derive the order hash.\n     *\n     * @param orderParameters The parameters of the order to hash.\n     *\n     * @return The hash.\n     */\n    function _assertConsiderationLengthAndGetNoncedOrderHash(\n        OrderParameters memory orderParameters\n    ) internal view returns (bytes32) {\n        // Ensure supplied consideration array length is not less than original.\n        _assertConsiderationLengthIsNotLessThanOriginalConsiderationLength(\n            orderParameters.consideration.length,\n            orderParameters.totalOriginalConsiderationItems\n        );\n\n        // Derive and return order hash using current nonce for the offerer.\n        return\n            _deriveOrderHash(\n                orderParameters,\n                _getNonce(orderParameters.offerer)\n            );\n    }\n\n    /**\n     * @dev Internal pure function to ensure that the supplied consideration\n     *      array length for an order to be fulfilled is not less than the\n     *      original consideration array length for that order.\n     *\n     * @param suppliedConsiderationItemTotal The number of consideration items\n     *                                       supplied when fulfilling the order.\n     * @param originalConsiderationItemTotal The number of consideration items\n     *                                       supplied on initial order creation.\n     */\n    function _assertConsiderationLengthIsNotLessThanOriginalConsiderationLength(\n        uint256 suppliedConsiderationItemTotal,\n        uint256 originalConsiderationItemTotal\n    ) internal pure {\n        // Ensure supplied consideration array length is not less than original.\n        if (suppliedConsiderationItemTotal < originalConsiderationItemTotal) {\n            revert MissingOriginalConsiderationItems();\n        }\n    }\n\n    /**\n     * @dev Internal pure function to ensure that a given item amount is not\n     *      zero.\n     *\n     * @param amount The amount to check.\n     */\n    function _assertNonZeroAmount(uint256 amount) internal pure {\n        // Revert if the supplied amont is equal to zero.\n        if (amount == 0) {\n            revert MissingItemAmount();\n        }\n    }\n\n    /**\n     * @dev Internal pure function to validate calldata offsets for dynamic\n     *      types in BasicOrderParameters. This ensures that functions using the\n     *      calldata object normally will be using the same data as the assembly\n     *      functions. Note that no parameters are supplied as all basic order\n     *      functions use the same calldata encoding.\n     */\n    function _assertValidBasicOrderParameterOffsets() internal pure {\n        // Declare a boolean designating basic order parameter offset validity.\n        bool validOffsets;\n\n        // Utilize assembly in order to read offset data directly from calldata.\n        assembly {\n            /*\n             * Checks:\n             * 1. Order parameters struct offset == 0x20\n             * 2. Additional recipients arr offset == 0x240\n             * 3. Signature offset == 0x260 + (recipients.length * 0x40)\n             */\n            validOffsets := and(\n                // Order parameters at calldata 0x04 must have offset of 0x20.\n                eq(\n                    calldataload(BasicOrder_parameters_cdPtr),\n                    BasicOrder_parameters_ptr\n                ),\n                // Additional recipients at cd 0x224 must have offset of 0x240.\n                eq(\n                    calldataload(BasicOrder_additionalRecipients_head_cdPtr),\n                    BasicOrder_additionalRecipients_head_ptr\n                )\n            )\n            validOffsets := and(\n                validOffsets,\n                eq(\n                    // Load signature offset from calldata 0x244.\n                    calldataload(BasicOrder_signature_cdPtr),\n                    // Derive expected offset as start of recipients + len * 64.\n                    add(\n                        BasicOrder_signature_ptr,\n                        mul(\n                            // Additional recipients length at calldata 0x264.\n                            calldataload(\n                                BasicOrder_additionalRecipients_length_cdPtr\n                            ),\n                            // Each additional recipient has a length of 0x40.\n                            AdditionalRecipients_size\n                        )\n                    )\n                )\n            )\n        }\n\n        // Revert with an error if basic order parameter offsets are invalid.\n        if (!validOffsets) {\n            revert InvalidBasicOrderParameterEncoding();\n        }\n    }\n}\n"
      },
      "seaport/contracts/lib/SignatureVerification.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\nimport { EIP1271Interface } from \"../interfaces/EIP1271Interface.sol\";\n\n// prettier-ignore\nimport {\n    SignatureVerificationErrors\n} from \"../interfaces/SignatureVerificationErrors.sol\";\n\nimport { LowLevelHelpers } from \"./LowLevelHelpers.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\n/**\n * @title SignatureVerification\n * @author 0age\n * @notice SignatureVerification contains logic for verifying signatures.\n */\ncontract SignatureVerification is SignatureVerificationErrors, LowLevelHelpers {\n    /**\n     * @dev Internal view function to verify the signature of an order. An\n     *      ERC-1271 fallback will be attempted if either the signature length\n     *      is not 32 or 33 bytes or if the recovered signer does not match the\n     *      supplied signer. Note that in cases where a 32 or 33 byte signature\n     *      is supplied, only standard ECDSA signatures that recover to a\n     *      non-zero address are supported.\n     *\n     * @param signer    The signer for the order.\n     * @param digest    The digest to verify the signature against.\n     * @param signature A signature from the signer indicating that the order\n     *                  has been approved.\n     */\n    function _assertValidSignature(\n        address signer,\n        bytes32 digest,\n        bytes memory signature\n    ) internal view {\n        // Declare r, s, and v signature parameters.\n        bytes32 r;\n        bytes32 s;\n        uint8 v;\n\n        // If signature contains 64 bytes, parse as EIP-2098 signature (r+s&v).\n        if (signature.length == 64) {\n            // Declare temporary vs that will be decomposed into s and v.\n            bytes32 vs;\n\n            // Read each parameter directly from the signature's memory region.\n            assembly {\n                // Put the first word from the signature onto the stack as r.\n                r := mload(add(signature, OneWord))\n\n                // Put the second word from the signature onto the stack as vs.\n                vs := mload(add(signature, TwoWords))\n\n                // Extract canonical s from vs (all but the highest bit).\n                s := and(vs, EIP2098_allButHighestBitMask)\n\n                // Extract yParity from highest bit of vs and add 27 to get v.\n                v := add(shr(255, vs), 27)\n            }\n        } else if (signature.length == 65) {\n            // If signature is 65 bytes, parse as a standard signature (r+s+v).\n            // Read each parameter directly from the signature's memory region.\n            assembly {\n                // Place first word on the stack at r.\n                r := mload(add(signature, OneWord))\n\n                // Place second word on the stack at s.\n                s := mload(add(signature, TwoWords))\n\n                // Place final byte on the stack at v.\n                v := byte(0, mload(add(signature, ThreeWords)))\n            }\n\n            // Ensure v value is properly formatted.\n            if (v != 27 && v != 28) {\n                revert BadSignatureV(v);\n            }\n        } else {\n            // For all other signature lengths, try verification via EIP-1271.\n            // Attempt EIP-1271 static call to signer in case it's a contract.\n            _assertValidEIP1271Signature(signer, digest, signature);\n\n            // Return early if the ERC-1271 signature check succeeded.\n            return;\n        }\n\n        // Attempt to recover signer using the digest and signature parameters.\n        address recoveredSigner = ecrecover(digest, v, r, s);\n\n        // Disallow invalid signers.\n        if (recoveredSigner == address(0)) {\n            revert InvalidSignature();\n            // Should a signer be recovered, but it doesn't match the signer...\n        } else if (recoveredSigner != signer) {\n            // Attempt EIP-1271 static call to signer in case it's a contract.\n            _assertValidEIP1271Signature(signer, digest, signature);\n        }\n    }\n\n    /**\n     * @dev Internal view function to verify the signature of an order using\n     *      ERC-1271 (i.e. contract signatures via `isValidSignature`). Note\n     *      that, in contrast to standard ECDSA signatures, 1271 signatures may\n     *      be valid in certain contexts and invalid in others, or vice versa;\n     *      orders that validate signatures ahead of time must explicitly cancel\n     *      those orders to invalidate them.\n     *\n     * @param signer    The signer for the order.\n     * @param digest    The signature digest, derived from the domain separator\n     *                  and the order hash.\n     * @param signature A signature (or other data) used to validate the digest.\n     */\n    function _assertValidEIP1271Signature(\n        address signer,\n        bytes32 digest,\n        bytes memory signature\n    ) internal view {\n        // Attempt an EIP-1271 staticcall to the signer.\n        bool success = _staticcall(\n            signer,\n            abi.encodeWithSelector(\n                EIP1271Interface.isValidSignature.selector,\n                digest,\n                signature\n            )\n        );\n\n        // If the call fails...\n        if (!success) {\n            // Revert and pass reason along if one was returned.\n            _revertWithReasonIfOneIsReturned();\n\n            // Otherwise, revert with a generic error message.\n            revert BadContractSignature();\n        }\n\n        // Ensure result was extracted and matches EIP-1271 magic value.\n        if (_doesNotMatchMagic(EIP1271Interface.isValidSignature.selector)) {\n            revert InvalidSigner();\n        }\n    }\n}\n"
      },
      "seaport/contracts/lib/GettersAndDerivers.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\nimport { OrderParameters } from \"./ConsiderationStructs.sol\";\n\nimport { ConsiderationBase } from \"./ConsiderationBase.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\n/**\n * @title GettersAndDerivers\n * @author 0age\n * @notice ConsiderationInternal contains pure and internal view functions\n *         related to getting or deriving various values.\n */\ncontract GettersAndDerivers is ConsiderationBase {\n    /**\n     * @dev Derive and set hashes, reference chainId, and associated domain\n     *      separator during deployment.\n     *\n     * @param conduitController A contract that deploys conduits, or proxies\n     *                          that may optionally be used to transfer approved\n     *                          ERC20/721/1155 tokens.\n     */\n    constructor(address conduitController)\n        ConsiderationBase(conduitController)\n    {}\n\n    /**\n     * @dev Internal view function to derive the order hash for a given order.\n     *      Note that only the original consideration items are included in the\n     *      order hash, as additional consideration items may be supplied by the\n     *      caller.\n     *\n     * @param orderParameters The parameters of the order to hash.\n     * @param nonce           The nonce of the order to hash.\n     *\n     * @return orderHash The hash.\n     */\n    function _deriveOrderHash(\n        OrderParameters memory orderParameters,\n        uint256 nonce\n    ) internal view returns (bytes32 orderHash) {\n        // Get length of original consideration array and place it on the stack.\n        uint256 originalConsiderationLength = (\n            orderParameters.totalOriginalConsiderationItems\n        );\n\n        /*\n         * Memory layout for an array of structs (dynamic or not) is similar\n         * to ABI encoding of dynamic types, with a head segment followed by\n         * a data segment. The main difference is that the head of an element\n         * is a memory pointer rather than an offset.\n         */\n\n        // Declare a variable for the derived hash of the offer array.\n        bytes32 offerHash;\n\n        // Read offer item EIP-712 typehash from runtime code & place on stack.\n        bytes32 typeHash = _OFFER_ITEM_TYPEHASH;\n\n        // Utilize assembly so that memory regions can be reused across hashes.\n        assembly {\n            // Retrieve the free memory pointer and place on the stack.\n            let hashArrPtr := mload(FreeMemoryPointerSlot)\n\n            // Get the pointer to the offers array.\n            let offerArrPtr := mload(add(orderParameters, TwoWords))\n\n            // Load the length.\n            let offerLength := mload(offerArrPtr)\n\n            // Set the pointer to the first offer's head.\n            offerArrPtr := add(offerArrPtr, OneWord)\n\n            // Iterate over the offer items.\n            // prettier-ignore\n            for { let i := 0 } lt(i, offerLength) {\n                i := add(i, 1)\n            } {\n                // Read the pointer to the offer data and subtract one word\n                // to get typeHash pointer.\n                let ptr := sub(mload(offerArrPtr), OneWord)\n\n                // Read the current value before the offer data.\n                let value := mload(ptr)\n\n                // Write the type hash to the previous word.\n                mstore(ptr, typeHash)\n\n                // Take the EIP712 hash and store it in the hash array.\n                mstore(hashArrPtr, keccak256(ptr, EIP712_OfferItem_size))\n\n                // Restore the previous word.\n                mstore(ptr, value)\n\n                // Increment the array pointers by one word.\n                offerArrPtr := add(offerArrPtr, OneWord)\n                hashArrPtr := add(hashArrPtr, OneWord)\n            }\n\n            // Derive the offer hash using the hashes of each item.\n            offerHash := keccak256(\n                mload(FreeMemoryPointerSlot),\n                mul(offerLength, OneWord)\n            )\n        }\n\n        // Declare a variable for the derived hash of the consideration array.\n        bytes32 considerationHash;\n\n        // Read consideration item typehash from runtime code & place on stack.\n        typeHash = _CONSIDERATION_ITEM_TYPEHASH;\n\n        // Utilize assembly so that memory regions can be reused across hashes.\n        assembly {\n            // Retrieve the free memory pointer and place on the stack.\n            let hashArrPtr := mload(FreeMemoryPointerSlot)\n\n            // Get the pointer to the consideration array.\n            let considerationArrPtr := add(\n                mload(\n                    add(\n                        orderParameters,\n                        OrderParameters_consideration_head_offset\n                    )\n                ),\n                OneWord\n            )\n\n            // Iterate over the offer items (not including tips).\n            // prettier-ignore\n            for { let i := 0 } lt(i, originalConsiderationLength) {\n                i := add(i, 1)\n            } {\n                // Read the pointer to the consideration data and subtract one\n                // word to get typeHash pointer.\n                let ptr := sub(mload(considerationArrPtr), OneWord)\n\n                // Read the current value before the consideration data.\n                let value := mload(ptr)\n\n                // Write the type hash to the previous word.\n                mstore(ptr, typeHash)\n\n                // Take the EIP712 hash and store it in the hash array.\n                mstore(hashArrPtr, keccak256(ptr, EIP712_ConsiderationItem_size))\n\n                // Restore the previous word.\n                mstore(ptr, value)\n\n                // Increment the array pointers by one word.\n                considerationArrPtr := add(considerationArrPtr, OneWord)\n                hashArrPtr := add(hashArrPtr, OneWord)\n            }\n\n            // Derive the consideration hash using the hashes of each item.\n            considerationHash := keccak256(\n                mload(FreeMemoryPointerSlot),\n                mul(originalConsiderationLength, OneWord)\n            )\n        }\n\n        // Read order item EIP-712 typehash from runtime code & place on stack.\n        typeHash = _ORDER_TYPEHASH;\n\n        // Utilize assembly to access derived hashes & other arguments directly.\n        assembly {\n            // Retrieve pointer to the region located just behind parameters.\n            let typeHashPtr := sub(orderParameters, OneWord)\n\n            // Store the value at that pointer location to restore later.\n            let previousValue := mload(typeHashPtr)\n\n            // Store the order item EIP-712 typehash at the typehash location.\n            mstore(typeHashPtr, typeHash)\n\n            // Retrieve the pointer for the offer array head.\n            let offerHeadPtr := add(\n                orderParameters,\n                OrderParameters_offer_head_offset\n            )\n\n            // Retrieve the data pointer referenced by the offer head.\n            let offerDataPtr := mload(offerHeadPtr)\n\n            // Store the offer hash at the retrieved memory location.\n            mstore(offerHeadPtr, offerHash)\n\n            // Retrieve the pointer for the consideration array head.\n            let considerationHeadPtr := add(\n                orderParameters,\n                OrderParameters_consideration_head_offset\n            )\n\n            // Retrieve the data pointer referenced by the consideration head.\n            let considerationDataPtr := mload(considerationHeadPtr)\n\n            // Store the consideration hash at the retrieved memory location.\n            mstore(considerationHeadPtr, considerationHash)\n\n            // Retrieve the pointer for the nonce.\n            let noncePtr := add(orderParameters, OrderParameters_nonce_offset)\n\n            // Store the nonce at the retrieved memory location.\n            mstore(noncePtr, nonce)\n\n            // Derive the order hash using the full range of order parameters.\n            orderHash := keccak256(typeHashPtr, EIP712_Order_size)\n\n            // Restore the value previously held at typehash pointer location.\n            mstore(typeHashPtr, previousValue)\n\n            // Restore offer data pointer at the offer head pointer location.\n            mstore(offerHeadPtr, offerDataPtr)\n\n            // Restore consideration data pointer at the consideration head ptr.\n            mstore(considerationHeadPtr, considerationDataPtr)\n\n            // Restore original consideration item length at the nonce pointer.\n            mstore(noncePtr, originalConsiderationLength)\n        }\n    }\n\n    /**\n     * @dev Internal view function to derive the address of a given conduit\n     *      using a corresponding conduit key.\n     *\n     * @param conduitKey A bytes32 value indicating what corresponding conduit,\n     *                   if any, to source token approvals from. This value is\n     *                   the \"salt\" parameter supplied by the deployer (i.e. the\n     *                   conduit controller) when deploying the given conduit.\n     *\n     * @return conduit The address of the conduit associated with the given\n     *                 conduit key.\n     */\n    function _deriveConduit(bytes32 conduitKey)\n        internal\n        view\n        returns (address conduit)\n    {\n        // Read conduit controller address from runtime and place on the stack.\n        address conduitController = address(_CONDUIT_CONTROLLER);\n\n        // Read conduit creation code hash from runtime and place on the stack.\n        bytes32 conduitCreationCodeHash = _CONDUIT_CREATION_CODE_HASH;\n\n        // Leverage scratch space to perform an efficient hash.\n        assembly {\n            // Retrieve the free memory pointer; it will be replaced afterwards.\n            let freeMemoryPointer := mload(FreeMemoryPointerSlot)\n\n            // Place the control character and the conduit controller in scratch\n            // space; note that eleven bytes at the beginning are left unused.\n            mstore(0, or(MaskOverByteTwelve, conduitController))\n\n            // Place the conduit key in the next region of scratch space.\n            mstore(OneWord, conduitKey)\n\n            // Place conduit creation code hash in free memory pointer location.\n            mstore(TwoWords, conduitCreationCodeHash)\n\n            // Derive conduit by hashing and applying a mask over last 20 bytes.\n            conduit := and(\n                // Hash the relevant region.\n                keccak256(\n                    // The region starts at memory pointer 11.\n                    Create2AddressDerivation_ptr,\n                    // The region is 85 bytes long (1 + 20 + 32 + 32).\n                    Create2AddressDerivation_length\n                ),\n                // The address equals the last twenty bytes of the hash.\n                MaskOverLastTwentyBytes\n            )\n\n            // Restore the free memory pointer.\n            mstore(FreeMemoryPointerSlot, freeMemoryPointer)\n        }\n    }\n\n    /**\n     * @dev Internal view function to get the EIP-712 domain separator. If the\n     *      chainId matches the chainId set on deployment, the cached domain\n     *      separator will be returned; otherwise, it will be derived from\n     *      scratch.\n     */\n    function _domainSeparator() internal view returns (bytes32) {\n        // prettier-ignore\n        return block.chainid == _CHAIN_ID\n            ? _DOMAIN_SEPARATOR\n            : _deriveDomainSeparator();\n    }\n\n    /**\n     * @dev Internal view function to retrieve configuration information for\n     *      this contract.\n     *\n     * @return version           The contract version.\n     * @return domainSeparator   The domain separator for this contract.\n     * @return conduitController The conduit Controller set for this contract.\n     */\n    function _information()\n        internal\n        view\n        returns (\n            string memory version,\n            bytes32 domainSeparator,\n            address conduitController\n        )\n    {\n        // Derive the domain separator.\n        domainSeparator = _domainSeparator();\n\n        // Declare variable as immutables cannot be accessed within assembly.\n        conduitController = address(_CONDUIT_CONTROLLER);\n\n        // Allocate a string with the intended length.\n        version = new string(Version_length);\n\n        // Set the version as data on the newly allocated string.\n        assembly {\n            mstore(add(version, OneWord), shl(0xf8, Version))\n        }\n    }\n\n    /**\n     * @dev Internal pure function to efficiently derive an digest to sign for\n     *      an order in accordance with EIP-712.\n     *\n     * @param domainSeparator The domain separator.\n     * @param orderHash       The order hash.\n     *\n     * @return value The hash.\n     */\n    function _deriveEIP712Digest(bytes32 domainSeparator, bytes32 orderHash)\n        internal\n        pure\n        returns (bytes32 value)\n    {\n        // Leverage scratch space to perform an efficient hash.\n        assembly {\n            // Place the EIP-712 prefix at the start of scratch space.\n            mstore(0, EIP_712_PREFIX)\n\n            // Place the domain separator in the next region of scratch space.\n            mstore(EIP712_DomainSeparator_offset, domainSeparator)\n\n            // Place the order hash in scratch space, spilling into the first\n            // two bytes of the free memory pointer — this should never be set\n            // as memory cannot be expanded to that size, and will be zeroed out\n            // after the hash is performed.\n            mstore(EIP712_OrderHash_offset, orderHash)\n\n            // Hash the relevant region (65 bytes).\n            value := keccak256(0, EIP712_DigestPayload_size)\n\n            // Clear out the dirtied bits in the memory pointer.\n            mstore(EIP712_OrderHash_offset, 0)\n        }\n    }\n}\n"
      },
      "seaport/contracts/lib/NonceManager.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\n// prettier-ignore\nimport {\n    ConsiderationEventsAndErrors\n} from \"../interfaces/ConsiderationEventsAndErrors.sol\";\n\nimport { ReentrancyGuard } from \"./ReentrancyGuard.sol\";\n\n/**\n * @title NonceManager\n * @author 0age\n * @notice NonceManager contains a storage mapping and related functionality\n *         for retrieving and incrementing a per-offerer nonce.\n */\ncontract NonceManager is ConsiderationEventsAndErrors, ReentrancyGuard {\n    // Only orders signed using an offerer's current nonce are fulfillable.\n    mapping(address => uint256) private _nonces;\n\n    /**\n     * @dev Internal function to cancel all orders from a given offerer with a\n     *      given zone in bulk by incrementing a nonce. Note that only the\n     *      offerer may increment the nonce.\n     *\n     * @return newNonce The new nonce.\n     */\n    function _incrementNonce() internal returns (uint256 newNonce) {\n        // Ensure that the reentrancy guard is not currently set.\n        _assertNonReentrant();\n\n        // No need to check for overflow; nonce cannot be incremented that far.\n        unchecked {\n            // Increment current nonce for the supplied offerer.\n            newNonce = ++_nonces[msg.sender];\n        }\n\n        // Emit an event containing the new nonce.\n        emit NonceIncremented(newNonce, msg.sender);\n    }\n\n    /**\n     * @dev Internal view function to retrieve the current nonce for a given\n     *      offerer.\n     *\n     * @param offerer The offerer in question.\n     *\n     * @return currentNonce The current nonce.\n     */\n    function _getNonce(address offerer)\n        internal\n        view\n        returns (uint256 currentNonce)\n    {\n        // Return the nonce for the supplied offerer.\n        currentNonce = _nonces[offerer];\n    }\n}\n"
      },
      "seaport/contracts/lib/ConsiderationBase.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\n// prettier-ignore\nimport {\n    ConduitControllerInterface\n} from \"../interfaces/ConduitControllerInterface.sol\";\n\n// prettier-ignore\nimport {\n    ConsiderationEventsAndErrors\n} from \"../interfaces/ConsiderationEventsAndErrors.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\n/**\n * @title ConsiderationBase\n * @author 0age\n * @notice ConsiderationBase contains immutable constants and constructor logic.\n */\ncontract ConsiderationBase is ConsiderationEventsAndErrors {\n    // Precompute hashes, original chainId, and domain separator on deployment.\n    bytes32 internal immutable _NAME_HASH;\n    bytes32 internal immutable _VERSION_HASH;\n    bytes32 internal immutable _EIP_712_DOMAIN_TYPEHASH;\n    bytes32 internal immutable _OFFER_ITEM_TYPEHASH;\n    bytes32 internal immutable _CONSIDERATION_ITEM_TYPEHASH;\n    bytes32 internal immutable _ORDER_TYPEHASH;\n    uint256 internal immutable _CHAIN_ID;\n    bytes32 internal immutable _DOMAIN_SEPARATOR;\n\n    // Allow for interaction with the conduit controller.\n    ConduitControllerInterface internal immutable _CONDUIT_CONTROLLER;\n\n    // Cache the conduit creation code hash used by the conduit controller.\n    bytes32 internal immutable _CONDUIT_CREATION_CODE_HASH;\n\n    /**\n     * @dev Derive and set hashes, reference chainId, and associated domain\n     *      separator during deployment.\n     *\n     * @param conduitController A contract that deploys conduits, or proxies\n     *                          that may optionally be used to transfer approved\n     *                          ERC20/721/1155 tokens.\n     */\n    constructor(address conduitController) {\n        // Derive name and version hashes alongside required EIP-712 typehashes.\n        (\n            _NAME_HASH,\n            _VERSION_HASH,\n            _EIP_712_DOMAIN_TYPEHASH,\n            _OFFER_ITEM_TYPEHASH,\n            _CONSIDERATION_ITEM_TYPEHASH,\n            _ORDER_TYPEHASH\n        ) = _deriveTypehashes();\n\n        // Store the current chainId and derive the current domain separator.\n        _CHAIN_ID = block.chainid;\n        _DOMAIN_SEPARATOR = _deriveDomainSeparator();\n\n        // Set the supplied conduit controller.\n        _CONDUIT_CONTROLLER = ConduitControllerInterface(conduitController);\n\n        // Retrieve the conduit creation code hash from the supplied controller.\n        (_CONDUIT_CREATION_CODE_HASH, ) = (\n            _CONDUIT_CONTROLLER.getConduitCodeHashes()\n        );\n    }\n\n    /**\n     * @dev Internal view function to derive the EIP-712 domain separator.\n     *\n     * @return The derived domain separator.\n     */\n    function _deriveDomainSeparator() internal view returns (bytes32) {\n        // prettier-ignore\n        return keccak256(\n            abi.encode(\n                _EIP_712_DOMAIN_TYPEHASH,\n                _NAME_HASH,\n                _VERSION_HASH,\n                block.chainid,\n                address(this)\n            )\n        );\n    }\n\n    /**\n     * @dev Internal pure function to retrieve the default name of this\n     *      contract and return.\n     *\n     * @return The name of this contract.\n     */\n    function _name() internal pure virtual returns (string memory) {\n        // Return the name of the contract.\n        assembly {\n            mstore(0, OneWord) // First element is the offset.\n            // Name is right padded, so it touches the length which is left\n            // padded. This enables writing both values at once.\n            mstore(NameLengthPtr, NameWithLength)\n            return(0, ThreeWords) // Return all three words.\n        }\n    }\n\n    /**\n     * @dev Internal pure function to retrieve the default name of this contract\n     *      as a string that can be used internally.\n     *\n     * @return The name of this contract.\n     */\n    function _nameString() internal pure virtual returns (string memory) {\n        // Return the name of the contract.\n        return \"Consideration\";\n    }\n\n    /**\n     * @dev Internal pure function to derive required EIP-712 typehashes and\n     *      other hashes during contract creation.\n     *\n     * @return nameHash                  The hash of the name of the contract.\n     * @return versionHash               The hash of the version string of the\n     *                                   contract.\n     * @return eip712DomainTypehash      The primary EIP-712 domain typehash.\n     * @return offerItemTypehash         The EIP-712 typehash for OfferItem\n     *                                   types.\n     * @return considerationItemTypehash The EIP-712 typehash for\n     *                                   ConsiderationItem types.\n     * @return orderTypehash             The EIP-712 typehash for Order types.\n     */\n    function _deriveTypehashes()\n        internal\n        pure\n        returns (\n            bytes32 nameHash,\n            bytes32 versionHash,\n            bytes32 eip712DomainTypehash,\n            bytes32 offerItemTypehash,\n            bytes32 considerationItemTypehash,\n            bytes32 orderTypehash\n        )\n    {\n        // Derive hash of the name of the contract.\n        nameHash = keccak256(bytes(_nameString()));\n\n        // Derive hash of the version string of the contract.\n        versionHash = keccak256(bytes(\"1\"));\n\n        // Construct the OfferItem type string.\n        // prettier-ignore\n        bytes memory offerItemTypeString = abi.encodePacked(\n            \"OfferItem(\",\n                \"uint8 itemType,\",\n                \"address token,\",\n                \"uint256 identifierOrCriteria,\",\n                \"uint256 startAmount,\",\n                \"uint256 endAmount\",\n            \")\"\n        );\n\n        // Construct the ConsiderationItem type string.\n        // prettier-ignore\n        bytes memory considerationItemTypeString = abi.encodePacked(\n            \"ConsiderationItem(\",\n                \"uint8 itemType,\",\n                \"address token,\",\n                \"uint256 identifierOrCriteria,\",\n                \"uint256 startAmount,\",\n                \"uint256 endAmount,\",\n                \"address recipient\",\n            \")\"\n        );\n\n        // Construct the OrderComponents type string, not including the above.\n        // prettier-ignore\n        bytes memory orderComponentsPartialTypeString = abi.encodePacked(\n            \"OrderComponents(\",\n                \"address offerer,\",\n                \"address zone,\",\n                \"OfferItem[] offer,\",\n                \"ConsiderationItem[] consideration,\",\n                \"uint8 orderType,\",\n                \"uint256 startTime,\",\n                \"uint256 endTime,\",\n                \"bytes32 zoneHash,\",\n                \"uint256 salt,\",\n                \"bytes32 conduitKey,\",\n                \"uint256 nonce\",\n            \")\"\n        );\n\n        // Construct the primary EIP-712 domain type string.\n        // prettier-ignore\n        eip712DomainTypehash = keccak256(\n            abi.encodePacked(\n                \"EIP712Domain(\",\n                    \"string name,\",\n                    \"string version,\",\n                    \"uint256 chainId,\",\n                    \"address verifyingContract\",\n                \")\"\n            )\n        );\n\n        // Derive the OfferItem type hash using the corresponding type string.\n        offerItemTypehash = keccak256(offerItemTypeString);\n\n        // Derive ConsiderationItem type hash using corresponding type string.\n        considerationItemTypehash = keccak256(considerationItemTypeString);\n\n        // Derive OrderItem type hash via combination of relevant type strings.\n        orderTypehash = keccak256(\n            abi.encodePacked(\n                orderComponentsPartialTypeString,\n                considerationItemTypeString,\n                offerItemTypeString\n            )\n        );\n    }\n}\n"
      },
      "seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\nimport { SpentItem, ReceivedItem } from \"../lib/ConsiderationStructs.sol\";\n\n/**\n * @title ConsiderationEventsAndErrors\n * @author 0age\n * @notice ConsiderationEventsAndErrors contains all events and errors.\n */\ninterface ConsiderationEventsAndErrors {\n    /**\n     * @dev Emit an event whenever an order is successfully fulfilled.\n     *\n     * @param orderHash     The hash of the fulfilled order.\n     * @param offerer       The offerer of the fulfilled order.\n     * @param zone          The zone of the fulfilled order.\n     * @param fulfiller     The fulfiller of the order, or the null address if\n     *                      there is no specific fulfiller (i.e. the order is\n     *                      part of a group of orders).\n     * @param offer         The offer items spent as part of the order.\n     * @param consideration The consideration items received as part of the\n     *                      order along with the recipients of each item.\n     */\n    event OrderFulfilled(\n        bytes32 orderHash,\n        address indexed offerer,\n        address indexed zone,\n        address fulfiller,\n        SpentItem[] offer,\n        ReceivedItem[] consideration\n    );\n\n    /**\n     * @dev Emit an event whenever an order is successfully cancelled.\n     *\n     * @param orderHash The hash of the cancelled order.\n     * @param offerer   The offerer of the cancelled order.\n     * @param zone      The zone of the cancelled order.\n     */\n    event OrderCancelled(\n        bytes32 orderHash,\n        address indexed offerer,\n        address indexed zone\n    );\n\n    /**\n     * @dev Emit an event whenever an order is explicitly validated. Note that\n     *      this event will not be emitted on partial fills even though they do\n     *      validate the order as part of partial fulfillment.\n     *\n     * @param orderHash The hash of the validated order.\n     * @param offerer   The offerer of the validated order.\n     * @param zone      The zone of the validated order.\n     */\n    event OrderValidated(\n        bytes32 orderHash,\n        address indexed offerer,\n        address indexed zone\n    );\n\n    /**\n     * @dev Emit an event whenever a nonce for a given offerer is incremented.\n     *\n     * @param newNonce The new nonce for the offerer.\n     * @param offerer  The offerer in question.\n     */\n    event NonceIncremented(uint256 newNonce, address indexed offerer);\n\n    /**\n     * @dev Revert with an error when attempting to fill an order that has\n     *      already been fully filled.\n     *\n     * @param orderHash The order hash on which a fill was attempted.\n     */\n    error OrderAlreadyFilled(bytes32 orderHash);\n\n    /**\n     * @dev Revert with an error when attempting to fill an order outside the\n     *      specified start time and end time.\n     */\n    error InvalidTime();\n\n    /**\n     * @dev Revert with an error when attempting to fill an order referencing an\n     *      invalid conduit (i.e. one that has not been deployed).\n     */\n    error InvalidConduit(bytes32 conduitKey, address conduit);\n\n    /**\n     * @dev Revert with an error when an order is supplied for fulfillment with\n     *      a consideration array that is shorter than the original array.\n     */\n    error MissingOriginalConsiderationItems();\n\n    /**\n     * @dev Revert with an error when a call to a conduit fails with revert data\n     *      that is too expensive to return.\n     */\n    error InvalidCallToConduit(address conduit);\n\n    /**\n     * @dev Revert with an error if a consideration amount has not been fully\n     *      zeroed out after applying all fulfillments.\n     *\n     * @param orderIndex         The index of the order with the consideration\n     *                           item with a shortfall.\n     * @param considerationIndex The index of the consideration item on the\n     *                           order.\n     * @param shortfallAmount    The unfulfilled consideration amount.\n     */\n    error ConsiderationNotMet(\n        uint256 orderIndex,\n        uint256 considerationIndex,\n        uint256 shortfallAmount\n    );\n\n    /**\n     * @dev Revert with an error when insufficient ether is supplied as part of\n     *      msg.value when fulfilling orders.\n     */\n    error InsufficientEtherSupplied();\n\n    /**\n     * @dev Revert with an error when an ether transfer reverts.\n     */\n    error EtherTransferGenericFailure(address account, uint256 amount);\n\n    /**\n     * @dev Revert with an error when a partial fill is attempted on an order\n     *      that does not specify partial fill support in its order type.\n     */\n    error PartialFillsNotEnabledForOrder();\n\n    /**\n     * @dev Revert with an error when attempting to fill an order that has been\n     *      cancelled.\n     *\n     * @param orderHash The hash of the cancelled order.\n     */\n    error OrderIsCancelled(bytes32 orderHash);\n\n    /**\n     * @dev Revert with an error when attempting to fill a basic order that has\n     *      been partially filled.\n     *\n     * @param orderHash The hash of the partially used order.\n     */\n    error OrderPartiallyFilled(bytes32 orderHash);\n\n    /**\n     * @dev Revert with an error when attempting to cancel an order as a caller\n     *      other than the indicated offerer or zone.\n     */\n    error InvalidCanceller();\n\n    /**\n     * @dev Revert with an error when supplying a fraction with a value of zero\n     *      for the numerator or denominator, or one where the numerator exceeds\n     *      the denominator.\n     */\n    error BadFraction();\n\n    /**\n     * @dev Revert with an error when a caller attempts to supply callvalue to a\n     *      non-payable basic order route or does not supply any callvalue to a\n     *      payable basic order route.\n     */\n    error InvalidMsgValue(uint256 value);\n\n    /**\n     * @dev Revert with an error when attempting to fill a basic order using\n     *      calldata not produced by default ABI encoding.\n     */\n    error InvalidBasicOrderParameterEncoding();\n\n    /**\n     * @dev Revert with an error when attempting to fulfill any number of\n     *      available orders when none are fulfillable.\n     */\n    error NoSpecifiedOrdersAvailable();\n}\n"
      },
      "seaport/contracts/lib/ReentrancyGuard.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\nimport { ReentrancyErrors } from \"../interfaces/ReentrancyErrors.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\n/**\n * @title ReentrancyGuard\n * @author 0age\n * @notice ReentrancyGuard contains a storage variable and related functionality\n *         for protecting against reentrancy.\n */\ncontract ReentrancyGuard is ReentrancyErrors {\n    // Prevent reentrant calls on protected functions.\n    uint256 private _reentrancyGuard;\n\n    /**\n     * @dev Initialize the reentrancy guard during deployment.\n     */\n    constructor() {\n        // Initialize the reentrancy guard in a cleared state.\n        _reentrancyGuard = _NOT_ENTERED;\n    }\n\n    /**\n     * @dev Internal function to ensure that the sentinel value for the\n     *      reentrancy guard is not currently set and, if not, to set the\n     *      sentinel value for the reentrancy guard.\n     */\n    function _setReentrancyGuard() internal {\n        // Ensure that the reentrancy guard is not already set.\n        _assertNonReentrant();\n\n        // Set the reentrancy guard.\n        _reentrancyGuard = _ENTERED;\n    }\n\n    /**\n     * @dev Internal function to unset the reentrancy guard sentinel value.\n     */\n    function _clearReentrancyGuard() internal {\n        // Clear the reentrancy guard.\n        _reentrancyGuard = _NOT_ENTERED;\n    }\n\n    /**\n     * @dev Internal view function to ensure that the sentinel value for the\n            reentrancy guard is not currently set.\n     */\n    function _assertNonReentrant() internal view {\n        // Ensure that the reentrancy guard is not currently set.\n        if (_reentrancyGuard != _NOT_ENTERED) {\n            revert NoReentrantCalls();\n        }\n    }\n}\n"
      },
      "seaport/contracts/interfaces/ReentrancyErrors.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\n/**\n * @title ReentrancyErrors\n * @author 0age\n * @notice ReentrancyErrors contains errors related to reentrancy.\n */\ninterface ReentrancyErrors {\n    /**\n     * @dev Revert with an error when a caller attempts to reenter a protected\n     *      function.\n     */\n    error NoReentrantCalls();\n}\n"
      },
      "seaport/contracts/interfaces/EIP1271Interface.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\ninterface EIP1271Interface {\n    function isValidSignature(bytes32 digest, bytes calldata signature)\n        external\n        view\n        returns (bytes4);\n}\n"
      },
      "seaport/contracts/interfaces/SignatureVerificationErrors.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\n/**\n * @title SignatureVerificationErrors\n * @author 0age\n * @notice SignatureVerificationErrors contains all errors related to signature\n *         verification.\n */\ninterface SignatureVerificationErrors {\n    /**\n     * @dev Revert with an error when a signature that does not contain a v\n     *      value of 27 or 28 has been supplied.\n     *\n     * @param v The invalid v value.\n     */\n    error BadSignatureV(uint8 v);\n\n    /**\n     * @dev Revert with an error when the signer recovered by the supplied\n     *      signature does not match the offerer or an allowed EIP-1271 signer\n     *      as specified by the offerer in the event they are a contract.\n     */\n    error InvalidSigner();\n\n    /**\n     * @dev Revert with an error when a signer cannot be recovered from the\n     *      supplied signature.\n     */\n    error InvalidSignature();\n\n    /**\n     * @dev Revert with an error when an EIP-1271 call to an account fails.\n     */\n    error BadContractSignature();\n}\n"
      },
      "seaport/contracts/lib/LowLevelHelpers.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\nimport \"./ConsiderationConstants.sol\";\n\n/**\n * @title LowLevelHelpers\n * @author 0age\n * @notice LowLevelHelpers contains logic for performing various low-level\n *         operations.\n */\ncontract LowLevelHelpers {\n    /**\n     * @dev Internal view function to staticcall an arbitrary target with given\n     *      calldata. Note that no data is written to memory and no contract\n     *      size check is performed.\n     *\n     * @param target   The account to staticcall.\n     * @param callData The calldata to supply when staticcalling the target.\n     *\n     * @return success The status of the staticcall to the target.\n     */\n    function _staticcall(address target, bytes memory callData)\n        internal\n        view\n        returns (bool success)\n    {\n        assembly {\n            // Perform the staticcall.\n            success := staticcall(\n                gas(),\n                target,\n                add(callData, OneWord),\n                mload(callData),\n                0,\n                0\n            )\n        }\n    }\n\n    /**\n     * @dev Internal view function to revert and pass along the revert reason if\n     *      data was returned by the last call and that the size of that data\n     *      does not exceed the currently allocated memory size.\n     */\n    function _revertWithReasonIfOneIsReturned() internal view {\n        assembly {\n            // If it returned a message, bubble it up as long as sufficient gas\n            // remains to do so:\n            if returndatasize() {\n                // Ensure that sufficient gas is available to copy returndata\n                // while expanding memory where necessary. Start by computing\n                // the word size of returndata and allocated memory.\n                let returnDataWords := div(returndatasize(), OneWord)\n\n                // Note: use the free memory pointer in place of msize() to work\n                // around a Yul warning that prevents accessing msize directly\n                // when the IR pipeline is activated.\n                let msizeWords := div(mload(FreeMemoryPointerSlot), OneWord)\n\n                // Next, compute the cost of the returndatacopy.\n                let cost := mul(CostPerWord, returnDataWords)\n\n                // Then, compute cost of new memory allocation.\n                if gt(returnDataWords, msizeWords) {\n                    cost := add(\n                        cost,\n                        add(\n                            mul(sub(returnDataWords, msizeWords), CostPerWord),\n                            div(\n                                sub(\n                                    mul(returnDataWords, returnDataWords),\n                                    mul(msizeWords, msizeWords)\n                                ),\n                                MemoryExpansionCoefficient\n                            )\n                        )\n                    )\n                }\n\n                // Finally, add a small constant and compare to gas remaining;\n                // bubble up the revert data if enough gas is still available.\n                if lt(add(cost, ExtraGasBuffer), gas()) {\n                    // Copy returndata to memory; overwrite existing memory.\n                    returndatacopy(0, 0, returndatasize())\n\n                    // Revert, specifying memory region with copied returndata.\n                    revert(0, returndatasize())\n                }\n            }\n        }\n    }\n\n    /**\n     * @dev Internal pure function to determine if the first word of returndata\n     *      matches an expected magic value.\n     *\n     * @param expected The expected magic value.\n     *\n     * @return A boolean indicating whether the expected value matches the one\n     *         located in the first word of returndata.\n     */\n    function _doesNotMatchMagic(bytes4 expected) internal pure returns (bool) {\n        // Declare a variable for the value held by the return data buffer.\n        bytes4 result;\n\n        // Utilize assembly in order to read directly from returndata buffer.\n        assembly {\n            // Only put result on stack if return data is exactly one word.\n            if eq(returndatasize(), OneWord) {\n                // Copy the word directly from return data into scratch space.\n                returndatacopy(0, 0, OneWord)\n\n                // Take value from scratch space and place it on the stack.\n                result := mload(0)\n            }\n        }\n\n        // Return a boolean indicating whether expected and located value match.\n        return result != expected;\n    }\n}\n"
      },
      "seaport/contracts/lib/FulfillmentApplier.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\nimport { ItemType, Side } from \"./ConsiderationEnums.sol\";\n\n// prettier-ignore\nimport {\n    OfferItem,\n    ConsiderationItem,\n    ReceivedItem,\n    OrderParameters,\n    AdvancedOrder,\n    Execution,\n    FulfillmentComponent\n} from \"./ConsiderationStructs.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\n// prettier-ignore\nimport {\n    FulfillmentApplicationErrors\n} from \"../interfaces/FulfillmentApplicationErrors.sol\";\n\n/**\n * @title FulfillmentApplier\n * @author 0age\n * @notice FulfillmentApplier contains logic related to applying fulfillments,\n *         both as part of order matching (where offer items are matched to\n *         consideration items) as well as fulfilling available orders (where\n *         order items and consideration items are independently aggregated).\n */\ncontract FulfillmentApplier is FulfillmentApplicationErrors {\n    /**\n     * @dev Internal view function to match offer items to consideration items\n     *      on a group of orders via a supplied fulfillment.\n     *\n     * @param advancedOrders          The orders to match.\n     * @param offerComponents         An array designating offer components to\n     *                                match to consideration components.\n     * @param considerationComponents An array designating consideration\n     *                                components to match to offer components.\n     *                                Note that each consideration amount must\n     *                                be zero in order for the match operation\n     *                                to be valid.\n     *\n     * @return execution The transfer performed as a result of the fulfillment.\n     */\n    function _applyFulfillment(\n        AdvancedOrder[] memory advancedOrders,\n        FulfillmentComponent[] calldata offerComponents,\n        FulfillmentComponent[] calldata considerationComponents\n    ) internal view returns (Execution memory execution) {\n        // Ensure 1+ of both offer and consideration components are supplied.\n        if (\n            offerComponents.length == 0 || considerationComponents.length == 0\n        ) {\n            revert OfferAndConsiderationRequiredOnFulfillment();\n        }\n\n        // Declare a new Execution struct.\n        Execution memory considerationExecution;\n\n        // Validate & aggregate consideration items to new Execution object.\n        _aggregateValidFulfillmentConsiderationItems(\n            advancedOrders,\n            considerationComponents,\n            considerationExecution\n        );\n\n        // Retrieve the consideration item from the execution struct.\n        ReceivedItem memory considerationItem = considerationExecution.item;\n\n        // Validate & aggregate offer items to Execution object.\n        _aggregateValidFulfillmentOfferItems(\n            advancedOrders,\n            offerComponents,\n            execution\n        );\n\n        // Ensure offer and consideration share types, tokens and identifiers.\n        if (\n            execution.item.itemType != considerationItem.itemType ||\n            execution.item.token != considerationItem.token ||\n            execution.item.identifier != considerationItem.identifier\n        ) {\n            revert MismatchedFulfillmentOfferAndConsiderationComponents();\n        }\n\n        // If total consideration amount exceeds the offer amount...\n        if (considerationItem.amount > execution.item.amount) {\n            // Retrieve the first consideration component from the fulfillment.\n            FulfillmentComponent memory targetComponent = (\n                considerationComponents[0]\n            );\n\n            // Add excess consideration item amount to original array of orders.\n            advancedOrders[targetComponent.orderIndex]\n                .parameters\n                .consideration[targetComponent.itemIndex]\n                .startAmount = considerationItem.amount - execution.item.amount;\n\n            // Reduce total consideration amount to equal the offer amount.\n            considerationItem.amount = execution.item.amount;\n        } else {\n            // Retrieve the first offer component from the fulfillment.\n            FulfillmentComponent memory targetComponent = (offerComponents[0]);\n\n            // Add excess offer item amount to the original array of orders.\n            advancedOrders[targetComponent.orderIndex]\n                .parameters\n                .offer[targetComponent.itemIndex]\n                .startAmount = execution.item.amount - considerationItem.amount;\n        }\n\n        // Reuse execution struct with consideration amount and recipient.\n        execution.item.amount = considerationItem.amount;\n        execution.item.recipient = considerationItem.recipient;\n\n        // Return the final execution that will be triggered for relevant items.\n        return execution; // Execution(considerationItem, offerer, conduitKey);\n    }\n\n    /**\n     * @dev Internal view function to aggregate offer or consideration items\n     *      from a group of orders into a single execution via a supplied array\n     *      of fulfillment components. Items that are not available to aggregate\n     *      will not be included in the aggregated execution.\n     *\n     * @param advancedOrders        The orders to aggregate.\n     * @param side                  The side (i.e. offer or consideration).\n     * @param fulfillmentComponents An array designating item components to\n     *                              aggregate if part of an available order.\n     * @param fulfillerConduitKey   A bytes32 value indicating what conduit, if\n     *                              any, to source the fulfiller's token\n     *                              approvals from. The zero hash signifies that\n     *                              no conduit should be used, with approvals\n     *                              set directly on this contract.\n     *\n     * @return execution The transfer performed as a result of the fulfillment.\n     */\n    function _aggregateAvailable(\n        AdvancedOrder[] memory advancedOrders,\n        Side side,\n        FulfillmentComponent[] memory fulfillmentComponents,\n        bytes32 fulfillerConduitKey\n    ) internal view returns (Execution memory execution) {\n        // Skip overflow / underflow checks; conditions checked or unreachable.\n        unchecked {\n            // Retrieve fulfillment components array length and place on stack.\n            // Ensure at least one fulfillment component has been supplied.\n            if (fulfillmentComponents.length == 0) {\n                revert MissingFulfillmentComponentOnAggregation(side);\n            }\n\n            // If the fulfillment components are offer components...\n            if (side == Side.OFFER) {\n                // Return execution for aggregated items provided by offerer.\n                _aggregateValidFulfillmentOfferItems(\n                    advancedOrders,\n                    fulfillmentComponents,\n                    execution\n                );\n            } else {\n                // Otherwise, fulfillment components are consideration\n                // components. Return execution for aggregated items provided by\n                // the fulfiller.\n                _aggregateValidFulfillmentConsiderationItems(\n                    advancedOrders,\n                    fulfillmentComponents,\n                    execution\n                );\n\n                // Set the caller as the offerer on the execution.\n                execution.offerer = msg.sender;\n\n                // Set fulfiller conduit key as the conduit key on execution.\n                execution.conduitKey = fulfillerConduitKey;\n            }\n\n            // Set the offerer as the receipient if execution amount is nonzero.\n            if (execution.item.amount == 0) {\n                execution.item.recipient = payable(execution.offerer);\n            }\n        }\n    }\n\n    /**\n     * @dev Internal pure function to aggregate a group of offer items using\n     *      supplied directives on which component items are candidates for\n     *      aggregation, skipping items on orders that are not available.\n     *\n     * @param advancedOrders  The orders to aggregate offer items from.\n     * @param offerComponents An array of FulfillmentComponent structs\n     *                        indicating the order index and item index of each\n     *                        candidate offer item for aggregation.\n     * @param execution       The execution to apply the aggregation to.\n     */\n    function _aggregateValidFulfillmentOfferItems(\n        AdvancedOrder[] memory advancedOrders,\n        FulfillmentComponent[] memory offerComponents,\n        Execution memory execution\n    ) internal view {\n        assembly {\n            // Declare function for reverts on invalid fulfillment data.\n            function throwInvalidFulfillmentComponentData() {\n                // Store the InvalidFulfillmentComponentData error signature.\n                mstore(0, InvalidFulfillmentComponentData_error_signature)\n\n                // Return, supplying InvalidFulfillmentComponentData signature.\n                revert(0, InvalidFulfillmentComponentData_error_len)\n            }\n\n            // Declare function for reverts due to arithmetic overflows.\n            function throwOverflow() {\n                // Store the Panic error signature.\n                mstore(0, Panic_error_signature)\n\n                // Store the arithmetic (0x11) panic code as initial argument.\n                mstore(Panic_error_offset, Panic_arithmetic)\n\n                // Return, supplying Panic signature and arithmetic code.\n                revert(0, Panic_error_length)\n            }\n\n            // Get position in offerComponents head.\n            let fulfillmentHeadPtr := add(offerComponents, OneWord)\n\n            // Retrieve the order index using the fulfillment pointer.\n            let orderIndex := mload(mload(fulfillmentHeadPtr))\n\n            // Ensure that the order index is not out of range.\n            if iszero(lt(orderIndex, mload(advancedOrders))) {\n                throwInvalidFulfillmentComponentData()\n            }\n\n            // Read advancedOrders[orderIndex] pointer from its array head.\n            let orderPtr := mload(\n                // Calculate head position of advancedOrders[orderIndex].\n                add(add(advancedOrders, OneWord), mul(orderIndex, OneWord))\n            )\n\n            // Read the pointer to OrderParameters from the AdvancedOrder.\n            let paramsPtr := mload(orderPtr)\n\n            // Load the offer array pointer.\n            let offerArrPtr := mload(\n                add(paramsPtr, OrderParameters_offer_head_offset)\n            )\n\n            // Retrieve item index using an offset of the fulfillment pointer.\n            let itemIndex := mload(\n                add(mload(fulfillmentHeadPtr), Fulfillment_itemIndex_offset)\n            )\n\n            // Only continue if the fulfillment is not invalid.\n            if iszero(lt(itemIndex, mload(offerArrPtr))) {\n                throwInvalidFulfillmentComponentData()\n            }\n\n            // Retrieve consideration item pointer using the item index.\n            let offerItemPtr := mload(\n                add(\n                    // Get pointer to beginning of receivedItem.\n                    add(offerArrPtr, OneWord),\n                    // Calculate offset to pointer for desired order.\n                    mul(itemIndex, OneWord)\n                )\n            )\n\n            // Declare a variable for the final aggregated item amount.\n            let amount := 0\n\n            // Create variable to track errors encountered with amount.\n            let errorBuffer := 0\n\n            // Only add offer amount to execution amount on a nonzero numerator.\n            if mload(add(orderPtr, AdvancedOrder_numerator_offset)) {\n                // Retrieve amount pointer using consideration item pointer.\n                let amountPtr := add(offerItemPtr, Common_amount_offset)\n\n                // Set the amount.\n                amount := mload(amountPtr)\n\n                // Zero out amount on item to indicate it is credited.\n                mstore(amountPtr, 0)\n\n                // Buffer indicating whether issues were found.\n                errorBuffer := iszero(amount)\n            }\n\n            // Retrieve the received item pointer.\n            let receivedItemPtr := mload(execution)\n\n            // Set the caller as the recipient on the received item.\n            mstore(\n                add(receivedItemPtr, ReceivedItem_recipient_offset),\n                caller()\n            )\n\n            // Set the item type on the received item.\n            mstore(receivedItemPtr, mload(offerItemPtr))\n\n            // Set the token on the received item.\n            mstore(\n                add(receivedItemPtr, Common_token_offset),\n                mload(add(offerItemPtr, Common_token_offset))\n            )\n\n            // Set the identifier on the received item.\n            mstore(\n                add(receivedItemPtr, Common_identifier_offset),\n                mload(add(offerItemPtr, Common_identifier_offset))\n            )\n\n            // Set the offerer on returned execution using order pointer.\n            mstore(add(execution, Execution_offerer_offset), mload(paramsPtr))\n\n            // Set conduitKey on returned execution via offset of order pointer.\n            mstore(\n                add(execution, Execution_conduit_offset),\n                mload(add(paramsPtr, OrderParameters_conduit_offset))\n            )\n\n            // Calculate the hash of (itemType, token, identifier).\n            let dataHash := keccak256(\n                receivedItemPtr,\n                ReceivedItem_CommonParams_size\n            )\n\n            // Get position one word past last element in head of array.\n            let endPtr := add(\n                offerComponents,\n                mul(mload(offerComponents), OneWord)\n            )\n\n            // Iterate over remaining offer components.\n            // prettier-ignore\n            for {} lt(fulfillmentHeadPtr,  endPtr) {} {\n                // Increment the pointer to the fulfillment head by one word.\n                fulfillmentHeadPtr := add(fulfillmentHeadPtr, OneWord)\n\n                // Get the order index using the fulfillment pointer.\n                orderIndex := mload(mload(fulfillmentHeadPtr))\n\n                // Ensure the order index is in range.\n                if iszero(lt(orderIndex, mload(advancedOrders))) {\n                  throwInvalidFulfillmentComponentData()\n                }\n\n                // Get pointer to AdvancedOrder element.\n                orderPtr := mload(\n                    add(\n                        add(advancedOrders, OneWord),\n                        mul(orderIndex, OneWord)\n                    )\n                )\n\n                // Only continue if numerator is not zero.\n                if iszero(mload(\n                    add(orderPtr, AdvancedOrder_numerator_offset)\n                )) {\n                  continue\n                }\n\n                // Read the pointer to OrderParameters from the AdvancedOrder.\n                paramsPtr := mload(orderPtr)\n\n                // Load offer array pointer.\n                offerArrPtr := mload(\n                    add(\n                        paramsPtr,\n                        OrderParameters_offer_head_offset\n                    )\n                )\n\n                // Get the item index using the fulfillment pointer.\n                itemIndex := mload(add(mload(fulfillmentHeadPtr), OneWord))\n\n                // Throw if itemIndex is out of the range of array.\n                if iszero(\n                    lt(itemIndex, mload(offerArrPtr))\n                ) {\n                    throwInvalidFulfillmentComponentData()\n                }\n\n                // Retrieve offer item pointer using index.\n                offerItemPtr := mload(\n                    add(\n                        // Get pointer to beginning of receivedItem.\n                        add(offerArrPtr, OneWord),\n                        // Use offset to pointer for desired order.\n                        mul(itemIndex, OneWord)\n                    )\n                )\n\n                // Retrieve amount pointer using offer item pointer.\n                let amountPtr := add(\n                      offerItemPtr,\n                      Common_amount_offset\n                )\n\n                // Add offer amount to execution amount.\n                let newAmount := add(amount, mload(amountPtr))\n\n                // Update error buffer (1 = zero amount, 2 = overflow).\n                errorBuffer := or(\n                  errorBuffer,\n                  or(\n                    shl(1, lt(newAmount, amount)),\n                    iszero(mload(amountPtr))\n                  )\n                )\n\n                // Update the amount to the new, summed amount.\n                amount := newAmount\n\n                // Zero out amount on original item to indicate it is credited.\n                mstore(amountPtr, 0)\n\n                // Ensure the indicated item matches original item.\n                if iszero(\n                    and(\n                        and(\n                          // The offerer must match on both items.\n                          eq(\n                              mload(paramsPtr),\n                              mload(\n                                  add(execution, Execution_offerer_offset)\n                              )\n                          ),\n                          // The conduit key must match on both items.\n                          eq(\n                              mload(\n                                  add(\n                                      paramsPtr,\n                                      OrderParameters_conduit_offset\n                                  )\n                              ),\n                              mload(\n                                  add(\n                                      execution,\n                                      Execution_conduit_offset\n                                  )\n                              )\n                          )\n                        ),\n                        // The itemType, token, and identifier must match.\n                        eq(\n                            dataHash,\n                            keccak256(\n                                offerItemPtr,\n                                ReceivedItem_CommonParams_size\n                            )\n                        )\n                    )\n                ) {\n                    // Throw if any of the requirements are not met.\n                    throwInvalidFulfillmentComponentData()\n                }\n            }\n            // Write final amount to execution.\n            mstore(add(mload(execution), Common_amount_offset), amount)\n\n            // Determine if an error code is contained in the error buffer.\n            switch errorBuffer\n            case 1 {\n                // Store the MissingItemAmount error signature.\n                mstore(0, MissingItemAmount_error_signature)\n\n                // Return, supplying MissingItemAmount signature.\n                revert(0, MissingItemAmount_error_len)\n            }\n            case 2 {\n                // If the sum overflowed, panic.\n                throwOverflow()\n            }\n        }\n    }\n\n    /**\n     * @dev Internal pure function to aggregate a group of consideration items\n     *      using supplied directives on which component items are candidates\n     *      for aggregation, skipping items on orders that are not available.\n     *\n     * @param advancedOrders          The orders to aggregate consideration\n     *                                items from.\n     * @param considerationComponents An array of FulfillmentComponent structs\n     *                                indicating the order index and item index\n     *                                of each candidate consideration item for\n     *                                aggregation.\n     * @param execution       The execution to apply the aggregation to.\n     */\n    function _aggregateValidFulfillmentConsiderationItems(\n        AdvancedOrder[] memory advancedOrders,\n        FulfillmentComponent[] memory considerationComponents,\n        Execution memory execution\n    ) internal pure {\n        // Utilize assembly in order to efficiently aggregate the items.\n        assembly {\n            // Declare function for reverts on invalid fulfillment data.\n            function throwInvalidFulfillmentComponentData() {\n                // Store the InvalidFulfillmentComponentData error signature.\n                mstore(0, InvalidFulfillmentComponentData_error_signature)\n\n                // Return, supplying InvalidFulfillmentComponentData signature.\n                revert(0, InvalidFulfillmentComponentData_error_len)\n            }\n\n            // Declare function for reverts due to arithmetic overflows.\n            function throwOverflow() {\n                // Store the Panic error signature.\n                mstore(0, Panic_error_signature)\n\n                // Store the arithmetic (0x11) panic code as initial argument.\n                mstore(Panic_error_offset, Panic_arithmetic)\n\n                // Return, supplying Panic signature and arithmetic code.\n                revert(0, Panic_error_length)\n            }\n\n            // Get position in considerationComponents head.\n            let fulfillmentHeadPtr := add(considerationComponents, OneWord)\n\n            // Retrieve the order index using the fulfillment pointer.\n            let orderIndex := mload(mload(fulfillmentHeadPtr))\n\n            // Ensure that the order index is not out of range.\n            if iszero(lt(orderIndex, mload(advancedOrders))) {\n                throwInvalidFulfillmentComponentData()\n            }\n\n            // Read advancedOrders[orderIndex] pointer from its array head.\n            let orderPtr := mload(\n                // Calculate head position of advancedOrders[orderIndex].\n                add(add(advancedOrders, OneWord), mul(orderIndex, OneWord))\n            )\n\n            // Load consideration array pointer.\n            let considerationArrPtr := mload(\n                add(\n                    // Read pointer to OrderParameters from the AdvancedOrder.\n                    mload(orderPtr),\n                    OrderParameters_consideration_head_offset\n                )\n            )\n\n            // Retrieve item index using an offset of the fulfillment pointer.\n            let itemIndex := mload(\n                add(mload(fulfillmentHeadPtr), Fulfillment_itemIndex_offset)\n            )\n\n            // Ensure that the order index is not out of range.\n            if iszero(lt(itemIndex, mload(considerationArrPtr))) {\n                throwInvalidFulfillmentComponentData()\n            }\n\n            // Retrieve consideration item pointer using the item index.\n            let considerationItemPtr := mload(\n                add(\n                    // Get pointer to beginning of receivedItem.\n                    add(considerationArrPtr, OneWord),\n                    // Calculate offset to pointer for desired order.\n                    mul(itemIndex, OneWord)\n                )\n            )\n\n            // Declare a variable for the final aggregated item amount.\n            let amount := 0\n\n            // Create variable to track errors encountered with amount.\n            let errorBuffer := 0\n\n            // Only add consideration amount to execution amount if numerator is\n            // greater than zero.\n            if mload(add(orderPtr, AdvancedOrder_numerator_offset)) {\n                // Retrieve amount pointer using consideration item pointer.\n                let amountPtr := add(considerationItemPtr, Common_amount_offset)\n\n                // Set the amount.\n                amount := mload(amountPtr)\n\n                // Set error bit if amount is zero.\n                errorBuffer := iszero(amount)\n\n                // Zero out amount on item to indicate it is credited.\n                mstore(amountPtr, 0)\n            }\n\n            // Retrieve ReceivedItem pointer from Execution.\n            let receivedItem := mload(execution)\n\n            // Set the item type on the received item.\n            mstore(receivedItem, mload(considerationItemPtr))\n\n            // Set the token on the received item.\n            mstore(\n                add(receivedItem, Common_token_offset),\n                mload(add(considerationItemPtr, Common_token_offset))\n            )\n\n            // Set the identifier on the received item.\n            mstore(\n                add(receivedItem, Common_identifier_offset),\n                mload(add(considerationItemPtr, Common_identifier_offset))\n            )\n\n            // Set the recipient on the received item.\n            mstore(\n                add(receivedItem, ReceivedItem_recipient_offset),\n                mload(\n                    add(\n                        considerationItemPtr,\n                        ConsiderationItem_recipient_offset\n                    )\n                )\n            )\n\n            // Calculate the hash of (itemType, token, identifier).\n            let dataHash := keccak256(\n                receivedItem,\n                ReceivedItem_CommonParams_size\n            )\n\n            // Get position one word past last element in head of array.\n            let endPtr := add(\n                considerationComponents,\n                mul(mload(considerationComponents), OneWord)\n            )\n\n            // Iterate over remaining offer components.\n            // prettier-ignore\n            for {} lt(fulfillmentHeadPtr,  endPtr) {} {\n                // Increment position in considerationComponents head.\n                fulfillmentHeadPtr := add(fulfillmentHeadPtr, OneWord)\n\n                // Get the order index using the fulfillment pointer.\n                orderIndex := mload(mload(fulfillmentHeadPtr))\n\n                // Ensure the order index is in range.\n                if iszero(lt(orderIndex, mload(advancedOrders))) {\n                  throwInvalidFulfillmentComponentData()\n                }\n\n                // Get pointer to AdvancedOrder element.\n                orderPtr := mload(\n                    add(\n                        add(advancedOrders, OneWord),\n                        mul(orderIndex, OneWord)\n                    )\n                )\n\n                // Only continue if numerator is not zero.\n                if iszero(\n                    mload(add(orderPtr, AdvancedOrder_numerator_offset))\n                ) {\n                  continue\n                }\n\n                // Load consideration array pointer from OrderParameters.\n                considerationArrPtr := mload(\n                    add(\n                        // Get pointer to OrderParameters from AdvancedOrder.\n                        mload(orderPtr),\n                        OrderParameters_consideration_head_offset\n                    )\n                )\n\n                // Get the item index using the fulfillment pointer.\n                itemIndex := mload(add(mload(fulfillmentHeadPtr), OneWord))\n\n                // Check if itemIndex is within the range of array.\n                if iszero(lt(itemIndex, mload(considerationArrPtr))) {\n                    throwInvalidFulfillmentComponentData()\n                }\n\n                // Retrieve consideration item pointer using index.\n                considerationItemPtr := mload(\n                    add(\n                        // Get pointer to beginning of receivedItem.\n                        add(considerationArrPtr, OneWord),\n                        // Use offset to pointer for desired order.\n                        mul(itemIndex, OneWord)\n                    )\n                )\n\n                // Retrieve amount pointer using consideration item pointer.\n                let amountPtr := add(\n                      considerationItemPtr,\n                      Common_amount_offset\n                )\n\n                // Add offer amount to execution amount.\n                let newAmount := add(amount, mload(amountPtr))\n\n                // Update error buffer (1 = zero amount, 2 = overflow).\n                errorBuffer := or(\n                  errorBuffer,\n                  or(\n                    shl(1, lt(newAmount, amount)),\n                    iszero(mload(amountPtr))\n                  )\n                )\n\n                // Update the amount to the new, summed amount.\n                amount := newAmount\n\n                // Zero out amount on original item to indicate it is credited.\n                mstore(amountPtr, 0)\n\n                // Ensure the indicated item matches original item.\n                if iszero(\n                    and(\n                        // Item recipients must match.\n                        eq(\n                            mload(\n                                add(\n                                    considerationItemPtr,\n                                    ConsiderItem_recipient_offset\n                                )\n                            ),\n                            mload(\n                                add(\n                                    receivedItem,\n                                    ReceivedItem_recipient_offset\n                                )\n                            )\n                        ),\n                        // The itemType, token, identifier must match.\n                        eq(\n                          dataHash,\n                          keccak256(\n                            considerationItemPtr,\n                            ReceivedItem_CommonParams_size\n                          )\n                        )\n                    )\n                ) {\n                    // Throw if any of the requirements are not met.\n                    throwInvalidFulfillmentComponentData()\n                }\n            }\n            // Write final amount to execution.\n            mstore(add(receivedItem, Common_amount_offset), amount)\n\n            // Determine if an error code is contained in the error buffer.\n            switch errorBuffer\n            case 1 {\n                // Store the MissingItemAmount error signature.\n                mstore(0, MissingItemAmount_error_signature)\n\n                // Return, supplying MissingItemAmount signature.\n                revert(0, MissingItemAmount_error_len)\n            }\n            case 2 {\n                // If the sum overflowed, panic.\n                throwOverflow()\n            }\n        }\n    }\n}\n"
      },
      "seaport/contracts/interfaces/FulfillmentApplicationErrors.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\nimport { Side } from \"../lib/ConsiderationEnums.sol\";\n\n/**\n * @title FulfillmentApplicationErrors\n * @author 0age\n * @notice FulfillmentApplicationErrors contains errors related to fulfillment\n *         application and aggregation.\n */\ninterface FulfillmentApplicationErrors {\n    /**\n     * @dev Revert with an error when a fulfillment is provided as part of an\n     *      call to fulfill available orders that does not declare at least one\n     *      component.\n     */\n    error MissingFulfillmentComponentOnAggregation(Side side);\n\n    /**\n     * @dev Revert with an error when a fulfillment is provided that does not\n     *      declare at least one offer component and at least one consideration\n     *      component.\n     */\n    error OfferAndConsiderationRequiredOnFulfillment();\n\n    /**\n     * @dev Revert with an error when the initial offer item named by a\n     *      fulfillment component does not match the type, token, identifier,\n     *      or conduit preference of the initial consideration item.\n     */\n    error MismatchedFulfillmentOfferAndConsiderationComponents();\n\n    /**\n     * @dev Revert with an error when an order or item index are out of range\n     *      or a fulfillment component does not match the type, token,\n     *      identifier, or conduit preference of the initial consideration item.\n     */\n    error InvalidFulfillmentComponentData();\n}\n"
      },
      "seaport/contracts/lib/CriteriaResolution.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\nimport { ItemType, Side } from \"./ConsiderationEnums.sol\";\n\n// prettier-ignore\nimport {\n    OfferItem,\n    ConsiderationItem,\n    OrderParameters,\n    AdvancedOrder,\n    CriteriaResolver\n} from \"./ConsiderationStructs.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\n// prettier-ignore\nimport {\n    CriteriaResolutionErrors\n} from \"../interfaces/CriteriaResolutionErrors.sol\";\n\n/**\n * @title CriteriaResolution\n * @author 0age\n * @notice CriteriaResolution contains a collection of pure functions related to\n *         resolving criteria-based items.\n */\ncontract CriteriaResolution is CriteriaResolutionErrors {\n    /**\n     * @dev Internal pure function to apply criteria resolvers containing\n     *      specific token identifiers and associated proofs to order items.\n     *\n     * @param advancedOrders     The orders to apply criteria resolvers to.\n     * @param criteriaResolvers  An array where each element contains a\n     *                           reference to a specific order as well as that\n     *                           order's offer or consideration, a token\n     *                           identifier, and a proof that the supplied token\n     *                           identifier is contained in the order's merkle\n     *                           root. Note that a root of zero indicates that\n     *                           any transferrable token identifier is valid and\n     *                           that no proof needs to be supplied.\n     */\n    function _applyCriteriaResolvers(\n        AdvancedOrder[] memory advancedOrders,\n        CriteriaResolver[] memory criteriaResolvers\n    ) internal pure {\n        // Skip overflow checks as all for loops are indexed starting at zero.\n        unchecked {\n            // Retrieve length of criteria resolvers array and place on stack.\n            uint256 totalCriteriaResolvers = criteriaResolvers.length;\n\n            // Retrieve length of orders array and place on stack.\n            uint256 totalAdvancedOrders = advancedOrders.length;\n\n            // Iterate over each criteria resolver.\n            for (uint256 i = 0; i < totalCriteriaResolvers; ++i) {\n                // Retrieve the criteria resolver.\n                CriteriaResolver memory criteriaResolver = (\n                    criteriaResolvers[i]\n                );\n\n                // Read the order index from memory and place it on the stack.\n                uint256 orderIndex = criteriaResolver.orderIndex;\n\n                // Ensure that the order index is in range.\n                if (orderIndex >= totalAdvancedOrders) {\n                    revert OrderCriteriaResolverOutOfRange();\n                }\n\n                // Skip criteria resolution for order if not fulfilled.\n                if (advancedOrders[orderIndex].numerator == 0) {\n                    continue;\n                }\n\n                // Retrieve the parameters for the order.\n                OrderParameters memory orderParameters = (\n                    advancedOrders[orderIndex].parameters\n                );\n\n                // Read component index from memory and place it on the stack.\n                uint256 componentIndex = criteriaResolver.index;\n\n                // Declare values for item's type and criteria.\n                ItemType itemType;\n                uint256 identifierOrCriteria;\n\n                // If the criteria resolver refers to an offer item...\n                if (criteriaResolver.side == Side.OFFER) {\n                    // Retrieve the offer.\n                    OfferItem[] memory offer = orderParameters.offer;\n\n                    // Ensure that the component index is in range.\n                    if (componentIndex >= offer.length) {\n                        revert OfferCriteriaResolverOutOfRange();\n                    }\n\n                    // Retrieve relevant item using the component index.\n                    OfferItem memory offerItem = offer[componentIndex];\n\n                    // Read item type and criteria from memory & place on stack.\n                    itemType = offerItem.itemType;\n                    identifierOrCriteria = offerItem.identifierOrCriteria;\n\n                    // Optimistically update item type to remove criteria usage.\n                    ItemType newItemType;\n                    assembly {\n                        newItemType := sub(3, eq(itemType, 4))\n                    }\n                    offerItem.itemType = newItemType;\n\n                    // Optimistically update identifier w/ supplied identifier.\n                    offerItem.identifierOrCriteria = criteriaResolver\n                        .identifier;\n                } else {\n                    // Otherwise, the resolver refers to a consideration item.\n                    ConsiderationItem[] memory consideration = (\n                        orderParameters.consideration\n                    );\n\n                    // Ensure that the component index is in range.\n                    if (componentIndex >= consideration.length) {\n                        revert ConsiderationCriteriaResolverOutOfRange();\n                    }\n\n                    // Retrieve relevant item using order and component index.\n                    ConsiderationItem memory considerationItem = (\n                        consideration[componentIndex]\n                    );\n\n                    // Read item type and criteria from memory & place on stack.\n                    itemType = considerationItem.itemType;\n                    identifierOrCriteria = (\n                        considerationItem.identifierOrCriteria\n                    );\n\n                    // Optimistically update item type to remove criteria usage.\n                    ItemType newItemType;\n                    assembly {\n                        newItemType := sub(3, eq(itemType, 4))\n                    }\n                    considerationItem.itemType = newItemType;\n\n                    // Optimistically update identifier w/ supplied identifier.\n                    considerationItem.identifierOrCriteria = (\n                        criteriaResolver.identifier\n                    );\n                }\n\n                // Ensure the specified item type indicates criteria usage.\n                if (!_isItemWithCriteria(itemType)) {\n                    revert CriteriaNotEnabledForItem();\n                }\n\n                // If criteria is not 0 (i.e. a collection-wide offer)...\n                if (identifierOrCriteria != uint256(0)) {\n                    // Verify identifier inclusion in criteria root using proof.\n                    _verifyProof(\n                        criteriaResolver.identifier,\n                        identifierOrCriteria,\n                        criteriaResolver.criteriaProof\n                    );\n                }\n            }\n\n            // Iterate over each advanced order.\n            for (uint256 i = 0; i < totalAdvancedOrders; ++i) {\n                // Retrieve the advanced order.\n                AdvancedOrder memory advancedOrder = advancedOrders[i];\n\n                // Skip criteria resolution for order if not fulfilled.\n                if (advancedOrder.numerator == 0) {\n                    continue;\n                }\n\n                // Retrieve the parameters for the order.\n                OrderParameters memory orderParameters = (\n                    advancedOrders[i].parameters\n                );\n\n                // Read consideration length from memory and place on stack.\n                uint256 totalItems = orderParameters.consideration.length;\n\n                // Iterate over each consideration item on the order.\n                for (uint256 j = 0; j < totalItems; ++j) {\n                    // Ensure item type no longer indicates criteria usage.\n                    if (\n                        _isItemWithCriteria(\n                            orderParameters.consideration[j].itemType\n                        )\n                    ) {\n                        revert UnresolvedConsiderationCriteria();\n                    }\n                }\n\n                // Read offer length from memory and place on stack.\n                totalItems = orderParameters.offer.length;\n\n                // Iterate over each offer item on the order.\n                for (uint256 j = 0; j < totalItems; ++j) {\n                    // Ensure item type no longer indicates criteria usage.\n                    if (\n                        _isItemWithCriteria(orderParameters.offer[j].itemType)\n                    ) {\n                        revert UnresolvedOfferCriteria();\n                    }\n                }\n            }\n        }\n    }\n\n    /**\n     * @dev Internal pure function to check whether a given item type represents\n     *      a criteria-based ERC721 or ERC1155 item (e.g. an item that can be\n     *      resolved to one of a number of different identifiers at the time of\n     *      order fulfillment).\n     *\n     * @param itemType The item type in question.\n     *\n     * @return withCriteria A boolean indicating that the item type in question\n     *                      represents a criteria-based item.\n     */\n    function _isItemWithCriteria(ItemType itemType)\n        internal\n        pure\n        returns (bool withCriteria)\n    {\n        // ERC721WithCriteria is ItemType 4. ERC1155WithCriteria is ItemType 5.\n        assembly {\n            withCriteria := gt(itemType, 3)\n        }\n    }\n\n    /**\n     * @dev Internal pure function to ensure that a given element is contained\n     *      in a merkle root via a supplied proof.\n     *\n     * @param leaf  The element for which to prove inclusion.\n     * @param root  The merkle root that inclusion will be proved against.\n     * @param proof The merkle proof.\n     */\n    function _verifyProof(\n        uint256 leaf,\n        uint256 root,\n        bytes32[] memory proof\n    ) internal pure {\n        bool isValid;\n\n        assembly {\n            // Start the hash off as just the starting leaf.\n            let computedHash := leaf\n\n            // Get memory start location of the first element in proof array.\n            let data := add(proof, OneWord)\n\n            // Iterate over proof elements to compute root hash.\n            for {\n                let end := add(data, mul(mload(proof), OneWord))\n            } lt(data, end) {\n                data := add(data, OneWord)\n            } {\n                // Get the proof element.\n                let loadedData := mload(data)\n\n                // Sort and store proof element and hash.\n                switch gt(computedHash, loadedData)\n                case 0 {\n                    mstore(0, computedHash) // Place existing hash first.\n                    mstore(0x20, loadedData) // Place new hash next.\n                }\n                default {\n                    mstore(0, loadedData) // Place new hash first.\n                    mstore(0x20, computedHash) // Place existing hash next.\n                }\n\n                // Derive the updated hash.\n                computedHash := keccak256(0, TwoWords)\n            }\n\n            // Compare the final hash to the supplied root.\n            isValid := eq(computedHash, root)\n        }\n\n        // Revert if computed hash does not equal supplied root.\n        if (!isValid) {\n            revert InvalidProof();\n        }\n    }\n}\n"
      },
      "seaport/contracts/interfaces/CriteriaResolutionErrors.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\n/**\n * @title CriteriaResolutionErrors\n * @author 0age\n * @notice CriteriaResolutionErrors contains all errors related to criteria\n *         resolution.\n */\ninterface CriteriaResolutionErrors {\n    /**\n     * @dev Revert with an error when providing a criteria resolver that refers\n     *      to an order that has not been supplied.\n     */\n    error OrderCriteriaResolverOutOfRange();\n\n    /**\n     * @dev Revert with an error if an offer item still has unresolved criteria\n     *      after applying all criteria resolvers.\n     */\n    error UnresolvedOfferCriteria();\n\n    /**\n     * @dev Revert with an error if a consideration item still has unresolved\n     *      criteria after applying all criteria resolvers.\n     */\n    error UnresolvedConsiderationCriteria();\n\n    /**\n     * @dev Revert with an error when providing a criteria resolver that refers\n     *      to an order with an offer item that has not been supplied.\n     */\n    error OfferCriteriaResolverOutOfRange();\n\n    /**\n     * @dev Revert with an error when providing a criteria resolver that refers\n     *      to an order with a consideration item that has not been supplied.\n     */\n    error ConsiderationCriteriaResolverOutOfRange();\n\n    /**\n     * @dev Revert with an error when providing a criteria resolver that refers\n     *      to an order with an item that does not expect a criteria to be\n     *      resolved.\n     */\n    error CriteriaNotEnabledForItem();\n\n    /**\n     * @dev Revert with an error when providing a criteria resolver that\n     *      contains an invalid proof with respect to the given item and\n     *      chosen identifier.\n     */\n    error InvalidProof();\n}\n"
      },
      "seaport/contracts/interfaces/ZoneInterface.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\n// prettier-ignore\nimport {\n    AdvancedOrder,\n    CriteriaResolver\n} from \"../lib/ConsiderationStructs.sol\";\n\ninterface ZoneInterface {\n    // Called by Consideration whenever extraData is not provided by the caller.\n    function isValidOrder(\n        bytes32 orderHash,\n        address caller,\n        address offerer,\n        bytes32 zoneHash\n    ) external view returns (bytes4 validOrderMagicValue);\n\n    // Called by Consideration whenever any extraData is provided by the caller.\n    function isValidOrderIncludingExtraData(\n        bytes32 orderHash,\n        address caller,\n        AdvancedOrder calldata order,\n        bytes32[] calldata priorOrderHashes,\n        CriteriaResolver[] calldata criteriaResolvers\n    ) external view returns (bytes4 validOrderMagicValue);\n}\n"
      },
      "seaport/contracts/lib/ZoneInteraction.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\nimport { ZoneInterface } from \"../interfaces/ZoneInterface.sol\";\n\nimport { OrderType } from \"./ConsiderationEnums.sol\";\n\n// prettier-ignore\nimport { AdvancedOrder, CriteriaResolver } from \"./ConsiderationStructs.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\n// prettier-ignore\nimport {\n    ZoneInteractionErrors\n} from \"../interfaces/ZoneInteractionErrors.sol\";\n\nimport { LowLevelHelpers } from \"./LowLevelHelpers.sol\";\n\n/**\n * @title ZoneInteraction\n * @author 0age\n * @notice ZoneInteraction contains logic related to interacting with zones.\n */\ncontract ZoneInteraction is ZoneInteractionErrors, LowLevelHelpers {\n    /**\n     * @dev Internal view function to determine if an order has a restricted\n     *      order type and, if so, to ensure that either the offerer or the zone\n     *      are the fulfiller or that a staticcall to `isValidOrder` on the zone\n     *      returns a magic value indicating that the order is currently valid.\n     *\n     * @param orderHash The hash of the order.\n     * @param zoneHash  The hash to provide upon calling the zone.\n     * @param orderType The type of the order.\n     * @param offerer   The offerer in question.\n     * @param zone      The zone in question.\n     */\n    function _assertRestrictedBasicOrderValidity(\n        bytes32 orderHash,\n        bytes32 zoneHash,\n        OrderType orderType,\n        address offerer,\n        address zone\n    ) internal view {\n        // Order type 2-3 require zone or offerer be caller or zone to approve.\n        if (\n            uint256(orderType) > 1 &&\n            msg.sender != zone &&\n            msg.sender != offerer\n        ) {\n            // Perform minimal staticcall to the zone.\n            _callIsValidOrder(zone, orderHash, offerer, zoneHash);\n        }\n    }\n\n    function _callIsValidOrder(\n        address zone,\n        bytes32 orderHash,\n        address offerer,\n        bytes32 zoneHash\n    ) internal view {\n        // Perform minimal staticcall to the zone.\n        bool success = _staticcall(\n            zone,\n            abi.encodeWithSelector(\n                ZoneInterface.isValidOrder.selector,\n                orderHash,\n                msg.sender,\n                offerer,\n                zoneHash\n            )\n        );\n\n        // Ensure call was successful and returned the correct magic value.\n        _assertIsValidOrderStaticcallSuccess(success, orderHash);\n    }\n\n    /**\n     * @dev Internal view function to determine whether an order is a restricted\n     *      order and, if so, to ensure that it was either submitted by the\n     *      offerer or the zone for the order, or that the zone returns the\n     *      expected magic value upon performing a staticcall to `isValidOrder`\n     *      or `isValidOrderIncludingExtraData` depending on whether the order\n     *      fulfillment specifies extra data or criteria resolvers.\n     *\n     * @param advancedOrder     The advanced order in question.\n     * @param criteriaResolvers An array where each element contains a reference\n     *                          to a specific offer or consideration, a token\n     *                          identifier, and a proof that the supplied token\n     *                          identifier is contained in the order's merkle\n     *                          root. Note that a criteria of zero indicates\n     *                          that any (transferrable) token identifier is\n     *                          valid and that no proof needs to be supplied.\n     * @param priorOrderHashes  The order hashes of each order supplied prior to\n     *                          the current order as part of a \"match\" variety\n     *                          of order fulfillment (e.g. this array will be\n     *                          empty for single or \"fulfill available\").\n     * @param orderHash         The hash of the order.\n     * @param zoneHash          The hash to provide upon calling the zone.\n     * @param orderType         The type of the order.\n     * @param offerer           The offerer in question.\n     * @param zone              The zone in question.\n     */\n    function _assertRestrictedAdvancedOrderValidity(\n        AdvancedOrder memory advancedOrder,\n        CriteriaResolver[] memory criteriaResolvers,\n        bytes32[] memory priorOrderHashes,\n        bytes32 orderHash,\n        bytes32 zoneHash,\n        OrderType orderType,\n        address offerer,\n        address zone\n    ) internal view {\n        // Order type 2-3 require zone or offerer be caller or zone to approve.\n        if (\n            uint256(orderType) > 1 &&\n            msg.sender != zone &&\n            msg.sender != offerer\n        ) {\n            // If no extraData or criteria resolvers are supplied...\n            if (\n                advancedOrder.extraData.length == 0 &&\n                criteriaResolvers.length == 0\n            ) {\n                // Perform minimal staticcall to the zone.\n                _callIsValidOrder(zone, orderHash, offerer, zoneHash);\n            } else {\n                // Otherwise, extra data or criteria resolvers were supplied; in\n                // that event, perform a more verbose staticcall to the zone.\n                bool success = _staticcall(\n                    zone,\n                    abi.encodeWithSelector(\n                        ZoneInterface.isValidOrderIncludingExtraData.selector,\n                        orderHash,\n                        msg.sender,\n                        advancedOrder,\n                        priorOrderHashes,\n                        criteriaResolvers\n                    )\n                );\n\n                // Ensure call was successful and returned correct magic value.\n                _assertIsValidOrderStaticcallSuccess(success, orderHash);\n            }\n        }\n    }\n\n    /**\n     * @dev Internal view function to ensure that a staticcall to `isValidOrder`\n     *      or `isValidOrderIncludingExtraData` as part of validating a\n     *      restricted order that was not submitted by the named offerer or zone\n     *      was successful and returned the required magic value.\n     *\n     * @param success   A boolean indicating the status of the staticcall.\n     * @param orderHash The order hash of the order in question.\n     */\n    function _assertIsValidOrderStaticcallSuccess(\n        bool success,\n        bytes32 orderHash\n    ) internal view {\n        // If the call failed...\n        if (!success) {\n            // Revert and pass reason along if one was returned.\n            _revertWithReasonIfOneIsReturned();\n\n            // Otherwise, revert with a generic error message.\n            revert InvalidRestrictedOrder(orderHash);\n        }\n\n        // Ensure result was extracted and matches isValidOrder magic value.\n        if (_doesNotMatchMagic(ZoneInterface.isValidOrder.selector)) {\n            revert InvalidRestrictedOrder(orderHash);\n        }\n    }\n}\n"
      },
      "seaport/contracts/interfaces/ZoneInteractionErrors.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\n/**\n * @title ZoneInteractionErrors\n * @author 0age\n * @notice ZoneInteractionErrors contains errors related to zone interaction.\n */\ninterface ZoneInteractionErrors {\n    /**\n     * @dev Revert with an error when attempting to fill an order that specifies\n     *      a restricted submitter as its order type when not submitted by\n     *      either the offerrer or the order's zone or approved as valid by the\n     *      zone in question via a staticcall to `isValidOrder`.\n     *\n     * @param orderHash The order hash for the invalid restricted order.\n     */\n    error InvalidRestrictedOrder(bytes32 orderHash);\n}\n"
      },
      "seaport/contracts/lib/OrderValidator.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\nimport { OrderType } from \"./ConsiderationEnums.sol\";\n\n// prettier-ignore\nimport {\n    OrderParameters,\n    Order,\n    AdvancedOrder,\n    OrderComponents,\n    OrderStatus,\n    CriteriaResolver\n} from \"./ConsiderationStructs.sol\";\n\nimport { Executor } from \"./Executor.sol\";\n\nimport { ZoneInteraction } from \"./ZoneInteraction.sol\";\n\n/**\n * @title OrderValidator\n * @author 0age\n * @notice OrderValidator contains functionality related to validating orders\n *         and updating their status.\n */\ncontract OrderValidator is Executor, ZoneInteraction {\n    // Track status of each order (validated, cancelled, and fraction filled).\n    mapping(bytes32 => OrderStatus) private _orderStatus;\n\n    /**\n     * @dev Derive and set hashes, reference chainId, and associated domain\n     *      separator during deployment.\n     *\n     * @param conduitController A contract that deploys conduits, or proxies\n     *                          that may optionally be used to transfer approved\n     *                          ERC20/721/1155 tokens.\n     */\n    constructor(address conduitController) Executor(conduitController) {}\n\n    /**\n     * @dev Internal function to verify and update the status of a basic order.\n     *\n     * @param orderHash The hash of the order.\n     * @param offerer   The offerer of the order.\n     * @param signature A signature from the offerer indicating that the order\n     *                  has been approved.\n     */\n    function _validateBasicOrderAndUpdateStatus(\n        bytes32 orderHash,\n        address offerer,\n        bytes memory signature\n    ) internal {\n        // Retrieve the order status for the given order hash.\n        OrderStatus memory orderStatus = _orderStatus[orderHash];\n\n        // Ensure order is fillable and is not cancelled.\n        _verifyOrderStatus(\n            orderHash,\n            orderStatus,\n            true, // Only allow unused orders when fulfilling basic orders.\n            true // Signifies to revert if the order is invalid.\n        );\n\n        // If the order is not already validated, verify the supplied signature.\n        if (!orderStatus.isValidated) {\n            _verifySignature(offerer, orderHash, signature);\n        }\n\n        // Update order status as fully filled, packing struct values.\n        _orderStatus[orderHash].isValidated = true;\n        _orderStatus[orderHash].isCancelled = false;\n        _orderStatus[orderHash].numerator = 1;\n        _orderStatus[orderHash].denominator = 1;\n    }\n\n    /**\n     * @dev Internal function to validate an order, determine what portion to\n     *      fill, and update its status. The desired fill amount is supplied as\n     *      a fraction, as is the returned amount to fill.\n     *\n     * @param advancedOrder     The order to fulfill as well as the fraction to\n     *                          fill. Note that all offer and consideration\n     *                          amounts must divide with no remainder in order\n     *                          for a partial fill to be valid.\n     * @param criteriaResolvers An array where each element contains a reference\n     *                          to a specific offer or consideration, a token\n     *                          identifier, and a proof that the supplied token\n     *                          identifier is contained in the order's merkle\n     *                          root. Note that a criteria of zero indicates\n     *                          that any (transferrable) token identifier is\n     *                          valid and that no proof needs to be supplied.\n     * @param revertOnInvalid   A boolean indicating whether to revert if the\n     *                          order is invalid due to the time or status.\n     * @param priorOrderHashes  The order hashes of each order supplied prior to\n     *                          the current order as part of a \"match\" variety\n     *                          of order fulfillment (e.g. this array will be\n     *                          empty for single or \"fulfill available\").\n     *\n     * @return orderHash      The order hash.\n     * @return newNumerator   A value indicating the portion of the order that\n     *                        will be filled.\n     * @return newDenominator A value indicating the total size of the order.\n     */\n    function _validateOrderAndUpdateStatus(\n        AdvancedOrder memory advancedOrder,\n        CriteriaResolver[] memory criteriaResolvers,\n        bool revertOnInvalid,\n        bytes32[] memory priorOrderHashes\n    )\n        internal\n        returns (\n            bytes32 orderHash,\n            uint256 newNumerator,\n            uint256 newDenominator\n        )\n    {\n        // Retrieve the parameters for the order.\n        OrderParameters memory orderParameters = advancedOrder.parameters;\n\n        // Ensure current timestamp falls between order start time and end time.\n        if (\n            !_verifyTime(\n                orderParameters.startTime,\n                orderParameters.endTime,\n                revertOnInvalid\n            )\n        ) {\n            // Assuming an invalid time and no revert, return zeroed out values.\n            return (bytes32(0), 0, 0);\n        }\n\n        // Read numerator and denominator from memory and place on the stack.\n        uint256 numerator = uint256(advancedOrder.numerator);\n        uint256 denominator = uint256(advancedOrder.denominator);\n\n        // Ensure that the supplied numerator and denominator are valid.\n        if (numerator > denominator || numerator == 0) {\n            revert BadFraction();\n        }\n\n        // If attempting partial fill (n < d) check order type & ensure support.\n        if (\n            numerator < denominator &&\n            _doesNotSupportPartialFills(orderParameters.orderType)\n        ) {\n            // Revert if partial fill was attempted on an unsupported order.\n            revert PartialFillsNotEnabledForOrder();\n        }\n\n        // Retrieve current nonce and use it w/ parameters to derive order hash.\n        orderHash = _assertConsiderationLengthAndGetNoncedOrderHash(\n            orderParameters\n        );\n\n        // Ensure restricted orders have a valid submitter or pass a zone check.\n        _assertRestrictedAdvancedOrderValidity(\n            advancedOrder,\n            criteriaResolvers,\n            priorOrderHashes,\n            orderHash,\n            orderParameters.zoneHash,\n            orderParameters.orderType,\n            orderParameters.offerer,\n            orderParameters.zone\n        );\n\n        // Retrieve the order status using the derived order hash.\n        OrderStatus memory orderStatus = _orderStatus[orderHash];\n\n        // Ensure order is fillable and is not cancelled.\n        if (\n            !_verifyOrderStatus(\n                orderHash,\n                orderStatus,\n                false, // Allow partially used orders to be filled.\n                revertOnInvalid\n            )\n        ) {\n            // Assuming an invalid order status and no revert, return zero fill.\n            return (orderHash, 0, 0);\n        }\n\n        // If the order is not already validated, verify the supplied signature.\n        if (!orderStatus.isValidated) {\n            _verifySignature(\n                orderParameters.offerer,\n                orderHash,\n                advancedOrder.signature\n            );\n        }\n\n        // Read filled amount as numerator and denominator and put on the stack.\n        uint256 filledNumerator = orderStatus.numerator;\n        uint256 filledDenominator = orderStatus.denominator;\n\n        // If order currently has a non-zero denominator it is partially filled.\n        if (filledDenominator != 0) {\n            // If denominator of 1 supplied, fill all remaining amount on order.\n            if (denominator == 1) {\n                // Scale numerator & denominator to match current denominator.\n                numerator = filledDenominator;\n                denominator = filledDenominator;\n            }\n            // Otherwise, if supplied denominator differs from current one...\n            else if (filledDenominator != denominator) {\n                // scale current numerator by the supplied denominator, then...\n                filledNumerator *= denominator;\n\n                // the supplied numerator & denominator by current denominator.\n                numerator *= filledDenominator;\n                denominator *= filledDenominator;\n            }\n\n            // Once adjusted, if current+supplied numerator exceeds denominator:\n            if (filledNumerator + numerator > denominator) {\n                // Skip underflow check: denominator >= orderStatus.numerator\n                unchecked {\n                    // Reduce current numerator so it + supplied = denominator.\n                    numerator = denominator - filledNumerator;\n                }\n            }\n\n            // Skip overflow check: checked above unless numerator is reduced.\n            unchecked {\n                // Update order status and fill amount, packing struct values.\n                _orderStatus[orderHash].isValidated = true;\n                _orderStatus[orderHash].isCancelled = false;\n                _orderStatus[orderHash].numerator = uint120(\n                    filledNumerator + numerator\n                );\n                _orderStatus[orderHash].denominator = uint120(denominator);\n            }\n        } else {\n            // Update order status and fill amount, packing struct values.\n            _orderStatus[orderHash].isValidated = true;\n            _orderStatus[orderHash].isCancelled = false;\n            _orderStatus[orderHash].numerator = uint120(numerator);\n            _orderStatus[orderHash].denominator = uint120(denominator);\n        }\n\n        // Return order hash, a modified numerator, and a modified denominator.\n        return (orderHash, numerator, denominator);\n    }\n\n    /**\n     * @dev Internal function to cancel an arbitrary number of orders. Note that\n     *      only the offerer or the zone of a given order may cancel it. Callers\n     *      should ensure that the intended order was cancelled by calling\n     *      `getOrderStatus` and confirming that `isCancelled` returns `true`.\n     *\n     * @param orders The orders to cancel.\n     *\n     * @return cancelled A boolean indicating whether the supplied orders were\n     *                   successfully cancelled.\n     */\n    function _cancel(OrderComponents[] calldata orders)\n        internal\n        returns (bool cancelled)\n    {\n        // Ensure that the reentrancy guard is not currently set.\n        _assertNonReentrant();\n\n        address offerer;\n        address zone;\n\n        // Skip overflow check as for loop is indexed starting at zero.\n        unchecked {\n            // Read length of the orders array from memory and place on stack.\n            uint256 totalOrders = orders.length;\n\n            // Iterate over each order.\n            for (uint256 i = 0; i < totalOrders; ) {\n                // Retrieve the order.\n                OrderComponents calldata order = orders[i];\n\n                offerer = order.offerer;\n                zone = order.zone;\n\n                // Ensure caller is either offerer or zone of the order.\n                if (msg.sender != offerer && msg.sender != zone) {\n                    revert InvalidCanceller();\n                }\n\n                // Derive order hash using the order parameters and the nonce.\n                bytes32 orderHash = _deriveOrderHash(\n                    OrderParameters(\n                        offerer,\n                        zone,\n                        order.offer,\n                        order.consideration,\n                        order.orderType,\n                        order.startTime,\n                        order.endTime,\n                        order.zoneHash,\n                        order.salt,\n                        order.conduitKey,\n                        order.consideration.length\n                    ),\n                    order.nonce\n                );\n\n                // Update the order status as not valid and cancelled.\n                _orderStatus[orderHash].isValidated = false;\n                _orderStatus[orderHash].isCancelled = true;\n\n                // Emit an event signifying that the order has been cancelled.\n                emit OrderCancelled(orderHash, offerer, zone);\n\n                // Increment counter inside body of loop for gas efficiency.\n                ++i;\n            }\n        }\n\n        // Return a boolean indicating that orders were successfully cancelled.\n        cancelled = true;\n    }\n\n    /**\n     * @dev Internal function to validate an arbitrary number of orders, thereby\n     *      registering their signatures as valid and allowing the fulfiller to\n     *      skip signature verification on fulfillment. Note that validated\n     *      orders may still be unfulfillable due to invalid item amounts or\n     *      other factors; callers should determine whether validated orders are\n     *      fulfillable by simulating the fulfillment call prior to execution.\n     *      Also note that anyone can validate a signed order, but only the\n     *      offerer can validate an order without supplying a signature.\n     *\n     * @param orders The orders to validate.\n     *\n     * @return validated A boolean indicating whether the supplied orders were\n     *                   successfully validated.\n     */\n    function _validate(Order[] calldata orders)\n        internal\n        returns (bool validated)\n    {\n        // Ensure that the reentrancy guard is not currently set.\n        _assertNonReentrant();\n\n        // Declare variables outside of the loop.\n        bytes32 orderHash;\n        address offerer;\n\n        // Skip overflow check as for loop is indexed starting at zero.\n        unchecked {\n            // Read length of the orders array from memory and place on stack.\n            uint256 totalOrders = orders.length;\n\n            // Iterate over each order.\n            for (uint256 i = 0; i < totalOrders; ) {\n                // Retrieve the order.\n                Order calldata order = orders[i];\n\n                // Retrieve the order parameters.\n                OrderParameters calldata orderParameters = order.parameters;\n\n                // Move offerer from memory to the stack.\n                offerer = orderParameters.offerer;\n\n                // Get current nonce and use it w/ params to derive order hash.\n                orderHash = _assertConsiderationLengthAndGetNoncedOrderHash(\n                    orderParameters\n                );\n\n                // Retrieve the order status using the derived order hash.\n                OrderStatus memory orderStatus = _orderStatus[orderHash];\n\n                // Ensure order is fillable and retrieve the filled amount.\n                _verifyOrderStatus(\n                    orderHash,\n                    orderStatus,\n                    false, // Signifies that partially filled orders are valid.\n                    true // Signifies to revert if the order is invalid.\n                );\n\n                // If the order has not already been validated...\n                if (!orderStatus.isValidated) {\n                    // Verify the supplied signature.\n                    _verifySignature(offerer, orderHash, order.signature);\n\n                    // Update order status to mark the order as valid.\n                    _orderStatus[orderHash].isValidated = true;\n\n                    // Emit an event signifying the order has been validated.\n                    emit OrderValidated(\n                        orderHash,\n                        offerer,\n                        orderParameters.zone\n                    );\n                }\n\n                // Increment counter inside body of the loop for gas efficiency.\n                ++i;\n            }\n        }\n\n        // Return a boolean indicating that orders were successfully validated.\n        validated = true;\n    }\n\n    /**\n     * @dev Internal view function to retrieve the status of a given order by\n     *      hash, including whether the order has been cancelled or validated\n     *      and the fraction of the order that has been filled.\n     *\n     * @param orderHash The order hash in question.\n     *\n     * @return isValidated A boolean indicating whether the order in question\n     *                     has been validated (i.e. previously approved or\n     *                     partially filled).\n     * @return isCancelled A boolean indicating whether the order in question\n     *                     has been cancelled.\n     * @return totalFilled The total portion of the order that has been filled\n     *                     (i.e. the \"numerator\").\n     * @return totalSize   The total size of the order that is either filled or\n     *                     unfilled (i.e. the \"denominator\").\n     */\n    function _getOrderStatus(bytes32 orderHash)\n        internal\n        view\n        returns (\n            bool isValidated,\n            bool isCancelled,\n            uint256 totalFilled,\n            uint256 totalSize\n        )\n    {\n        // Retrieve the order status using the order hash.\n        OrderStatus memory orderStatus = _orderStatus[orderHash];\n\n        // Return the fields on the order status.\n        return (\n            orderStatus.isValidated,\n            orderStatus.isCancelled,\n            orderStatus.numerator,\n            orderStatus.denominator\n        );\n    }\n\n    /**\n     * @dev Internal pure function to check whether a given order type indicates\n     *      that partial fills are not supported (e.g. only \"full fills\" are\n     *      allowed for the order in question).\n     *\n     * @param orderType The order type in question.\n     *\n     * @return isFullOrder A boolean indicating whether the order type only\n     *                     supports full fills.\n     */\n    function _doesNotSupportPartialFills(OrderType orderType)\n        internal\n        pure\n        returns (bool isFullOrder)\n    {\n        // The \"full\" order types are even, while \"partial\" order types are odd.\n        // Bitwise and by 1 is equivalent to modulo by 2, but 2 gas cheaper.\n        assembly {\n            // Equivalent to `uint256(orderType) & 1 == 0`.\n            isFullOrder := iszero(and(orderType, 1))\n        }\n    }\n}\n"
      },
      "seaport/contracts/lib/BasicOrderFulfiller.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\nimport { ConduitInterface } from \"../interfaces/ConduitInterface.sol\";\n\n// prettier-ignore\nimport {\n    OrderType,\n    ItemType,\n    BasicOrderRouteType\n} from \"./ConsiderationEnums.sol\";\n\n// prettier-ignore\nimport {\n    AdditionalRecipient,\n    BasicOrderParameters,\n    OfferItem,\n    ConsiderationItem,\n    SpentItem,\n    ReceivedItem\n} from \"./ConsiderationStructs.sol\";\n\nimport { OrderValidator } from \"./OrderValidator.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\n/**\n * @title BasicOrderFulfiller\n * @author 0age\n * @notice BasicOrderFulfiller contains functionality for fulfilling \"basic\"\n *         orders with minimal overhead. See documentation for details on what\n *         qualifies as a basic order.\n */\ncontract BasicOrderFulfiller is OrderValidator {\n    /**\n     * @dev Derive and set hashes, reference chainId, and associated domain\n     *      separator during deployment.\n     *\n     * @param conduitController A contract that deploys conduits, or proxies\n     *                          that may optionally be used to transfer approved\n     *                          ERC20/721/1155 tokens.\n     */\n    constructor(address conduitController) OrderValidator(conduitController) {}\n\n    /**\n     * @dev Internal function to fulfill an order offering an ERC20, ERC721, or\n     *      ERC1155 item by supplying Ether (or other native tokens), ERC20\n     *      tokens, an ERC721 item, or an ERC1155 item as consideration. Six\n     *      permutations are supported: Native token to ERC721, Native token to\n     *      ERC1155, ERC20 to ERC721, ERC20 to ERC1155, ERC721 to ERC20, and\n     *      ERC1155 to ERC20 (with native tokens supplied as msg.value). For an\n     *      order to be eligible for fulfillment via this method, it must\n     *      contain a single offer item (though that item may have a greater\n     *      amount if the item is not an ERC721). An arbitrary number of\n     *      \"additional recipients\" may also be supplied which will each receive\n     *      native tokens or ERC20 items from the fulfiller as consideration.\n     *      Refer to the documentation for a more comprehensive summary of how\n     *      to utilize this method and what orders are compatible with it.\n     *\n     * @param parameters Additional information on the fulfilled order. Note\n     *                   that the offerer and the fulfiller must first approve\n     *                   this contract (or their chosen conduit if indicated)\n     *                   before any tokens can be transferred. Also note that\n     *                   contract recipients of ERC1155 consideration items must\n     *                   implement `onERC1155Received` in order to receive those\n     *                   items.\n     *\n     * @return A boolean indicating whether the order has been fulfilled.\n     */\n    function _validateAndFulfillBasicOrder(\n        BasicOrderParameters calldata parameters\n    ) internal returns (bool) {\n        // Declare enums for order type & route to extract from basicOrderType.\n        BasicOrderRouteType route;\n        OrderType orderType;\n\n        // Declare additional recipient item type to derive from the route type.\n        ItemType additionalRecipientsItemType;\n\n        // Utilize assembly to extract the order type and the basic order route.\n        assembly {\n            // Mask all but 2 least-significant bits to derive the order type.\n            orderType := and(calldataload(BasicOrder_basicOrderType_cdPtr), 3)\n\n            // Divide basicOrderType by four to derive the route.\n            route := div(calldataload(BasicOrder_basicOrderType_cdPtr), 4)\n\n            // If route > 1 additionalRecipient items are ERC20 (1) else Eth (0)\n            additionalRecipientsItemType := gt(route, 1)\n        }\n\n        {\n            // Declare temporary variable for enforcing payable status.\n            bool correctPayableStatus;\n\n            // Utilize assembly to compare the route to the callvalue.\n            assembly {\n                // route 0 and 1 are payable, otherwise route is not payable.\n                correctPayableStatus := eq(\n                    additionalRecipientsItemType,\n                    iszero(callvalue())\n                )\n            }\n\n            // Revert if msg.value has not been supplied as part of payable\n            // routes or has been supplied as part of non-payable routes.\n            if (!correctPayableStatus) {\n                revert InvalidMsgValue(msg.value);\n            }\n        }\n\n        // Declare more arguments that will be derived from route and calldata.\n        address additionalRecipientsToken;\n        ItemType receivedItemType;\n        ItemType offeredItemType;\n\n        // Utilize assembly to retrieve function arguments and cast types.\n        assembly {\n            // Determine if offered item type == additional recipient item type.\n            let offerTypeIsAdditionalRecipientsType := gt(route, 3)\n\n            // If route > 3 additionalRecipientsToken is at 0xc4 else 0x24.\n            additionalRecipientsToken := calldataload(\n                add(\n                    BasicOrder_considerationToken_cdPtr,\n                    mul(offerTypeIsAdditionalRecipientsType, FiveWords)\n                )\n            )\n\n            // If route > 2, receivedItemType is route - 2. If route is 2, then\n            // receivedItemType is ERC20 (1). Otherwise, it is Eth (0).\n            receivedItemType := add(\n                mul(sub(route, 2), gt(route, 2)),\n                eq(route, 2)\n            )\n\n            // If route > 3, offeredItemType is ERC20 (1). If route is 2 or 3,\n            // offeredItemType = route. If route is 0 or 1, it is route + 2.\n            offeredItemType := sub(\n                add(route, mul(iszero(additionalRecipientsItemType), 2)),\n                mul(\n                    offerTypeIsAdditionalRecipientsType,\n                    add(receivedItemType, 1)\n                )\n            )\n        }\n\n        // Derive & validate order using parameters and update order status.\n        _prepareBasicFulfillmentFromCalldata(\n            parameters,\n            orderType,\n            receivedItemType,\n            additionalRecipientsItemType,\n            additionalRecipientsToken,\n            offeredItemType\n        );\n\n        // Read offerer from calldata and place on the stack.\n        address payable offerer = parameters.offerer;\n\n        // Declare conduitKey argument used by transfer functions.\n        bytes32 conduitKey;\n\n        // Utilize assembly to derive conduit (if relevant) based on route.\n        assembly {\n            // use offerer conduit for routes 0-3, fulfiller conduit otherwise.\n            conduitKey := calldataload(\n                add(BasicOrder_offererConduit_cdPtr, mul(gt(route, 3), OneWord))\n            )\n        }\n\n        // Transfer tokens based on the route.\n        if (additionalRecipientsItemType == ItemType.NATIVE) {\n            _transferIndividual721Or1155Item(\n                offeredItemType,\n                parameters.offerToken,\n                offerer,\n                msg.sender,\n                parameters.offerIdentifier,\n                parameters.offerAmount,\n                conduitKey\n            );\n\n            // Transfer native to recipients, return excess to caller & wrap up.\n            _transferEthAndFinalize(\n                parameters.considerationAmount,\n                offerer,\n                parameters.additionalRecipients\n            );\n        } else {\n            // Initialize an accumulator array. From this point forward, no new\n            // memory regions can be safely allocated until the accumulator is\n            // no longer being utilized, as the accumulator operates in an\n            // open-ended fashion from this memory pointer; existing memory may\n            // still be accessed and modified, however.\n            bytes memory accumulator = new bytes(AccumulatorDisarmed);\n\n            if (route == BasicOrderRouteType.ERC20_TO_ERC721) {\n                // Transfer ERC721 to caller using offerer's conduit preference.\n                _transferERC721(\n                    parameters.offerToken,\n                    offerer,\n                    msg.sender,\n                    parameters.offerIdentifier,\n                    parameters.offerAmount,\n                    conduitKey,\n                    accumulator\n                );\n\n                // Transfer ERC20 tokens to all recipients and wrap up.\n                _transferERC20AndFinalize(\n                    msg.sender,\n                    offerer,\n                    parameters.considerationToken,\n                    parameters.considerationAmount,\n                    parameters.additionalRecipients,\n                    false, // Send full amount indicated by consideration items.\n                    accumulator\n                );\n            } else if (route == BasicOrderRouteType.ERC20_TO_ERC1155) {\n                // Transfer ERC1155 to caller with offerer's conduit preference.\n                _transferERC1155(\n                    parameters.offerToken,\n                    offerer,\n                    msg.sender,\n                    parameters.offerIdentifier,\n                    parameters.offerAmount,\n                    conduitKey,\n                    accumulator\n                );\n\n                // Transfer ERC20 tokens to all recipients and wrap up.\n                _transferERC20AndFinalize(\n                    msg.sender,\n                    offerer,\n                    parameters.considerationToken,\n                    parameters.considerationAmount,\n                    parameters.additionalRecipients,\n                    false, // Send full amount indicated by consideration items.\n                    accumulator\n                );\n            } else if (route == BasicOrderRouteType.ERC721_TO_ERC20) {\n                // Transfer ERC721 to offerer using caller's conduit preference.\n                _transferERC721(\n                    parameters.considerationToken,\n                    msg.sender,\n                    offerer,\n                    parameters.considerationIdentifier,\n                    parameters.considerationAmount,\n                    conduitKey,\n                    accumulator\n                );\n\n                // Transfer ERC20 tokens to all recipients and wrap up.\n                _transferERC20AndFinalize(\n                    offerer,\n                    msg.sender,\n                    parameters.offerToken,\n                    parameters.offerAmount,\n                    parameters.additionalRecipients,\n                    true, // Reduce fulfiller amount sent by additional amounts.\n                    accumulator\n                );\n            } else {\n                // route == BasicOrderRouteType.ERC1155_TO_ERC20\n\n                // Transfer ERC1155 to offerer with caller's conduit preference.\n                _transferERC1155(\n                    parameters.considerationToken,\n                    msg.sender,\n                    offerer,\n                    parameters.considerationIdentifier,\n                    parameters.considerationAmount,\n                    conduitKey,\n                    accumulator\n                );\n\n                // Transfer ERC20 tokens to all recipients and wrap up.\n                _transferERC20AndFinalize(\n                    offerer,\n                    msg.sender,\n                    parameters.offerToken,\n                    parameters.offerAmount,\n                    parameters.additionalRecipients,\n                    true, // Reduce fulfiller amount sent by additional amounts.\n                    accumulator\n                );\n            }\n\n            // Trigger any remaining accumulated transfers via call to conduit.\n            _triggerIfArmed(accumulator);\n        }\n\n        return true;\n    }\n\n    /**\n     * @dev Internal function to prepare fulfillment of a basic order with\n     *      manual calldata and memory access. This calculates the order hash,\n     *      emits an OrderFulfilled event, and asserts basic order validity.\n     *      Note that calldata offsets must be validated as this function\n     *      accesses constant calldata pointers for dynamic types that match\n     *      default ABI encoding, but valid ABI encoding can use arbitrary\n     *      offsets. Checking that the offsets were produced by default encoding\n     *      will ensure that other functions using Solidity's calldata accessors\n     *      (which calculate pointers from the stored offsets) are reading the\n     *      same data as the order hash is derived from. Also note that This\n     *      function accesses memory directly. It does not clear the expanded\n     *      memory regions used, nor does it update the free memory pointer, so\n     *      other direct memory access must not assume that unused memory is\n     *      empty.\n     *\n     * @param parameters                   The parameters of the basic order.\n     * @param orderType                    The order type.\n     * @param receivedItemType             The item type of the initial\n     *                                     consideration item on the order.\n     * @param additionalRecipientsItemType The item type of any additional\n     *                                     consideration item on the order.\n     * @param additionalRecipientsToken    The ERC20 token contract address (if\n     *                                     applicable) for any additional\n     *                                     consideration item on the order.\n     * @param offeredItemType              The item type of the offered item on\n     *                                     the order.\n     */\n    function _prepareBasicFulfillmentFromCalldata(\n        BasicOrderParameters calldata parameters,\n        OrderType orderType,\n        ItemType receivedItemType,\n        ItemType additionalRecipientsItemType,\n        address additionalRecipientsToken,\n        ItemType offeredItemType\n    ) internal {\n        // Ensure this function cannot be triggered during a reentrant call.\n        _setReentrancyGuard();\n\n        // Ensure current timestamp falls between order start time and end time.\n        _verifyTime(parameters.startTime, parameters.endTime, true);\n\n        // Verify that calldata offsets for all dynamic types were produced by\n        // default encoding. This ensures that the constants we use for calldata\n        // pointers to dynamic types are the same as those calculated by\n        // Solidity using their offsets.\n        _assertValidBasicOrderParameterOffsets();\n\n        // Ensure supplied consideration array length is not less than original.\n        _assertConsiderationLengthIsNotLessThanOriginalConsiderationLength(\n            parameters.additionalRecipients.length + 1,\n            parameters.totalOriginalAdditionalRecipients\n        );\n\n        // Declare stack element for the order hash.\n        bytes32 orderHash;\n\n        {\n            /**\n             * First, handle consideration items. Memory Layout:\n             *  0x60: final hash of the array of consideration item hashes\n             *  0x80-0x160: reused space for EIP712 hashing of each item\n             *   - 0x80: ConsiderationItem EIP-712 typehash (constant)\n             *   - 0xa0: itemType\n             *   - 0xc0: token\n             *   - 0xe0: identifier\n             *   - 0x100: startAmount\n             *   - 0x120: endAmount\n             *   - 0x140: recipient\n             *  0x160-END_ARR: array of consideration item hashes\n             *   - 0x160: primary consideration item EIP712 hash\n             *   - 0x180-END_ARR: additional recipient item EIP712 hashes\n             *  END_ARR: beginning of data for OrderFulfilled event\n             *   - END_ARR + 0x120: length of ReceivedItem array\n             *   - END_ARR + 0x140: beginning of data for first ReceivedItem\n             * (Note: END_ARR = 0x180 + RECIPIENTS_LENGTH * 0x20)\n             */\n\n            // Load consideration item typehash from runtime and place on stack.\n            bytes32 typeHash = _CONSIDERATION_ITEM_TYPEHASH;\n\n            // Utilize assembly to enable reuse of memory regions and use\n            // constant pointers when possible.\n            assembly {\n                /*\n                 * 1. Calculate the EIP712 ConsiderationItem hash for the\n                 * primary consideration item of the basic order.\n                 */\n\n                // Write ConsiderationItem type hash and item type to memory.\n                mstore(BasicOrder_considerationItem_typeHash_ptr, typeHash)\n                mstore(\n                    BasicOrder_considerationItem_itemType_ptr,\n                    receivedItemType\n                )\n\n                // Copy calldata region with (token, identifier, amount) from\n                // BasicOrderParameters to ConsiderationItem. The\n                // considerationAmount is written to startAmount and endAmount\n                // as basic orders do not have dynamic amounts.\n                calldatacopy(\n                    BasicOrder_considerationItem_token_ptr,\n                    BasicOrder_considerationToken_cdPtr,\n                    ThreeWords\n                )\n\n                // Copy calldata region with considerationAmount and offerer\n                // from BasicOrderParameters to endAmount and recipient in\n                // ConsiderationItem.\n                calldatacopy(\n                    BasicOrder_considerationItem_endAmount_ptr,\n                    BasicOrder_considerationAmount_cdPtr,\n                    TwoWords\n                )\n\n                // Calculate EIP712 ConsiderationItem hash and store it in the\n                // array of EIP712 consideration hashes.\n                mstore(\n                    BasicOrder_considerationHashesArray_ptr,\n                    keccak256(\n                        BasicOrder_considerationItem_typeHash_ptr,\n                        EIP712_ConsiderationItem_size\n                    )\n                )\n\n                /*\n                 * 2. Write a ReceivedItem struct for the primary consideration\n                 * item to the consideration array in OrderFulfilled.\n                 */\n\n                // Get the length of the additional recipients array.\n                let totalAdditionalRecipients := calldataload(\n                    BasicOrder_additionalRecipients_length_cdPtr\n                )\n\n                // Calculate pointer to length of OrderFulfilled consideration\n                // array.\n                let eventConsiderationArrPtr := add(\n                    OrderFulfilled_consideration_length_baseOffset,\n                    mul(totalAdditionalRecipients, OneWord)\n                )\n\n                // Set the length of the consideration array to the number of\n                // additional recipients, plus one for the primary consideration\n                // item.\n                mstore(\n                    eventConsiderationArrPtr,\n                    add(\n                        calldataload(\n                            BasicOrder_additionalRecipients_length_cdPtr\n                        ),\n                        1\n                    )\n                )\n\n                // Overwrite the consideration array pointer so it points to the\n                // body of the first element\n                eventConsiderationArrPtr := add(\n                    eventConsiderationArrPtr,\n                    OneWord\n                )\n\n                // Set itemType at start of the ReceivedItem memory region.\n                mstore(eventConsiderationArrPtr, receivedItemType)\n\n                // Copy calldata region (token, identifier, amount & recipient)\n                // from BasicOrderParameters to ReceivedItem memory.\n                calldatacopy(\n                    add(eventConsiderationArrPtr, Common_token_offset),\n                    BasicOrder_considerationToken_cdPtr,\n                    FourWords\n                )\n\n                /*\n                 * 3. Calculate EIP712 ConsiderationItem hashes for original\n                 * additional recipients and add a ReceivedItem for each to the\n                 * consideration array in the OrderFulfilled event. The original\n                 * additional recipients are all the considerations signed by\n                 * the offerer aside from the primary consideration of the\n                 * order. Uses memory region from 0x80-0x160 as a buffer for\n                 * calculating EIP712 ConsiderationItem hashes.\n                 */\n\n                // Put pointer to consideration hashes array on the stack.\n                // This will be updated as each additional recipient is hashed\n                let\n                    considerationHashesPtr\n                := BasicOrder_considerationHashesArray_ptr\n\n                // Write item type, token, & identifier for additional recipient\n                // to memory region for hashing EIP712 ConsiderationItem; these\n                // values will be reused for each recipient.\n                mstore(\n                    BasicOrder_considerationItem_itemType_ptr,\n                    additionalRecipientsItemType\n                )\n                mstore(\n                    BasicOrder_considerationItem_token_ptr,\n                    additionalRecipientsToken\n                )\n                mstore(BasicOrder_considerationItem_identifier_ptr, 0)\n\n                // Read length of the additionalRecipients array from calldata\n                // and iterate.\n                totalAdditionalRecipients := calldataload(\n                    BasicOrder_totalOriginalAdditionalRecipients_cdPtr\n                )\n                let i := 0\n                // prettier-ignore\n                for {} lt(i, totalAdditionalRecipients) {\n                    i := add(i, 1)\n                } {\n                    /*\n                     * Calculate EIP712 ConsiderationItem hash for recipient.\n                     */\n\n                    // Retrieve calldata pointer for additional recipient.\n                    let additionalRecipientCdPtr := add(\n                        BasicOrder_additionalRecipients_data_cdPtr,\n                        mul(AdditionalRecipients_size, i)\n                    )\n\n                    // Copy startAmount from calldata to the ConsiderationItem\n                    // struct.\n                    calldatacopy(\n                        BasicOrder_considerationItem_startAmount_ptr,\n                        additionalRecipientCdPtr,\n                        OneWord\n                    )\n\n                    // Copy endAmount and recipient from calldata to the\n                    // ConsiderationItem struct.\n                    calldatacopy(\n                        BasicOrder_considerationItem_endAmount_ptr,\n                        additionalRecipientCdPtr,\n                        AdditionalRecipients_size\n                    )\n\n                    // Add 1 word to the pointer as part of each loop to reduce\n                    // operations needed to get local offset into the array.\n                    considerationHashesPtr := add(\n                        considerationHashesPtr,\n                        OneWord\n                    )\n\n                    // Calculate EIP712 ConsiderationItem hash and store it in\n                    // the array of consideration hashes.\n                    mstore(\n                        considerationHashesPtr,\n                        keccak256(\n                            BasicOrder_considerationItem_typeHash_ptr,\n                            EIP712_ConsiderationItem_size\n                        )\n                    )\n\n                    /*\n                     * Write ReceivedItem to OrderFulfilled data.\n                     */\n\n                    // At this point, eventConsiderationArrPtr points to the\n                    // beginning of the ReceivedItem struct of the previous\n                    // element in the array. Increase it by the size of the\n                    // struct to arrive at the pointer for the current element.\n                    eventConsiderationArrPtr := add(\n                        eventConsiderationArrPtr,\n                        ReceivedItem_size\n                    )\n\n                    // Write itemType to the ReceivedItem struct.\n                    mstore(\n                        eventConsiderationArrPtr,\n                        additionalRecipientsItemType\n                    )\n\n                    // Write token to the next word of the ReceivedItem struct.\n                    mstore(\n                        add(eventConsiderationArrPtr, OneWord),\n                        additionalRecipientsToken\n                    )\n\n                    // Copy endAmount & recipient words to ReceivedItem struct.\n                    calldatacopy(\n                        add(\n                            eventConsiderationArrPtr,\n                            ReceivedItem_amount_offset\n                        ),\n                        additionalRecipientCdPtr,\n                        TwoWords\n                    )\n                }\n\n                /*\n                 * 4. Hash packed array of ConsiderationItem EIP712 hashes:\n                 *   `keccak256(abi.encodePacked(receivedItemHashes))`\n                 * Note that it is set at 0x60 — all other memory begins at\n                 * 0x80. 0x60 is the \"zero slot\" and will be restored at the end\n                 * of the assembly section and before required by the compiler.\n                 */\n                mstore(\n                    receivedItemsHash_ptr,\n                    keccak256(\n                        BasicOrder_considerationHashesArray_ptr,\n                        mul(add(totalAdditionalRecipients, 1), OneWord)\n                    )\n                )\n\n                /*\n                 * 5. Add a ReceivedItem for each tip to the consideration array\n                 * in the OrderFulfilled event. The tips are all the\n                 * consideration items that were not signed by the offerer and\n                 * were provided by the fulfiller.\n                 */\n\n                // Overwrite length to length of the additionalRecipients array.\n                totalAdditionalRecipients := calldataload(\n                    BasicOrder_additionalRecipients_length_cdPtr\n                )\n                // prettier-ignore\n                for {} lt(i, totalAdditionalRecipients) {\n                    i := add(i, 1)\n                } {\n                    // Retrieve calldata pointer for additional recipient.\n                    let additionalRecipientCdPtr := add(\n                        BasicOrder_additionalRecipients_data_cdPtr,\n                        mul(AdditionalRecipients_size, i)\n                    )\n\n                    // At this point, eventConsiderationArrPtr points to the\n                    // beginning of the ReceivedItem struct of the previous\n                    // element in the array. Increase it by the size of the\n                    // struct to arrive at the pointer for the current element.\n                    eventConsiderationArrPtr := add(\n                        eventConsiderationArrPtr,\n                        ReceivedItem_size\n                    )\n\n                    // Write itemType to the ReceivedItem struct.\n                    mstore(\n                        eventConsiderationArrPtr,\n                        additionalRecipientsItemType\n                    )\n\n                    // Write token to the next word of the ReceivedItem struct.\n                    mstore(\n                        add(eventConsiderationArrPtr, OneWord),\n                        additionalRecipientsToken\n                    )\n\n                    // Copy endAmount & recipient words to ReceivedItem struct.\n                    calldatacopy(\n                        add(\n                            eventConsiderationArrPtr,\n                            ReceivedItem_amount_offset\n                        ),\n                        additionalRecipientCdPtr,\n                        TwoWords\n                    )\n                }\n            }\n        }\n\n        {\n            /**\n             * Next, handle offered items. Memory Layout:\n             *  EIP712 data for OfferItem\n             *   - 0x80:  OfferItem EIP-712 typehash (constant)\n             *   - 0xa0:  itemType\n             *   - 0xc0:  token\n             *   - 0xe0:  identifier (reused for offeredItemsHash)\n             *   - 0x100: startAmount\n             *   - 0x120: endAmount\n             */\n\n            // Place offer item typehash on the stack.\n            bytes32 typeHash = _OFFER_ITEM_TYPEHASH;\n\n            // Utilize assembly to enable reuse of memory regions when possible.\n            assembly {\n                /*\n                 * 1. Calculate OfferItem EIP712 hash\n                 */\n\n                // Write the OfferItem typeHash to memory.\n                mstore(BasicOrder_offerItem_typeHash_ptr, typeHash)\n\n                // Write the OfferItem item type to memory.\n                mstore(BasicOrder_offerItem_itemType_ptr, offeredItemType)\n\n                // Copy calldata region with (offerToken, offerIdentifier,\n                // offerAmount) from OrderParameters to (token, identifier,\n                // startAmount) in OfferItem struct. The offerAmount is written\n                // to startAmount and endAmount as basic orders do not have\n                // dynamic amounts.\n                calldatacopy(\n                    BasicOrder_offerItem_token_ptr,\n                    BasicOrder_offerToken_cdPtr,\n                    ThreeWords\n                )\n\n                // Copy offerAmount from calldata to endAmount in OfferItem\n                // struct.\n                calldatacopy(\n                    BasicOrder_offerItem_endAmount_ptr,\n                    BasicOrder_offerAmount_cdPtr,\n                    OneWord\n                )\n\n                // Compute EIP712 OfferItem hash, write result to scratch space:\n                //   `keccak256(abi.encode(offeredItem))`\n                mstore(\n                    0,\n                    keccak256(\n                        BasicOrder_offerItem_typeHash_ptr,\n                        EIP712_OfferItem_size\n                    )\n                )\n\n                /*\n                 * 2. Calculate hash of array of EIP712 hashes and write the\n                 * result to the corresponding OfferItem struct:\n                 *   `keccak256(abi.encodePacked(offerItemHashes))`\n                 */\n                mstore(BasicOrder_order_offerHashes_ptr, keccak256(0, OneWord))\n\n                /*\n                 * 3. Write SpentItem to offer array in OrderFulfilled event.\n                 */\n                let eventConsiderationArrPtr := add(\n                    OrderFulfilled_offer_length_baseOffset,\n                    mul(\n                        calldataload(\n                            BasicOrder_additionalRecipients_length_cdPtr\n                        ),\n                        OneWord\n                    )\n                )\n\n                // Set a length of 1 for the offer array.\n                mstore(eventConsiderationArrPtr, 1)\n\n                // Write itemType to the SpentItem struct.\n                mstore(add(eventConsiderationArrPtr, OneWord), offeredItemType)\n\n                // Copy calldata region with (offerToken, offerIdentifier,\n                // offerAmount) from OrderParameters to (token, identifier,\n                // amount) in SpentItem struct.\n                calldatacopy(\n                    add(eventConsiderationArrPtr, AdditionalRecipients_size),\n                    BasicOrder_offerToken_cdPtr,\n                    ThreeWords\n                )\n            }\n        }\n\n        {\n            /**\n             * Once consideration items and offer items have been handled,\n             * derive the final order hash. Memory Layout:\n             *  0x80-0x1c0: EIP712 data for order\n             *   - 0x80:   Order EIP-712 typehash (constant)\n             *   - 0xa0:   orderParameters.offerer\n             *   - 0xc0:   orderParameters.zone\n             *   - 0xe0:   keccak256(abi.encodePacked(offerHashes))\n             *   - 0x100:  keccak256(abi.encodePacked(considerationHashes))\n             *   - 0x120:  orderParameters.basicOrderType (% 4 = orderType)\n             *   - 0x140:  orderParameters.startTime\n             *   - 0x160:  orderParameters.endTime\n             *   - 0x180:  orderParameters.zoneHash\n             *   - 0x1a0:  orderParameters.salt\n             *   - 0x1c0:  orderParameters.conduitKey\n             *   - 0x1e0:  _nonces[orderParameters.offerer] (from storage)\n             */\n\n            // Read the offerer from calldata and place on the stack.\n            address offerer;\n            assembly {\n                offerer := calldataload(BasicOrder_offerer_cdPtr)\n            }\n\n            // Read offerer's current nonce from storage and place on the stack.\n            uint256 nonce = _getNonce(offerer);\n\n            // Load order typehash from runtime code and place on stack.\n            bytes32 typeHash = _ORDER_TYPEHASH;\n\n            assembly {\n                // Set the OrderItem typeHash in memory.\n                mstore(BasicOrder_order_typeHash_ptr, typeHash)\n\n                // Copy offerer and zone from OrderParameters in calldata to the\n                // Order struct.\n                calldatacopy(\n                    BasicOrder_order_offerer_ptr,\n                    BasicOrder_offerer_cdPtr,\n                    TwoWords\n                )\n\n                // Copy receivedItemsHash from zero slot to the Order struct.\n                mstore(\n                    BasicOrder_order_considerationHashes_ptr,\n                    mload(receivedItemsHash_ptr)\n                )\n\n                // Write the supplied orderType to the Order struct.\n                mstore(BasicOrder_order_orderType_ptr, orderType)\n\n                // Copy startTime, endTime, zoneHash, salt & conduit from\n                // calldata to the Order struct.\n                calldatacopy(\n                    BasicOrder_order_startTime_ptr,\n                    BasicOrder_startTime_cdPtr,\n                    FiveWords\n                )\n\n                // Take offerer's nonce retrieved from storage, write to struct.\n                mstore(BasicOrder_order_nonce_ptr, nonce)\n\n                // Compute the EIP712 Order hash.\n                orderHash := keccak256(\n                    BasicOrder_order_typeHash_ptr,\n                    EIP712_Order_size\n                )\n            }\n        }\n\n        assembly {\n            /**\n             * After the order hash has been derived, emit OrderFulfilled event:\n             *   event OrderFulfilled(\n             *     bytes32 orderHash,\n             *     address indexed offerer,\n             *     address indexed zone,\n             *     address fulfiller,\n             *     SpentItem[] offer,\n             *       > (itemType, token, id, amount)\n             *     ReceivedItem[] consideration\n             *       > (itemType, token, id, amount, recipient)\n             *   )\n             * topic0 - OrderFulfilled event signature\n             * topic1 - offerer\n             * topic2 - zone\n             * data:\n             *  - 0x00: orderHash\n             *  - 0x20: fulfiller\n             *  - 0x40: offer arr ptr (0x80)\n             *  - 0x60: consideration arr ptr (0x120)\n             *  - 0x80: offer arr len (1)\n             *  - 0xa0: offer.itemType\n             *  - 0xc0: offer.token\n             *  - 0xe0: offer.identifier\n             *  - 0x100: offer.amount\n             *  - 0x120: 1 + recipients.length\n             *  - 0x140: recipient 0\n             */\n\n            // Derive pointer to start of OrderFulfilled event data\n            let eventDataPtr := add(\n                OrderFulfilled_baseOffset,\n                mul(\n                    calldataload(BasicOrder_additionalRecipients_length_cdPtr),\n                    OneWord\n                )\n            )\n\n            // Write the order hash to the head of the event's data region.\n            mstore(eventDataPtr, orderHash)\n\n            // Write the fulfiller (i.e. the caller) next.\n            mstore(add(eventDataPtr, OrderFulfilled_fulfiller_offset), caller())\n\n            // Write the SpentItem and ReceivedItem array offsets (constants).\n            mstore(\n                // SpentItem array offset\n                add(eventDataPtr, OrderFulfilled_offer_head_offset),\n                OrderFulfilled_offer_body_offset\n            )\n            mstore(\n                // ReceivedItem array offset\n                add(eventDataPtr, OrderFulfilled_consideration_head_offset),\n                OrderFulfilled_consideration_body_offset\n            )\n\n            // Derive total data size including SpentItem and ReceivedItem data.\n            // SpentItem portion is already included in the baseSize constant,\n            // as there can only be one element in the array.\n            let dataSize := add(\n                OrderFulfilled_baseSize,\n                mul(\n                    calldataload(BasicOrder_additionalRecipients_length_cdPtr),\n                    ReceivedItem_size\n                )\n            )\n\n            // Emit OrderFulfilled log with three topics (the event signature\n            // as well as the two indexed arguments, the offerer and the zone).\n            log3(\n                // Supply the pointer for event data in memory.\n                eventDataPtr,\n                // Supply the size of event data in memory.\n                dataSize,\n                // Supply the OrderFulfilled event signature.\n                OrderFulfilled_selector,\n                // Supply the first topic (the offerer).\n                calldataload(BasicOrder_offerer_cdPtr),\n                // Supply the second topic (the zone).\n                calldataload(BasicOrder_zone_cdPtr)\n            )\n\n            // Restore the zero slot.\n            mstore(ZeroSlot, 0)\n        }\n\n        // Determine whether order is restricted and, if so, that it is valid.\n        _assertRestrictedBasicOrderValidity(\n            orderHash,\n            parameters.zoneHash,\n            orderType,\n            parameters.offerer,\n            parameters.zone\n        );\n\n        // Verify and update the status of the derived order.\n        _validateBasicOrderAndUpdateStatus(\n            orderHash,\n            parameters.offerer,\n            parameters.signature\n        );\n    }\n\n    /**\n     * @dev Internal function to transfer Ether (or other native tokens) to a\n     *      given recipient as part of basic order fulfillment. Note that\n     *      conduits are not utilized for native tokens as the transferred\n     *      amount must be provided as msg.value.\n     *\n     * @param amount               The amount to transfer.\n     * @param to                   The recipient of the native token transfer.\n     * @param additionalRecipients The additional recipients of the order.\n     */\n    function _transferEthAndFinalize(\n        uint256 amount,\n        address payable to,\n        AdditionalRecipient[] calldata additionalRecipients\n    ) internal {\n        // Put ether value supplied by the caller on the stack.\n        uint256 etherRemaining = msg.value;\n\n        // Retrieve total number of additional recipients and place on stack.\n        uint256 totalAdditionalRecipients = additionalRecipients.length;\n\n        // Iterate over each additional recipient.\n        for (uint256 i = 0; i < totalAdditionalRecipients; ) {\n            // Retrieve the additional recipient.\n            AdditionalRecipient calldata additionalRecipient = (\n                additionalRecipients[i]\n            );\n\n            // Read ether amount to transfer to recipient and place on stack.\n            uint256 additionalRecipientAmount = additionalRecipient.amount;\n\n            // Ensure that sufficient Ether is available.\n            if (additionalRecipientAmount > etherRemaining) {\n                revert InsufficientEtherSupplied();\n            }\n\n            // Transfer Ether to the additional recipient.\n            _transferEth(\n                additionalRecipient.recipient,\n                additionalRecipientAmount\n            );\n\n            // Skip underflow check as subtracted value is less than remaining.\n            unchecked {\n                // Reduce ether value available.\n                etherRemaining -= additionalRecipientAmount;\n            }\n\n            // Skip overflow check as for loop is indexed starting at zero.\n            unchecked {\n                ++i;\n            }\n        }\n\n        // Ensure that sufficient Ether is still available.\n        if (amount > etherRemaining) {\n            revert InsufficientEtherSupplied();\n        }\n\n        // Transfer Ether to the offerer.\n        _transferEth(to, amount);\n\n        // If any Ether remains after transfers, return it to the caller.\n        if (etherRemaining > amount) {\n            // Skip underflow check as etherRemaining > amount.\n            unchecked {\n                // Transfer remaining Ether to the caller.\n                _transferEth(payable(msg.sender), etherRemaining - amount);\n            }\n        }\n\n        // Clear the reentrancy guard.\n        _clearReentrancyGuard();\n    }\n\n    /**\n     * @dev Internal function to transfer ERC20 tokens to a given recipient as\n     *      part of basic order fulfillment.\n     *\n     * @param from                 The originator of the ERC20 token transfer.\n     * @param to                   The recipient of the ERC20 token transfer.\n     * @param erc20Token           The ERC20 token to transfer.\n     * @param amount               The amount of ERC20 tokens to transfer.\n     * @param additionalRecipients The additional recipients of the order.\n     * @param fromOfferer          A boolean indicating whether to decrement\n     *                             amount from the offered amount.\n     */\n    function _transferERC20AndFinalize(\n        address from,\n        address to,\n        address erc20Token,\n        uint256 amount,\n        AdditionalRecipient[] calldata additionalRecipients,\n        bool fromOfferer,\n        bytes memory accumulator\n    ) internal {\n        // Determine the appropriate conduit to utilize.\n        bytes32 conduitKey;\n\n        // Utilize assembly to derive conduit (if relevant) based on route.\n        assembly {\n            // use offerer conduit if fromOfferer, fulfiller conduit otherwise.\n            conduitKey := calldataload(\n                sub(\n                    BasicOrder_fulfillerConduit_cdPtr,\n                    mul(fromOfferer, OneWord)\n                )\n            )\n        }\n\n        // Retrieve total number of additional recipients and place on stack.\n        uint256 totalAdditionalRecipients = additionalRecipients.length;\n\n        // Iterate over each additional recipient.\n        for (uint256 i = 0; i < totalAdditionalRecipients; ) {\n            // Retrieve the additional recipient.\n            AdditionalRecipient calldata additionalRecipient = (\n                additionalRecipients[i]\n            );\n\n            uint256 additionalRecipientAmount = additionalRecipient.amount;\n\n            // Decrement the amount to transfer to fulfiller if indicated.\n            if (fromOfferer) {\n                amount -= additionalRecipientAmount;\n            }\n\n            // Transfer ERC20 tokens to additional recipient given approval.\n            _transferERC20(\n                erc20Token,\n                from,\n                additionalRecipient.recipient,\n                additionalRecipientAmount,\n                conduitKey,\n                accumulator\n            );\n\n            // Skip overflow check as for loop is indexed starting at zero.\n            unchecked {\n                ++i;\n            }\n        }\n\n        // Transfer ERC20 token amount (from account must have proper approval).\n        _transferERC20(erc20Token, from, to, amount, conduitKey, accumulator);\n\n        // Clear the reentrancy guard.\n        _clearReentrancyGuard();\n    }\n}\n"
      },
      "seaport/contracts/lib/OrderFulfiller.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\nimport { OrderType, ItemType } from \"./ConsiderationEnums.sol\";\n\n// prettier-ignore\nimport {\n    OfferItem,\n    ConsiderationItem,\n    SpentItem,\n    ReceivedItem,\n    OrderParameters,\n    Order,\n    AdvancedOrder,\n    CriteriaResolver\n} from \"./ConsiderationStructs.sol\";\n\nimport { BasicOrderFulfiller } from \"./BasicOrderFulfiller.sol\";\n\nimport { CriteriaResolution } from \"./CriteriaResolution.sol\";\n\nimport { AmountDeriver } from \"./AmountDeriver.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\n/**\n * @title OrderFulfiller\n * @author 0age\n * @notice OrderFulfiller contains logic related to order fulfillment where a\n *         single order is being fulfilled and where basic order fulfillment is\n *         not available as an option.\n */\ncontract OrderFulfiller is\n    BasicOrderFulfiller,\n    CriteriaResolution,\n    AmountDeriver\n{\n    /**\n     * @dev Derive and set hashes, reference chainId, and associated domain\n     *      separator during deployment.\n     *\n     * @param conduitController A contract that deploys conduits, or proxies\n     *                          that may optionally be used to transfer approved\n     *                          ERC20/721/1155 tokens.\n     */\n    constructor(address conduitController)\n        BasicOrderFulfiller(conduitController)\n    {}\n\n    /**\n     * @dev Internal function to validate an order and update its status, adjust\n     *      prices based on current time, apply criteria resolvers, determine\n     *      what portion to fill, and transfer relevant tokens.\n     *\n     * @param advancedOrder       The order to fulfill as well as the fraction\n     *                            to fill. Note that all offer and consideration\n     *                            components must divide with no remainder for\n     *                            the partial fill to be valid.\n     * @param criteriaResolvers   An array where each element contains a\n     *                            reference to a specific offer or\n     *                            consideration, a token identifier, and a proof\n     *                            that the supplied token identifier is\n     *                            contained in the order's merkle root. Note\n     *                            that a criteria of zero indicates that any\n     *                            (transferrable) token identifier is valid and\n     *                            that no proof needs to be supplied.\n     * @param fulfillerConduitKey A bytes32 value indicating what conduit, if\n     *                            any, to source the fulfiller's token approvals\n     *                            from. The zero hash signifies that no conduit\n     *                            should be used, with direct approvals set on\n     *                            Consideration.\n     *\n     * @return A boolean indicating whether the order has been fulfilled.\n     */\n    function _validateAndFulfillAdvancedOrder(\n        AdvancedOrder memory advancedOrder,\n        CriteriaResolver[] memory criteriaResolvers,\n        bytes32 fulfillerConduitKey\n    ) internal returns (bool) {\n        // Ensure this function cannot be triggered during a reentrant call.\n        _setReentrancyGuard();\n\n        // Declare empty bytes32 array (unused, will remain empty).\n        bytes32[] memory priorOrderHashes;\n\n        // Validate order, update status, and determine fraction to fill.\n        (\n            bytes32 orderHash,\n            uint256 fillNumerator,\n            uint256 fillDenominator\n        ) = _validateOrderAndUpdateStatus(\n                advancedOrder,\n                criteriaResolvers,\n                true,\n                priorOrderHashes\n            );\n\n        // Create an array with length 1 containing the order.\n        AdvancedOrder[] memory advancedOrders = new AdvancedOrder[](1);\n\n        // Populate the order as the first and only element of the new array.\n        advancedOrders[0] = advancedOrder;\n\n        // Apply criteria resolvers using generated orders and details arrays.\n        _applyCriteriaResolvers(advancedOrders, criteriaResolvers);\n\n        // Retrieve the order parameters after applying criteria resolvers.\n        OrderParameters memory orderParameters = advancedOrders[0].parameters;\n\n        // Perform each item transfer with the appropriate fractional amount.\n        _applyFractionsAndTransferEach(\n            orderParameters,\n            fillNumerator,\n            fillDenominator,\n            orderParameters.conduitKey,\n            fulfillerConduitKey\n        );\n\n        // Emit an event signifying that the order has been fulfilled.\n        _emitOrderFulfilledEvent(\n            orderHash,\n            orderParameters.offerer,\n            orderParameters.zone,\n            msg.sender,\n            orderParameters.offer,\n            orderParameters.consideration\n        );\n\n        // Clear the reentrancy guard.\n        _clearReentrancyGuard();\n\n        return true;\n    }\n\n    /**\n     * @dev Internal function to transfer each item contained in a given single\n     *      order fulfillment after applying a respective fraction to the amount\n     *      being transferred.\n     *\n     * @param orderParameters     The parameters for the fulfilled order.\n     * @param numerator           A value indicating the portion of the order\n     *                            that should be filled.\n     * @param denominator         A value indicating the total order size.\n     * @param offererConduitKey   An address indicating what conduit, if any, to\n     *                            source the offerer's token approvals from. The\n     *                            zero hash signifies that no conduit should be\n     *                            used, with direct approvals set on\n     *                            Consideration.\n     * @param fulfillerConduitKey A bytes32 value indicating what conduit, if\n     *                            any, to source the fulfiller's token approvals\n     *                            from. The zero hash signifies that no conduit\n     *                            should be used, with direct approvals set on\n     *                            Consideration.\n     */\n    function _applyFractionsAndTransferEach(\n        OrderParameters memory orderParameters,\n        uint256 numerator,\n        uint256 denominator,\n        bytes32 offererConduitKey,\n        bytes32 fulfillerConduitKey\n    ) internal {\n        // Derive order duration, time elapsed, and time remaining.\n        uint256 duration = orderParameters.endTime - orderParameters.startTime;\n        uint256 elapsed = block.timestamp - orderParameters.startTime;\n        uint256 remaining = duration - elapsed;\n\n        // Put ether value supplied by the caller on the stack.\n        uint256 etherRemaining = msg.value;\n\n        // Initialize an accumulator array. From this point forward, no new\n        // memory regions can be safely allocated until the accumulator is no\n        // longer being utilized, as the accumulator operates in an open-ended\n        // fashion from this memory pointer; existing memory may still be\n        // accessed and modified, however.\n        bytes memory accumulator = new bytes(AccumulatorDisarmed);\n\n        // As of solidity 0.6.0, inline assembly cannot directly access function\n        // definitions, but can still access locally scoped function variables.\n        // This means that in order to recast the type of a function, we need to\n        // create a local variable to reference the internal function definition\n        // (using the same type) and a local variable with the desired type,\n        // and then cast the original function pointer to the desired type.\n\n        /**\n         * Repurpose existing OfferItem memory regions on the offer array for\n         * the order by overriding the _transfer function pointer to accept a\n         * modified OfferItem argument in place of the usual ReceivedItem:\n         *\n         *   ========= OfferItem ==========   ====== ReceivedItem ======\n         *   ItemType itemType; ------------> ItemType itemType;\n         *   address token; ----------------> address token;\n         *   uint256 identifierOrCriteria; -> uint256 identifier;\n         *   uint256 startAmount; ----------> uint256 amount;\n         *   uint256 endAmount; ------------> address recipient;\n         */\n\n        // Declare a nested scope to minimize stack depth.\n        {\n            // Declare a virtual function pointer taking an OfferItem argument.\n            function(OfferItem memory, address, bytes32, bytes memory)\n                internal _transferOfferItem;\n\n            {\n                // Assign _transfer function to a new function pointer (it takes\n                // a ReceivedItem as its initial argument)\n                function(ReceivedItem memory, address, bytes32, bytes memory)\n                    internal _transferReceivedItem = _transfer;\n\n                // Utilize assembly to override the virtual function pointer.\n                assembly {\n                    // Cast initial ReceivedItem type to an OfferItem type.\n                    _transferOfferItem := _transferReceivedItem\n                }\n            }\n\n            // Iterate over each offer on the order.\n            for (uint256 i = 0; i < orderParameters.offer.length; ) {\n                // Retrieve the offer item.\n                OfferItem memory offerItem = orderParameters.offer[i];\n\n                // Apply fill fraction to derive offer item amount to transfer.\n                uint256 amount = _applyFraction(\n                    offerItem.startAmount,\n                    offerItem.endAmount,\n                    numerator,\n                    denominator,\n                    elapsed,\n                    remaining,\n                    duration,\n                    false\n                );\n\n                // Utilize assembly to set overloaded offerItem arguments.\n                assembly {\n                    // Write derived fractional amount to startAmount as amount.\n                    mstore(add(offerItem, ReceivedItem_amount_offset), amount)\n                    // Write fulfiller (i.e. caller) to endAmount as recipient.\n                    mstore(\n                        add(offerItem, ReceivedItem_recipient_offset),\n                        caller()\n                    )\n                }\n\n                // Reduce available value if offer spent ETH or a native token.\n                if (offerItem.itemType == ItemType.NATIVE) {\n                    // Ensure that sufficient native tokens are still available.\n                    if (amount > etherRemaining) {\n                        revert InsufficientEtherSupplied();\n                    }\n\n                    // Skip underflow check as a comparison has just been made.\n                    unchecked {\n                        etherRemaining -= amount;\n                    }\n                }\n\n                // Transfer the item from the offerer to the caller.\n                _transferOfferItem(\n                    offerItem,\n                    orderParameters.offerer,\n                    offererConduitKey,\n                    accumulator\n                );\n\n                // Skip overflow check as for loop is indexed starting at zero.\n                unchecked {\n                    ++i;\n                }\n            }\n        }\n\n        /**\n         * Repurpose existing ConsiderationItem memory regions on the\n         * consideration array for the order by overriding the _transfer\n         * function pointer to accept a modified ConsiderationItem argument in\n         * place of the usual ReceivedItem:\n         *\n         *   ====== ConsiderationItem =====   ====== ReceivedItem ======\n         *   ItemType itemType; ------------> ItemType itemType;\n         *   address token; ----------------> address token;\n         *   uint256 identifierOrCriteria;--> uint256 identifier;\n         *   uint256 startAmount; ----------> uint256 amount;\n         *   uint256 endAmount;        /----> address recipient;\n         *   address recipient; ------/\n         */\n\n        // Declare a nested scope to minimize stack depth.\n        {\n            // Declare virtual function pointer with ConsiderationItem argument.\n            function(ConsiderationItem memory, address, bytes32, bytes memory)\n                internal _transferConsiderationItem;\n            {\n                // Reassign _transfer function to a new function pointer (it\n                // takes a ReceivedItem as its initial argument).\n                function(ReceivedItem memory, address, bytes32, bytes memory)\n                    internal _transferReceivedItem = _transfer;\n\n                // Utilize assembly to override the virtual function pointer.\n                assembly {\n                    // Cast ReceivedItem type to ConsiderationItem type.\n                    _transferConsiderationItem := _transferReceivedItem\n                }\n            }\n\n            // Iterate over each consideration item on the order.\n            for (uint256 i = 0; i < orderParameters.consideration.length; ) {\n                // Retrieve the consideration item.\n                ConsiderationItem memory considerationItem = (\n                    orderParameters.consideration[i]\n                );\n\n                // Apply fraction & derive considerationItem amount to transfer.\n                uint256 amount = _applyFraction(\n                    considerationItem.startAmount,\n                    considerationItem.endAmount,\n                    numerator,\n                    denominator,\n                    elapsed,\n                    remaining,\n                    duration,\n                    true\n                );\n\n                // Use assembly to set overloaded considerationItem arguments.\n                assembly {\n                    // Write derived fractional amount to startAmount as amount.\n                    mstore(\n                        add(considerationItem, ReceivedItem_amount_offset),\n                        amount\n                    )\n\n                    // Write original recipient to endAmount as recipient.\n                    mstore(\n                        add(considerationItem, ReceivedItem_recipient_offset),\n                        mload(\n                            add(\n                                considerationItem,\n                                ConsiderationItem_recipient_offset\n                            )\n                        )\n                    )\n                }\n\n                // Reduce available value if offer spent ETH or a native token.\n                if (considerationItem.itemType == ItemType.NATIVE) {\n                    // Ensure that sufficient native tokens are still available.\n                    if (amount > etherRemaining) {\n                        revert InsufficientEtherSupplied();\n                    }\n\n                    // Skip underflow check as a comparison has just been made.\n                    unchecked {\n                        etherRemaining -= amount;\n                    }\n                }\n\n                // Transfer item from caller to recipient specified by the item.\n                _transferConsiderationItem(\n                    considerationItem,\n                    msg.sender,\n                    fulfillerConduitKey,\n                    accumulator\n                );\n\n                // Skip overflow check as for loop is indexed starting at zero.\n                unchecked {\n                    ++i;\n                }\n            }\n        }\n\n        // Trigger any remaining accumulated transfers via call to the conduit.\n        _triggerIfArmed(accumulator);\n\n        // If any ether remains after fulfillments...\n        if (etherRemaining != 0) {\n            // return it to the caller.\n            _transferEth(payable(msg.sender), etherRemaining);\n        }\n    }\n\n    /**\n     * @dev Internal function to emit an OrderFulfilled event. OfferItems are\n     *      translated into SpentItems and ConsiderationItems are translated\n     *      into ReceivedItems.\n     *\n     * @param orderHash     The order hash.\n     * @param offerer       The offerer for the order.\n     * @param zone          The zone for the order.\n     * @param fulfiller     The fulfiller of the order, or the null address if\n     *                      the order was fulfilled via order matching.\n     * @param offer         The offer items for the order.\n     * @param consideration The consideration items for the order.\n     */\n    function _emitOrderFulfilledEvent(\n        bytes32 orderHash,\n        address offerer,\n        address zone,\n        address fulfiller,\n        OfferItem[] memory offer,\n        ConsiderationItem[] memory consideration\n    ) internal {\n        // Cast already-modified offer memory region as spent items.\n        SpentItem[] memory spentItems;\n        assembly {\n            spentItems := offer\n        }\n\n        // Cast already-modified consideration memory region as received items.\n        ReceivedItem[] memory receivedItems;\n        assembly {\n            receivedItems := consideration\n        }\n\n        // Emit an event signifying that the order has been fulfilled.\n        emit OrderFulfilled(\n            orderHash,\n            offerer,\n            zone,\n            fulfiller,\n            spentItems,\n            receivedItems\n        );\n    }\n\n    /**\n     * @dev Internal pure function to convert an order to an advanced order with\n     *      numerator and denominator of 1 and empty extraData.\n     *\n     * @param order The order to convert.\n     *\n     * @return advancedOrder The new advanced order.\n     */\n    function _convertOrderToAdvanced(Order calldata order)\n        internal\n        pure\n        returns (AdvancedOrder memory advancedOrder)\n    {\n        // Convert to partial order (1/1 or full fill) and return new value.\n        advancedOrder = AdvancedOrder(\n            order.parameters,\n            1,\n            1,\n            order.signature,\n            \"\"\n        );\n    }\n\n    /**\n     * @dev Internal pure function to convert an array of orders to an array of\n     *      advanced orders with numerator and denominator of 1.\n     *\n     * @param orders The orders to convert.\n     *\n     * @return advancedOrders The new array of partial orders.\n     */\n    function _convertOrdersToAdvanced(Order[] calldata orders)\n        internal\n        pure\n        returns (AdvancedOrder[] memory advancedOrders)\n    {\n        // Read the number of orders from calldata and place on the stack.\n        uint256 totalOrders = orders.length;\n\n        // Allocate new empty array for each partial order in memory.\n        advancedOrders = new AdvancedOrder[](totalOrders);\n\n        // Skip overflow check as the index for the loop starts at zero.\n        unchecked {\n            // Iterate over the given orders.\n            for (uint256 i = 0; i < totalOrders; ++i) {\n                // Convert to partial order (1/1 or full fill) and update array.\n                advancedOrders[i] = _convertOrderToAdvanced(orders[i]);\n            }\n        }\n\n        // Return the array of advanced orders.\n        return advancedOrders;\n    }\n}\n"
      },
      "seaport/contracts/lib/AmountDeriver.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\n// prettier-ignore\nimport {\n    AmountDerivationErrors\n} from \"../interfaces/AmountDerivationErrors.sol\";\n\n/**\n * @title AmountDeriver\n * @author 0age\n * @notice AmountDeriver contains pure functions related to deriving item\n *         amounts based on partial fill quantity and on linear extrapolation\n *         based on current time when the start amount and end amount differ.\n */\ncontract AmountDeriver is AmountDerivationErrors {\n    /**\n     * @dev Internal pure function to derive the current amount of a given item\n     *      based on the current price, the starting price, and the ending\n     *      price. If the start and end prices differ, the current price will be\n     *      extrapolated on a linear basis.\n     *\n     * @param startAmount The starting amount of the item.\n     * @param endAmount   The ending amount of the item.\n     * @param elapsed     The time elapsed since the order's start time.\n     * @param remaining   The time left until the order's end time.\n     * @param duration    The total duration of the order.\n     * @param roundUp     A boolean indicating whether the resultant amount\n     *                    should be rounded up or down.\n     *\n     * @return The current amount.\n     */\n    function _locateCurrentAmount(\n        uint256 startAmount,\n        uint256 endAmount,\n        uint256 elapsed,\n        uint256 remaining,\n        uint256 duration,\n        bool roundUp\n    ) internal pure returns (uint256) {\n        // Only modify end amount if it doesn't already equal start amount.\n        if (startAmount != endAmount) {\n            // Leave extra amount to add for rounding at zero (i.e. round down).\n            uint256 extraCeiling = 0;\n\n            // If rounding up, set rounding factor to one less than denominator.\n            if (roundUp) {\n                // Skip underflow check: duration cannot be zero.\n                unchecked {\n                    extraCeiling = duration - 1;\n                }\n            }\n\n            // Aggregate new amounts weighted by time with rounding factor\n            // prettier-ignore\n            uint256 totalBeforeDivision = (\n                (startAmount * remaining) + (endAmount * elapsed) + extraCeiling\n            );\n\n            // Division performed with no zero check as duration cannot be zero.\n            uint256 newAmount;\n            assembly {\n                newAmount := div(totalBeforeDivision, duration)\n            }\n\n            // Return the current amount (expressed as endAmount internally).\n            return newAmount;\n        }\n\n        // Return the original amount (now expressed as endAmount internally).\n        return endAmount;\n    }\n\n    /**\n     * @dev Internal pure function to return a fraction of a given value and to\n     *      ensure the resultant value does not have any fractional component.\n     *      Note that this function assumes that zero will never be supplied as\n     *      the denominator parameter; invalid / undefined behavior will result\n     *      should a denominator of zero be provided.\n     *\n     * @param numerator   A value indicating the portion of the order that\n     *                    should be filled.\n     * @param denominator A value indicating the total size of the order. Note\n     *                    that this value cannot be equal to zero.\n     * @param value       The value for which to compute the fraction.\n     *\n     * @return newValue The value after applying the fraction.\n     */\n    function _getFraction(\n        uint256 numerator,\n        uint256 denominator,\n        uint256 value\n    ) internal pure returns (uint256 newValue) {\n        // Return value early in cases where the fraction resolves to 1.\n        if (numerator == denominator) {\n            return value;\n        }\n\n        // Ensure fraction can be applied to the value with no remainder. Note\n        // that the denominator cannot be zero.\n        bool exact;\n        assembly {\n            // Ensure new value contains no remainder via mulmod operator.\n            // Credit to @hrkrshnn + @axic for proposing this optimal solution.\n            exact := iszero(mulmod(value, numerator, denominator))\n        }\n\n        // Ensure that division gave a final result with no remainder.\n        if (!exact) {\n            revert InexactFraction();\n        }\n\n        // Multiply the numerator by the value and ensure no overflow occurs.\n        uint256 valueTimesNumerator = value * numerator;\n\n        // Divide and check for remainder. Note that denominator cannot be zero.\n        assembly {\n            // Perform division without zero check.\n            newValue := div(valueTimesNumerator, denominator)\n        }\n    }\n\n    /**\n     * @dev Internal pure function to apply a fraction to a consideration\n     * or offer item.\n     *\n     * @param startAmount     The starting amount of the item.\n     * @param endAmount       The ending amount of the item.\n     * @param numerator       A value indicating the portion of the order that\n     *                        should be filled.\n     * @param denominator     A value indicating the total size of the order.\n     * @param elapsed         The time elapsed since the order's start time.\n     * @param remaining       The time left until the order's end time.\n     * @param duration        The total duration of the order.\n     *\n     * @return amount The received item to transfer with the final amount.\n     */\n    function _applyFraction(\n        uint256 startAmount,\n        uint256 endAmount,\n        uint256 numerator,\n        uint256 denominator,\n        uint256 elapsed,\n        uint256 remaining,\n        uint256 duration,\n        bool roundUp\n    ) internal pure returns (uint256 amount) {\n        // If start amount equals end amount, apply fraction to end amount.\n        if (startAmount == endAmount) {\n            // Apply fraction to end amount.\n            amount = _getFraction(numerator, denominator, endAmount);\n        } else {\n            // Otherwise, apply fraction to both and extrapolate final amount.\n            amount = _locateCurrentAmount(\n                _getFraction(numerator, denominator, startAmount),\n                _getFraction(numerator, denominator, endAmount),\n                elapsed,\n                remaining,\n                duration,\n                roundUp\n            );\n        }\n    }\n}\n"
      },
      "seaport/contracts/interfaces/AmountDerivationErrors.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\n/**\n * @title AmountDerivationErrors\n * @author 0age\n * @notice AmountDerivationErrors contains errors related to amount derivation.\n */\ninterface AmountDerivationErrors {\n    /**\n     * @dev Revert with an error when attempting to apply a fraction as part of\n     *      a partial fill that does not divide the target amount cleanly.\n     */\n    error InexactFraction();\n}\n"
      },
      "seaport/contracts/lib/OrderCombiner.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\nimport { Side, ItemType } from \"./ConsiderationEnums.sol\";\n\n// prettier-ignore\nimport {\n    AdditionalRecipient,\n    OfferItem,\n    ConsiderationItem,\n    SpentItem,\n    ReceivedItem,\n    OrderParameters,\n    Fulfillment,\n    FulfillmentComponent,\n    Execution,\n    Order,\n    AdvancedOrder,\n    CriteriaResolver\n} from \"./ConsiderationStructs.sol\";\n\nimport { OrderFulfiller } from \"./OrderFulfiller.sol\";\n\nimport { FulfillmentApplier } from \"./FulfillmentApplier.sol\";\n\nimport \"./ConsiderationConstants.sol\";\n\n/**\n * @title OrderCombiner\n * @author 0age\n * @notice OrderCombiner contains logic for fulfilling combinations of orders,\n *         either by matching offer items to consideration items or by\n *         fulfilling orders where available.\n */\ncontract OrderCombiner is OrderFulfiller, FulfillmentApplier {\n    /**\n     * @dev Derive and set hashes, reference chainId, and associated domain\n     *      separator during deployment.\n     *\n     * @param conduitController A contract that deploys conduits, or proxies\n     *                          that may optionally be used to transfer approved\n     *                          ERC20/721/1155 tokens.\n     */\n    constructor(address conduitController) OrderFulfiller(conduitController) {}\n\n    /**\n     * @notice Internal function to attempt to fill a group of orders, fully or\n     *         partially, with an arbitrary number of items for offer and\n     *         consideration per order alongside criteria resolvers containing\n     *         specific token identifiers and associated proofs. Any order that\n     *         is not currently active, has already been fully filled, or has\n     *         been cancelled will be omitted. Remaining offer and consideration\n     *         items will then be aggregated where possible as indicated by the\n     *         supplied offer and consideration component arrays and aggregated\n     *         items will be transferred to the fulfiller or to each intended\n     *         recipient, respectively. Note that a failing item transfer or an\n     *         issue with order formatting will cause the entire batch to fail.\n     *\n     * @param advancedOrders            The orders to fulfill along with the\n     *                                  fraction of those orders to attempt to\n     *                                  fill. Note that both the offerer and the\n     *                                  fulfiller must first approve this\n     *                                  contract (or a conduit if indicated by\n     *                                  the order) to transfer any relevant\n     *                                  tokens on their behalf and that\n     *                                  contracts must implement\n     *                                  `onERC1155Received` in order to receive\n     *                                  ERC1155 tokens as consideration. Also\n     *                                  note that all offer and consideration\n     *                                  components must have no remainder after\n     *                                  multiplication of the respective amount\n     *                                  with the supplied fraction for an\n     *                                  order's partial fill amount to be\n     *                                  considered valid.\n     * @param criteriaResolvers         An array where each element contains a\n     *                                  reference to a specific offer or\n     *                                  consideration, a token identifier, and a\n     *                                  proof that the supplied token identifier\n     *                                  is contained in the merkle root held by\n     *                                  the item in question's criteria element.\n     *                                  Note that an empty criteria indicates\n     *                                  that any (transferrable) token\n     *                                  identifier on the token in question is\n     *                                  valid and that no associated proof needs\n     *                                  to be supplied.\n     * @param offerFulfillments         An array of FulfillmentComponent arrays\n     *                                  indicating which offer items to attempt\n     *                                  to aggregate when preparing executions.\n     * @param considerationFulfillments An array of FulfillmentComponent arrays\n     *                                  indicating which consideration items to\n     *                                  attempt to aggregate when preparing\n     *                                  executions.\n     * @param fulfillerConduitKey       A bytes32 value indicating what conduit,\n     *                                  if any, to source the fulfiller's token\n     *                                  approvals from. The zero hash signifies\n     *                                  that no conduit should be used (and\n     *                                  direct approvals set on Consideration).\n     * @param maximumFulfilled          The maximum number of orders to fulfill.\n     *\n     * @return availableOrders An array of booleans indicating if each order\n     *                         with an index corresponding to the index of the\n     *                         returned boolean was fulfillable or not.\n     * @return executions      An array of elements indicating the sequence of\n     *                         transfers performed as part of matching the given\n     *                         orders.\n     */\n    function _fulfillAvailableAdvancedOrders(\n        AdvancedOrder[] memory advancedOrders,\n        CriteriaResolver[] memory criteriaResolvers,\n        FulfillmentComponent[][] calldata offerFulfillments,\n        FulfillmentComponent[][] calldata considerationFulfillments,\n        bytes32 fulfillerConduitKey,\n        uint256 maximumFulfilled\n    )\n        internal\n        returns (bool[] memory availableOrders, Execution[] memory executions)\n    {\n        // Validate orders, apply amounts, & determine if they utilize conduits.\n        _validateOrdersAndPrepareToFulfill(\n            advancedOrders,\n            criteriaResolvers,\n            false, // Signifies that invalid orders should NOT revert.\n            maximumFulfilled\n        );\n\n        // Aggregate used offer and consideration items and execute transfers.\n        (availableOrders, executions) = _executeAvailableFulfillments(\n            advancedOrders,\n            offerFulfillments,\n            considerationFulfillments,\n            fulfillerConduitKey\n        );\n\n        // Return order fulfillment details and executions.\n        return (availableOrders, executions);\n    }\n\n    /**\n     * @dev Internal function to validate a group of orders, update their\n     *      statuses, reduce amounts by their previously filled fractions, apply\n     *      criteria resolvers, and emit OrderFulfilled events.\n     *\n     * @param advancedOrders    The advanced orders to validate and reduce by\n     *                          their previously filled amounts.\n     * @param criteriaResolvers An array where each element contains a reference\n     *                          to a specific order as well as that order's\n     *                          offer or consideration, a token identifier, and\n     *                          a proof that the supplied token identifier is\n     *                          contained in the order's merkle root. Note that\n     *                          a root of zero indicates that any transferrable\n     *                          token identifier is valid and that no proof\n     *                          needs to be supplied.\n     * @param revertOnInvalid   A boolean indicating whether to revert on any\n     *                          order being invalid; setting this to false will\n     *                          instead cause the invalid order to be skipped.\n     * @param maximumFulfilled  The maximum number of orders to fulfill.\n     */\n    function _validateOrdersAndPrepareToFulfill(\n        AdvancedOrder[] memory advancedOrders,\n        CriteriaResolver[] memory criteriaResolvers,\n        bool revertOnInvalid,\n        uint256 maximumFulfilled\n    ) internal {\n        // Ensure this function cannot be triggered during a reentrant call.\n        _setReentrancyGuard();\n\n        // Read length of orders array and place on the stack.\n        uint256 totalOrders = advancedOrders.length;\n\n        // Track the order hash for each order being fulfilled.\n        bytes32[] memory orderHashes = new bytes32[](totalOrders);\n\n        // Override orderHashes length to zero after memory has been allocated.\n        assembly {\n            mstore(orderHashes, 0)\n        }\n\n        // Skip overflow checks as all for loops are indexed starting at zero.\n        unchecked {\n            // Iterate over each order.\n            for (uint256 i = 0; i < totalOrders; ++i) {\n                // Retrieve the current order.\n                AdvancedOrder memory advancedOrder = advancedOrders[i];\n\n                // Determine if max number orders have already been fulfilled.\n                if (maximumFulfilled == 0) {\n                    // Mark fill fraction as zero as the order will not be used.\n                    advancedOrder.numerator = 0;\n\n                    // Update the length of the orderHashes array.\n                    assembly {\n                        mstore(orderHashes, add(i, 1))\n                    }\n\n                    // Continue iterating through the remaining orders.\n                    continue;\n                }\n\n                // Validate it, update status, and determine fraction to fill.\n                (\n                    bytes32 orderHash,\n                    uint256 numerator,\n                    uint256 denominator\n                ) = _validateOrderAndUpdateStatus(\n                        advancedOrder,\n                        criteriaResolvers,\n                        revertOnInvalid,\n                        orderHashes\n                    );\n\n                // Update the length of the orderHashes array.\n                assembly {\n                    mstore(orderHashes, add(i, 1))\n                }\n\n                // Do not track hash or adjust prices if order is not fulfilled.\n                if (numerator == 0) {\n                    // Mark fill fraction as zero if the order is not fulfilled.\n                    advancedOrder.numerator = 0;\n\n                    // Continue iterating through the remaining orders.\n                    continue;\n                }\n\n                // Otherwise, track the order hash in question.\n                orderHashes[i] = orderHash;\n\n                // Decrement the number of fulfilled orders.\n                maximumFulfilled--;\n\n                // Place the start time for the order on the stack.\n                uint256 startTime = advancedOrder.parameters.startTime;\n\n                // Derive the duration for the order and place it on the stack.\n                uint256 duration = advancedOrder.parameters.endTime - startTime;\n\n                // Derive time elapsed since the order started & place on stack.\n                uint256 elapsed = block.timestamp - startTime;\n\n                // Derive time remaining until order expires and place on stack.\n                uint256 remaining = duration - elapsed;\n\n                // Retrieve array of offer items for the order in question.\n                OfferItem[] memory offer = advancedOrder.parameters.offer;\n\n                // Iterate over each offer item on the order.\n                for (uint256 j = 0; j < offer.length; ++j) {\n                    // Retrieve the offer item.\n                    OfferItem memory offerItem = offer[j];\n\n                    // Apply order fill fraction to offer item end amount.\n                    uint256 endAmount = _getFraction(\n                        numerator,\n                        denominator,\n                        offerItem.endAmount\n                    );\n\n                    // Reuse same fraction if start and end amounts are equal.\n                    if (offerItem.startAmount == offerItem.endAmount) {\n                        // Apply derived amount to both start and end amount.\n                        offerItem.startAmount = endAmount;\n                    } else {\n                        // Apply order fill fraction to offer item start amount.\n                        offerItem.startAmount = _getFraction(\n                            numerator,\n                            denominator,\n                            offerItem.startAmount\n                        );\n                    }\n\n                    // Update end amount in memory to match the derived amount.\n                    offerItem.endAmount = endAmount;\n\n                    // Adjust offer amount using current time; round down.\n                    offerItem.startAmount = _locateCurrentAmount(\n                        offerItem.startAmount,\n                        offerItem.endAmount,\n                        elapsed,\n                        remaining,\n                        duration,\n                        false // round down\n                    );\n                }\n\n                // Retrieve array of consideration items for order in question.\n                ConsiderationItem[] memory consideration = (\n                    advancedOrder.parameters.consideration\n                );\n\n                // Iterate over each consideration item on the order.\n                for (uint256 j = 0; j < consideration.length; ++j) {\n                    // Retrieve the consideration item.\n                    ConsiderationItem memory considerationItem = (\n                        consideration[j]\n                    );\n\n                    // Apply fraction to consideration item end amount.\n                    uint256 endAmount = _getFraction(\n                        numerator,\n                        denominator,\n                        considerationItem.endAmount\n                    );\n\n                    // Reuse same fraction if start and end amounts are equal.\n                    if (\n                        considerationItem.startAmount ==\n                        considerationItem.endAmount\n                    ) {\n                        // Apply derived amount to both start and end amount.\n                        considerationItem.startAmount = endAmount;\n                    } else {\n                        // Apply fraction to consideration item start amount.\n                        considerationItem.startAmount = _getFraction(\n                            numerator,\n                            denominator,\n                            considerationItem.startAmount\n                        );\n                    }\n\n                    // Update end amount in memory to match the derived amount.\n                    considerationItem.endAmount = endAmount;\n\n                    // Adjust consideration amount using current time; round up.\n                    considerationItem.startAmount = (\n                        _locateCurrentAmount(\n                            considerationItem.startAmount,\n                            considerationItem.endAmount,\n                            elapsed,\n                            remaining,\n                            duration,\n                            true // round up\n                        )\n                    );\n\n                    // Utilize assembly to manually \"shift\" the recipient value.\n                    assembly {\n                        // Write recipient to endAmount, as endAmount is not\n                        // used from this point on and can be repurposed to fit\n                        // the layout of a ReceivedItem.\n                        mstore(\n                            add(\n                                considerationItem,\n                                ReceivedItem_recipient_offset // old endAmount\n                            ),\n                            mload(\n                                add(\n                                    considerationItem,\n                                    ConsiderationItem_recipient_offset\n                                )\n                            )\n                        )\n                    }\n                }\n            }\n        }\n\n        // Apply criteria resolvers to each order as applicable.\n        _applyCriteriaResolvers(advancedOrders, criteriaResolvers);\n\n        // Determine the fulfiller (revertOnInvalid ? address(0) : msg.sender).\n        address fulfiller;\n\n        // Utilize assembly to operate on revertOnInvalid boolean as an integer.\n        assembly {\n            // Set the fulfiller to the caller if revertOnValid is false.\n            fulfiller := mul(iszero(revertOnInvalid), caller())\n        }\n\n        // Emit an event for each order signifying that it has been fulfilled.\n        // Skip overflow checks as all for loops are indexed starting at zero.\n        unchecked {\n            // Iterate over each order.\n            for (uint256 i = 0; i < totalOrders; ++i) {\n                // Do not emit an event if no order hash is present.\n                if (orderHashes[i] == bytes32(0)) {\n                    continue;\n                }\n\n                // Retrieve parameters for the order in question.\n                OrderParameters memory orderParameters = (\n                    advancedOrders[i].parameters\n                );\n\n                // Emit an OrderFulfilled event.\n                _emitOrderFulfilledEvent(\n                    orderHashes[i],\n                    orderParameters.offerer,\n                    orderParameters.zone,\n                    fulfiller,\n                    orderParameters.offer,\n                    orderParameters.consideration\n                );\n            }\n        }\n    }\n\n    /**\n     * @dev Internal function to fulfill a group of validated orders, fully or\n     *      partially, with an arbitrary number of items for offer and\n     *      consideration per order and to execute transfers. Any order that is\n     *      not currently active, has already been fully filled, or has been\n     *      cancelled will be omitted. Remaining offer and consideration items\n     *      will then be aggregated where possible as indicated by the supplied\n     *      offer and consideration component arrays and aggregated items will\n     *      be transferred to the fulfiller or to each intended recipient,\n     *      respectively. Note that a failing item transfer or an issue with\n     *      order formatting will cause the entire batch to fail.\n     *\n     * @param advancedOrders            The orders to fulfill along with the\n     *                                  fraction of those orders to attempt to\n     *                                  fill. Note that both the offerer and the\n     *                                  fulfiller must first approve this\n     *                                  contract (or the conduit if indicated by\n     *                                  the order) to transfer any relevant\n     *                                  tokens on their behalf and that\n     *                                  contracts must implement\n     *                                  `onERC1155Received` in order to receive\n     *                                  ERC1155 tokens as consideration. Also\n     *                                  note that all offer and consideration\n     *                                  components must have no remainder after\n     *                                  multiplication of the respective amount\n     *                                  with the supplied fraction for an\n     *                                  order's partial fill amount to be\n     *                                  considered valid.\n     * @param offerFulfillments         An array of FulfillmentComponent arrays\n     *                                  indicating which offer items to attempt\n     *                                  to aggregate when preparing executions.\n     * @param considerationFulfillments An array of FulfillmentComponent arrays\n     *                                  indicating which consideration items to\n     *                                  attempt to aggregate when preparing\n     *                                  executions.\n     * @param fulfillerConduitKey       A bytes32 value indicating what conduit,\n     *                                  if any, to source the fulfiller's token\n     *                                  approvals from. The zero hash signifies\n     *                                  that no conduit should be used, with\n     *                                  direct approvals set on Consideration.\n     *\n     * @return availableOrders An array of booleans indicating if each order\n     *                         with an index corresponding to the index of the\n     *                         returned boolean was fulfillable or not.\n     * @return executions      An array of elements indicating the sequence of\n     *                         transfers performed as part of matching the given\n     *                         orders.\n     */\n    function _executeAvailableFulfillments(\n        AdvancedOrder[] memory advancedOrders,\n        FulfillmentComponent[][] memory offerFulfillments,\n        FulfillmentComponent[][] memory considerationFulfillments,\n        bytes32 fulfillerConduitKey\n    )\n        internal\n        returns (bool[] memory availableOrders, Execution[] memory executions)\n    {\n        // Retrieve length of offer fulfillments array and place on the stack.\n        uint256 totalOfferFulfillments = offerFulfillments.length;\n\n        // Retrieve length of consideration fulfillments array & place on stack.\n        uint256 totalConsiderationFulfillments = (\n            considerationFulfillments.length\n        );\n\n        // Allocate an execution for each offer and consideration fulfillment.\n        executions = new Execution[](\n            totalOfferFulfillments + totalConsiderationFulfillments\n        );\n\n        // Skip overflow checks as all for loops are indexed starting at zero.\n        unchecked {\n            // Track number of filtered executions.\n            uint256 totalFilteredExecutions = 0;\n\n            // Iterate over each offer fulfillment.\n            for (uint256 i = 0; i < totalOfferFulfillments; ++i) {\n                /// Retrieve the offer fulfillment components in question.\n                FulfillmentComponent[] memory components = (\n                    offerFulfillments[i]\n                );\n\n                // Derive aggregated execution corresponding with fulfillment.\n                Execution memory execution = _aggregateAvailable(\n                    advancedOrders,\n                    Side.OFFER,\n                    components,\n                    fulfillerConduitKey\n                );\n\n                // If offerer and recipient on the execution are the same...\n                if (execution.item.recipient == execution.offerer) {\n                    // increment total filtered executions.\n                    totalFilteredExecutions += 1;\n                } else {\n                    // Otherwise, assign the execution to the executions array.\n                    executions[i - totalFilteredExecutions] = execution;\n                }\n            }\n\n            // Iterate over each consideration fulfillment.\n            for (uint256 i = 0; i < totalConsiderationFulfillments; ++i) {\n                /// Retrieve consideration fulfillment components in question.\n                FulfillmentComponent[] memory components = (\n                    considerationFulfillments[i]\n                );\n\n                // Derive aggregated execution corresponding with fulfillment.\n                Execution memory execution = _aggregateAvailable(\n                    advancedOrders,\n                    Side.CONSIDERATION,\n                    components,\n                    fulfillerConduitKey\n                );\n\n                // If offerer and recipient on the execution are the same...\n                if (execution.item.recipient == execution.offerer) {\n                    // increment total filtered executions.\n                    totalFilteredExecutions += 1;\n                } else {\n                    // Otherwise, assign the execution to the executions array.\n                    executions[\n                        i + totalOfferFulfillments - totalFilteredExecutions\n                    ] = execution;\n                }\n            }\n\n            // If some number of executions have been filtered...\n            if (totalFilteredExecutions != 0) {\n                // reduce the total length of the executions array.\n                assembly {\n                    mstore(\n                        executions,\n                        sub(mload(executions), totalFilteredExecutions)\n                    )\n                }\n            }\n        }\n\n        // Revert if no orders are available.\n        if (executions.length == 0) {\n            revert NoSpecifiedOrdersAvailable();\n        }\n\n        // Perform final checks and return.\n        availableOrders = _performFinalChecksAndExecuteOrders(\n            advancedOrders,\n            executions\n        );\n\n        return (availableOrders, executions);\n    }\n\n    /**\n     * @dev Internal function to perform a final check that each consideration\n     *      item for an arbitrary number of fulfilled orders has been met and to\n     *      trigger associated executions, transferring the respective items.\n     *\n     * @param advancedOrders     The orders to check and perform executions for.\n     * @param executions         An array of elements indicating the sequence of\n     *                           transfers to perform when fulfilling the given\n     *                           orders.\n     *\n     * @return availableOrders An array of booleans indicating if each order\n     *                         with an index corresponding to the index of the\n     *                         returned boolean was fulfillable or not.\n     */\n    function _performFinalChecksAndExecuteOrders(\n        AdvancedOrder[] memory advancedOrders,\n        Execution[] memory executions\n    ) internal returns (bool[] memory availableOrders) {\n        // Retrieve the length of the advanced orders array and place on stack.\n        uint256 totalOrders = advancedOrders.length;\n\n        // Initialize array for tracking available orders.\n        availableOrders = new bool[](totalOrders);\n\n        // Skip overflow checks as all for loops are indexed starting at zero.\n        unchecked {\n            // Iterate over orders to ensure all considerations are met.\n            for (uint256 i = 0; i < totalOrders; ++i) {\n                // Retrieve the order in question.\n                AdvancedOrder memory advancedOrder = advancedOrders[i];\n\n                // Skip consideration item checks for order if not fulfilled.\n                if (advancedOrder.numerator == 0) {\n                    // Note: orders do not need to be marked as unavailable as a\n                    // new memory region has been allocated. Review carefully if\n                    // altering compiler version or managing memory manually.\n                    continue;\n                }\n\n                // Mark the order as available.\n                availableOrders[i] = true;\n\n                // Retrieve consideration items to ensure they are fulfilled.\n                ConsiderationItem[] memory consideration = (\n                    advancedOrder.parameters.consideration\n                );\n\n                // Iterate over each consideration item to ensure it is met.\n                for (uint256 j = 0; j < consideration.length; ++j) {\n                    // Retrieve remaining amount on the consideration item.\n                    uint256 unmetAmount = consideration[j].startAmount;\n\n                    // Revert if the remaining amount is not zero.\n                    if (unmetAmount != 0) {\n                        revert ConsiderationNotMet(i, j, unmetAmount);\n                    }\n                }\n            }\n        }\n\n        // Put ether value supplied by the caller on the stack.\n        uint256 etherRemaining = msg.value;\n\n        // Initialize an accumulator array. From this point forward, no new\n        // memory regions can be safely allocated until the accumulator is no\n        // longer being utilized, as the accumulator operates in an open-ended\n        // fashion from this memory pointer; existing memory may still be\n        // accessed and modified, however.\n        bytes memory accumulator = new bytes(AccumulatorDisarmed);\n\n        // Iterate over each execution.\n        for (uint256 i = 0; i < executions.length; ) {\n            // Retrieve the execution and the associated received item.\n            Execution memory execution = executions[i];\n            ReceivedItem memory item = execution.item;\n\n            // If execution transfers native tokens, reduce value available.\n            if (item.itemType == ItemType.NATIVE) {\n                // Ensure that sufficient native tokens are still available.\n                if (item.amount > etherRemaining) {\n                    revert InsufficientEtherSupplied();\n                }\n\n                // Skip underflow check as amount is less than ether remaining.\n                unchecked {\n                    etherRemaining -= item.amount;\n                }\n            }\n\n            // Transfer the item specified by the execution.\n            _transfer(\n                item,\n                execution.offerer,\n                execution.conduitKey,\n                accumulator\n            );\n\n            // Skip overflow check as for loop is indexed starting at zero.\n            unchecked {\n                ++i;\n            }\n        }\n\n        // Trigger any remaining accumulated transfers via call to the conduit.\n        _triggerIfArmed(accumulator);\n\n        // If any ether remains after fulfillments, return it to the caller.\n        if (etherRemaining != 0) {\n            _transferEth(payable(msg.sender), etherRemaining);\n        }\n\n        // Clear the reentrancy guard.\n        _clearReentrancyGuard();\n\n        // Return the array containing available orders.\n        return (availableOrders);\n    }\n\n    /**\n     * @dev Internal function to match an arbitrary number of full or partial\n     *      orders, each with an arbitrary number of items for offer and\n     *      consideration, supplying criteria resolvers containing specific\n     *      token identifiers and associated proofs as well as fulfillments\n     *      allocating offer components to consideration components.\n     *\n     * @param advancedOrders    The advanced orders to match. Note that both the\n     *                          offerer and fulfiller on each order must first\n     *                          approve this contract (or their conduit if\n     *                          indicated by the order) to transfer any relevant\n     *                          tokens on their behalf and each consideration\n     *                          recipient must implement `onERC1155Received` in\n     *                          order to receive ERC1155 tokens. Also note that\n     *                          the offer and consideration components for each\n     *                          order must have no remainder after multiplying\n     *                          the respective amount with the supplied fraction\n     *                          in order for the group of partial fills to be\n     *                          considered valid.\n     * @param criteriaResolvers An array where each element contains a reference\n     *                          to a specific order as well as that order's\n     *                          offer or consideration, a token identifier, and\n     *                          a proof that the supplied token identifier is\n     *                          contained in the order's merkle root. Note that\n     *                          an empty root indicates that any (transferrable)\n     *                          token identifier is valid and that no associated\n     *                          proof needs to be supplied.\n     * @param fulfillments      An array of elements allocating offer components\n     *                          to consideration components. Note that each\n     *                          consideration component must be fully met in\n     *                          order for the match operation to be valid.\n     *\n     * @return executions An array of elements indicating the sequence of\n     *                    transfers performed as part of matching the given\n     *                    orders.\n     */\n    function _matchAdvancedOrders(\n        AdvancedOrder[] memory advancedOrders,\n        CriteriaResolver[] memory criteriaResolvers,\n        Fulfillment[] calldata fulfillments\n    ) internal returns (Execution[] memory executions) {\n        // Validate orders, update order status, and determine item amounts.\n        _validateOrdersAndPrepareToFulfill(\n            advancedOrders,\n            criteriaResolvers,\n            true, // Signifies that invalid orders should revert.\n            advancedOrders.length\n        );\n\n        // Fulfill the orders using the supplied fulfillments.\n        return _fulfillAdvancedOrders(advancedOrders, fulfillments);\n    }\n\n    /**\n     * @dev Internal function to fulfill an arbitrary number of orders, either\n     *      full or partial, after validating, adjusting amounts, and applying\n     *      criteria resolvers.\n     *\n     * @param advancedOrders     The orders to match, including a fraction to\n     *                           attempt to fill for each order.\n     * @param fulfillments       An array of elements allocating offer\n     *                           components to consideration components. Note\n     *                           that the final amount of each consideration\n     *                           component must be zero for a match operation to\n     *                           be considered valid.\n     *\n     * @return executions An array of elements indicating the sequence of\n     *                    transfers performed as part of matching the given\n     *                    orders.\n     */\n    function _fulfillAdvancedOrders(\n        AdvancedOrder[] memory advancedOrders,\n        Fulfillment[] calldata fulfillments\n    ) internal returns (Execution[] memory executions) {\n        // Retrieve fulfillments array length and place on the stack.\n        uint256 totalFulfillments = fulfillments.length;\n\n        // Allocate executions by fulfillment and apply them to each execution.\n        executions = new Execution[](totalFulfillments);\n\n        // Skip overflow checks as all for loops are indexed starting at zero.\n        unchecked {\n            // Track number of filtered executions.\n            uint256 totalFilteredExecutions = 0;\n\n            // Iterate over each fulfillment.\n            for (uint256 i = 0; i < totalFulfillments; ++i) {\n                /// Retrieve the fulfillment in question.\n                Fulfillment calldata fulfillment = fulfillments[i];\n\n                // Derive the execution corresponding with the fulfillment.\n                Execution memory execution = _applyFulfillment(\n                    advancedOrders,\n                    fulfillment.offerComponents,\n                    fulfillment.considerationComponents\n                );\n\n                // If offerer and recipient on the execution are the same...\n                if (execution.item.recipient == execution.offerer) {\n                    // increment total filtered executions.\n                    totalFilteredExecutions += 1;\n                } else {\n                    // Otherwise, assign the execution to the executions array.\n                    executions[i - totalFilteredExecutions] = execution;\n                }\n            }\n\n            // If some number of executions have been filtered...\n            if (totalFilteredExecutions != 0) {\n                // reduce the total length of the executions array.\n                assembly {\n                    mstore(\n                        executions,\n                        sub(mload(executions), totalFilteredExecutions)\n                    )\n                }\n            }\n        }\n\n        // Perform final checks and execute orders.\n        _performFinalChecksAndExecuteOrders(advancedOrders, executions);\n\n        // Return the executions array.\n        return (executions);\n    }\n}\n"
      },
      "seaport/contracts/Consideration.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\n// prettier-ignore\nimport {\n    ConsiderationInterface\n} from \"./interfaces/ConsiderationInterface.sol\";\n\n// prettier-ignore\nimport {\n    OrderComponents,\n    BasicOrderParameters,\n    OrderParameters,\n    Order,\n    AdvancedOrder,\n    OrderStatus,\n    CriteriaResolver,\n    Fulfillment,\n    FulfillmentComponent,\n    Execution\n} from \"./lib/ConsiderationStructs.sol\";\n\nimport { OrderCombiner } from \"./lib/OrderCombiner.sol\";\n\n/**\n * @title Consideration\n * @author 0age\n * @custom:coauthor d1ll0n\n * @custom:coauthor transmissions11\n * @custom:version 1\n * @notice Consideration is a generalized ETH/ERC20/ERC721/ERC1155 marketplace.\n *         It minimizes external calls to the greatest extent possible and\n *         provides lightweight methods for common routes as well as more\n *         flexible methods for composing advanced orders or groups of orders.\n *         Each order contains an arbitrary number of items that may be spent\n *         (the \"offer\") along with an arbitrary number of items that must be\n *         received back by the indicated recipients (the \"consideration\").\n */\ncontract Consideration is ConsiderationInterface, OrderCombiner {\n    /**\n     * @notice Derive and set hashes, reference chainId, and associated domain\n     *         separator during deployment.\n     *\n     * @param conduitController A contract that deploys conduits, or proxies\n     *                          that may optionally be used to transfer approved\n     *                          ERC20/721/1155 tokens.\n     */\n    constructor(address conduitController) OrderCombiner(conduitController) {}\n\n    /**\n     * @notice Fulfill an order offering an ERC20, ERC721, or ERC1155 item by\n     *         supplying Ether (or other native tokens), ERC20 tokens, an ERC721\n     *         item, or an ERC1155 item as consideration. Six permutations are\n     *         supported: Native token to ERC721, Native token to ERC1155, ERC20\n     *         to ERC721, ERC20 to ERC1155, ERC721 to ERC20, and ERC1155 to\n     *         ERC20 (with native tokens supplied as msg.value). For an order to\n     *         be eligible for fulfillment via this method, it must contain a\n     *         single offer item (though that item may have a greater amount if\n     *         the item is not an ERC721). An arbitrary number of \"additional\n     *         recipients\" may also be supplied which will each receive native\n     *         tokens or ERC20 items from the fulfiller as consideration. Refer\n     *         to the documentation for a more comprehensive summary of how to\n     *         utilize this method and what orders are compatible with it.\n     *\n     * @param parameters Additional information on the fulfilled order. Note\n     *                   that the offerer and the fulfiller must first approve\n     *                   this contract (or their chosen conduit if indicated)\n     *                   before any tokens can be transferred. Also note that\n     *                   contract recipients of ERC1155 consideration items must\n     *                   implement `onERC1155Received` in order to receive those\n     *                   items.\n     *\n     * @return fulfilled A boolean indicating whether the order has been\n     *                   successfully fulfilled.\n     */\n    function fulfillBasicOrder(BasicOrderParameters calldata parameters)\n        external\n        payable\n        override\n        returns (bool fulfilled)\n    {\n        // Validate and fulfill the basic order.\n        fulfilled = _validateAndFulfillBasicOrder(parameters);\n    }\n\n    /**\n     * @notice Fulfill an order with an arbitrary number of items for offer and\n     *         consideration. Note that this function does not support\n     *         criteria-based orders or partial filling of orders (though\n     *         filling the remainder of a partially-filled order is supported).\n     *\n     * @param order               The order to fulfill. Note that both the\n     *                            offerer and the fulfiller must first approve\n     *                            this contract (or the corresponding conduit if\n     *                            indicated) to transfer any relevant tokens on\n     *                            their behalf and that contracts must implement\n     *                            `onERC1155Received` to receive ERC1155 tokens\n     *                            as consideration.\n     * @param fulfillerConduitKey A bytes32 value indicating what conduit, if\n     *                            any, to source the fulfiller's token approvals\n     *                            from. The zero hash signifies that no conduit\n     *                            should be used (and direct approvals set on\n     *                            Consideration).\n     *\n     * @return fulfilled A boolean indicating whether the order has been\n     *                   successfully fulfilled.\n     */\n    function fulfillOrder(Order calldata order, bytes32 fulfillerConduitKey)\n        external\n        payable\n        override\n        returns (bool fulfilled)\n    {\n        // Convert order to \"advanced\" order, then validate and fulfill it.\n        fulfilled = _validateAndFulfillAdvancedOrder(\n            _convertOrderToAdvanced(order),\n            new CriteriaResolver[](0), // No criteria resolvers supplied.\n            fulfillerConduitKey\n        );\n    }\n\n    /**\n     * @notice Fill an order, fully or partially, with an arbitrary number of\n     *         items for offer and consideration alongside criteria resolvers\n     *         containing specific token identifiers and associated proofs.\n     *\n     * @param advancedOrder       The order to fulfill along with the fraction\n     *                            of the order to attempt to fill. Note that\n     *                            both the offerer and the fulfiller must first\n     *                            approve this contract (or their conduit if\n     *                            indicated by the order) to transfer any\n     *                            relevant tokens on their behalf and that\n     *                            contracts must implement `onERC1155Received`\n     *                            to receive ERC1155 tokens as consideration.\n     *                            Also note that all offer and consideration\n     *                            components must have no remainder after\n     *                            multiplication of the respective amount with\n     *                            the supplied fraction for the partial fill to\n     *                            be considered valid.\n     * @param criteriaResolvers   An array where each element contains a\n     *                            reference to a specific offer or\n     *                            consideration, a token identifier, and a proof\n     *                            that the supplied token identifier is\n     *                            contained in the merkle root held by the item\n     *                            in question's criteria element. Note that an\n     *                            empty criteria indicates that any\n     *                            (transferrable) token identifier on the token\n     *                            in question is valid and that no associated\n     *                            proof needs to be supplied.\n     * @param fulfillerConduitKey A bytes32 value indicating what conduit, if\n     *                            any, to source the fulfiller's token approvals\n     *                            from. The zero hash signifies that no conduit\n     *                            should be used (and direct approvals set on\n     *                            Consideration).\n     *\n     * @return fulfilled A boolean indicating whether the order has been\n     *                   successfully fulfilled.\n     */\n    function fulfillAdvancedOrder(\n        AdvancedOrder calldata advancedOrder,\n        CriteriaResolver[] calldata criteriaResolvers,\n        bytes32 fulfillerConduitKey\n    ) external payable override returns (bool fulfilled) {\n        // Validate and fulfill the order.\n        fulfilled = _validateAndFulfillAdvancedOrder(\n            advancedOrder,\n            criteriaResolvers,\n            fulfillerConduitKey\n        );\n    }\n\n    /**\n     * @notice Attempt to fill a group of orders, each with an arbitrary number\n     *         of items for offer and consideration. Any order that is not\n     *         currently active, has already been fully filled, or has been\n     *         cancelled will be omitted. Remaining offer and consideration\n     *         items will then be aggregated where possible as indicated by the\n     *         supplied offer and consideration component arrays and aggregated\n     *         items will be transferred to the fulfiller or to each intended\n     *         recipient, respectively. Note that a failing item transfer or an\n     *         issue with order formatting will cause the entire batch to fail.\n     *         Note that this function does not support criteria-based orders or\n     *         partial filling of orders (though filling the remainder of a\n     *         partially-filled order is supported).\n     *\n     * @param orders                    The orders to fulfill. Note that both\n     *                                  the offerer and the fulfiller must first\n     *                                  approve this contract (or the\n     *                                  corresponding conduit if indicated) to\n     *                                  transfer any relevant tokens on their\n     *                                  behalf and that contracts must implement\n     *                                  `onERC1155Received` to receive ERC1155\n     *                                  tokens as consideration.\n     * @param offerFulfillments         An array of FulfillmentComponent arrays\n     *                                  indicating which offer items to attempt\n     *                                  to aggregate when preparing executions.\n     * @param considerationFulfillments An array of FulfillmentComponent arrays\n     *                                  indicating which consideration items to\n     *                                  attempt to aggregate when preparing\n     *                                  executions.\n     * @param fulfillerConduitKey       A bytes32 value indicating what conduit,\n     *                                  if any, to source the fulfiller's token\n     *                                  approvals from. The zero hash signifies\n     *                                  that no conduit should be used (and\n     *                                  direct approvals set on Consideration).\n     * @param maximumFulfilled          The maximum number of orders to fulfill.\n     *\n     * @return availableOrders An array of booleans indicating if each order\n     *                         with an index corresponding to the index of the\n     *                         returned boolean was fulfillable or not.\n     * @return executions      An array of elements indicating the sequence of\n     *                         transfers performed as part of matching the given\n     *                         orders.\n     */\n    function fulfillAvailableOrders(\n        Order[] calldata orders,\n        FulfillmentComponent[][] calldata offerFulfillments,\n        FulfillmentComponent[][] calldata considerationFulfillments,\n        bytes32 fulfillerConduitKey,\n        uint256 maximumFulfilled\n    )\n        external\n        payable\n        override\n        returns (bool[] memory availableOrders, Execution[] memory executions)\n    {\n        // Convert orders to \"advanced\" orders and fulfill all available orders.\n        return\n            _fulfillAvailableAdvancedOrders(\n                _convertOrdersToAdvanced(orders), // Convert to advanced orders.\n                new CriteriaResolver[](0), // No criteria resolvers supplied.\n                offerFulfillments,\n                considerationFulfillments,\n                fulfillerConduitKey,\n                maximumFulfilled\n            );\n    }\n\n    /**\n     * @notice Attempt to fill a group of orders, fully or partially, with an\n     *         arbitrary number of items for offer and consideration per order\n     *         alongside criteria resolvers containing specific token\n     *         identifiers and associated proofs. Any order that is not\n     *         currently active, has already been fully filled, or has been\n     *         cancelled will be omitted. Remaining offer and consideration\n     *         items will then be aggregated where possible as indicated by the\n     *         supplied offer and consideration component arrays and aggregated\n     *         items will be transferred to the fulfiller or to each intended\n     *         recipient, respectively. Note that a failing item transfer or an\n     *         issue with order formatting will cause the entire batch to fail.\n     *\n     * @param advancedOrders            The orders to fulfill along with the\n     *                                  fraction of those orders to attempt to\n     *                                  fill. Note that both the offerer and the\n     *                                  fulfiller must first approve this\n     *                                  contract (or their conduit if indicated\n     *                                  by the order) to transfer any relevant\n     *                                  tokens on their behalf and that\n     *                                  contracts must implement\n     *                                  `onERC1155Received` in order to receive\n     *                                  ERC1155 tokens as consideration. Also\n     *                                  note that all offer and consideration\n     *                                  components must have no remainder after\n     *                                  multiplication of the respective amount\n     *                                  with the supplied fraction for an\n     *                                  order's partial fill amount to be\n     *                                  considered valid.\n     * @param criteriaResolvers         An array where each element contains a\n     *                                  reference to a specific offer or\n     *                                  consideration, a token identifier, and a\n     *                                  proof that the supplied token identifier\n     *                                  is contained in the merkle root held by\n     *                                  the item in question's criteria element.\n     *                                  Note that an empty criteria indicates\n     *                                  that any (transferrable) token\n     *                                  identifier on the token in question is\n     *                                  valid and that no associated proof needs\n     *                                  to be supplied.\n     * @param offerFulfillments         An array of FulfillmentComponent arrays\n     *                                  indicating which offer items to attempt\n     *                                  to aggregate when preparing executions.\n     * @param considerationFulfillments An array of FulfillmentComponent arrays\n     *                                  indicating which consideration items to\n     *                                  attempt to aggregate when preparing\n     *                                  executions.\n     * @param fulfillerConduitKey       A bytes32 value indicating what conduit,\n     *                                  if any, to source the fulfiller's token\n     *                                  approvals from. The zero hash signifies\n     *                                  that no conduit should be used (and\n     *                                  direct approvals set on Consideration).\n     * @param maximumFulfilled          The maximum number of orders to fulfill.\n     *\n     * @return availableOrders An array of booleans indicating if each order\n     *                         with an index corresponding to the index of the\n     *                         returned boolean was fulfillable or not.\n     * @return executions      An array of elements indicating the sequence of\n     *                         transfers performed as part of matching the given\n     *                         orders.\n     */\n    function fulfillAvailableAdvancedOrders(\n        AdvancedOrder[] memory advancedOrders,\n        CriteriaResolver[] calldata criteriaResolvers,\n        FulfillmentComponent[][] calldata offerFulfillments,\n        FulfillmentComponent[][] calldata considerationFulfillments,\n        bytes32 fulfillerConduitKey,\n        uint256 maximumFulfilled\n    )\n        external\n        payable\n        override\n        returns (bool[] memory availableOrders, Execution[] memory executions)\n    {\n        // Fulfill all available orders.\n        return\n            _fulfillAvailableAdvancedOrders(\n                advancedOrders,\n                criteriaResolvers,\n                offerFulfillments,\n                considerationFulfillments,\n                fulfillerConduitKey,\n                maximumFulfilled\n            );\n    }\n\n    /**\n     * @notice Match an arbitrary number of orders, each with an arbitrary\n     *         number of items for offer and consideration along with a set of\n     *         fulfillments allocating offer components to consideration\n     *         components. Note that this function does not support\n     *         criteria-based or partial filling of orders (though filling the\n     *         remainder of a partially-filled order is supported).\n     *\n     * @param orders            The orders to match. Note that both the offerer\n     *                          and fulfiller on each order must first approve\n     *                          this contract (or their conduit if indicated by\n     *                          the order) to transfer any relevant tokens on\n     *                          their behalf and each consideration recipient\n     *                          must implement `onERC1155Received` in order to\n     *                          receive ERC1155 tokens.\n     * @param fulfillments      An array of elements allocating offer components\n     *                          to consideration components. Note that each\n     *                          consideration component must be fully met in\n     *                          order for the match operation to be valid.\n     *\n     * @return executions An array of elements indicating the sequence of\n     *                    transfers performed as part of matching the given\n     *                    orders.\n     */\n    function matchOrders(\n        Order[] calldata orders,\n        Fulfillment[] calldata fulfillments\n    ) external payable override returns (Execution[] memory executions) {\n        // Convert to advanced, validate, and match orders using fulfillments.\n        return\n            _matchAdvancedOrders(\n                _convertOrdersToAdvanced(orders),\n                new CriteriaResolver[](0), // No criteria resolvers supplied.\n                fulfillments\n            );\n    }\n\n    /**\n     * @notice Match an arbitrary number of full or partial orders, each with an\n     *         arbitrary number of items for offer and consideration, supplying\n     *         criteria resolvers containing specific token identifiers and\n     *         associated proofs as well as fulfillments allocating offer\n     *         components to consideration components.\n     *\n     * @param advancedOrders    The advanced orders to match. Note that both the\n     *                          offerer and fulfiller on each order must first\n     *                          approve this contract (or their conduit if\n     *                          indicated by the order) to transfer any relevant\n     *                          tokens on their behalf and each consideration\n     *                          recipient must implement `onERC1155Received` in\n     *                          order to receive ERC1155 tokens. Also note that\n     *                          the offer and consideration components for each\n     *                          order must have no remainder after multiplying\n     *                          the respective amount with the supplied fraction\n     *                          in order for the group of partial fills to be\n     *                          considered valid.\n     * @param criteriaResolvers An array where each element contains a reference\n     *                          to a specific order as well as that order's\n     *                          offer or consideration, a token identifier, and\n     *                          a proof that the supplied token identifier is\n     *                          contained in the order's merkle root. Note that\n     *                          an empty root indicates that any (transferrable)\n     *                          token identifier is valid and that no associated\n     *                          proof needs to be supplied.\n     * @param fulfillments      An array of elements allocating offer components\n     *                          to consideration components. Note that each\n     *                          consideration component must be fully met in\n     *                          order for the match operation to be valid.\n     *\n     * @return executions An array of elements indicating the sequence of\n     *                    transfers performed as part of matching the given\n     *                    orders.\n     */\n    function matchAdvancedOrders(\n        AdvancedOrder[] memory advancedOrders,\n        CriteriaResolver[] calldata criteriaResolvers,\n        Fulfillment[] calldata fulfillments\n    ) external payable override returns (Execution[] memory executions) {\n        // Validate and match the advanced orders using supplied fulfillments.\n        return\n            _matchAdvancedOrders(\n                advancedOrders,\n                criteriaResolvers,\n                fulfillments\n            );\n    }\n\n    /**\n     * @notice Cancel an arbitrary number of orders. Note that only the offerer\n     *         or the zone of a given order may cancel it. Callers should ensure\n     *         that the intended order was cancelled by calling `getOrderStatus`\n     *         and confirming that `isCancelled` returns `true`.\n     *\n     * @param orders The orders to cancel.\n     *\n     * @return cancelled A boolean indicating whether the supplied orders have\n     *                   been successfully cancelled.\n     */\n    function cancel(OrderComponents[] calldata orders)\n        external\n        override\n        returns (bool cancelled)\n    {\n        // Cancel the orders.\n        cancelled = _cancel(orders);\n    }\n\n    /**\n     * @notice Validate an arbitrary number of orders, thereby registering their\n     *         signatures as valid and allowing the fulfiller to skip signature\n     *         verification on fulfillment. Note that validated orders may still\n     *         be unfulfillable due to invalid item amounts or other factors;\n     *         callers should determine whether validated orders are fulfillable\n     *         by simulating the fulfillment call prior to execution. Also note\n     *         that anyone can validate a signed order, but only the offerer can\n     *         validate an order without supplying a signature.\n     *\n     * @param orders The orders to validate.\n     *\n     * @return validated A boolean indicating whether the supplied orders have\n     *                   been successfully validated.\n     */\n    function validate(Order[] calldata orders)\n        external\n        override\n        returns (bool validated)\n    {\n        // Validate the orders.\n        validated = _validate(orders);\n    }\n\n    /**\n     * @notice Cancel all orders from a given offerer with a given zone in bulk\n     *         by incrementing a nonce. Note that only the offerer may increment\n     *         the nonce.\n     *\n     * @return newNonce The new nonce.\n     */\n    function incrementNonce() external override returns (uint256 newNonce) {\n        // Increment current nonce for the supplied offerer.\n        newNonce = _incrementNonce();\n    }\n\n    /**\n     * @notice Retrieve the order hash for a given order.\n     *\n     * @param order The components of the order.\n     *\n     * @return orderHash The order hash.\n     */\n    function getOrderHash(OrderComponents calldata order)\n        external\n        view\n        override\n        returns (bytes32 orderHash)\n    {\n        // Derive order hash by supplying order parameters along with the nonce.\n        orderHash = _deriveOrderHash(\n            OrderParameters(\n                order.offerer,\n                order.zone,\n                order.offer,\n                order.consideration,\n                order.orderType,\n                order.startTime,\n                order.endTime,\n                order.zoneHash,\n                order.salt,\n                order.conduitKey,\n                order.consideration.length\n            ),\n            order.nonce\n        );\n    }\n\n    /**\n     * @notice Retrieve the status of a given order by hash, including whether\n     *         the order has been cancelled or validated and the fraction of the\n     *         order that has been filled.\n     *\n     * @param orderHash The order hash in question.\n     *\n     * @return isValidated A boolean indicating whether the order in question\n     *                     has been validated (i.e. previously approved or\n     *                     partially filled).\n     * @return isCancelled A boolean indicating whether the order in question\n     *                     has been cancelled.\n     * @return totalFilled The total portion of the order that has been filled\n     *                     (i.e. the \"numerator\").\n     * @return totalSize   The total size of the order that is either filled or\n     *                     unfilled (i.e. the \"denominator\").\n     */\n    function getOrderStatus(bytes32 orderHash)\n        external\n        view\n        override\n        returns (\n            bool isValidated,\n            bool isCancelled,\n            uint256 totalFilled,\n            uint256 totalSize\n        )\n    {\n        // Retrieve the order status using the order hash.\n        return _getOrderStatus(orderHash);\n    }\n\n    /**\n     * @notice Retrieve the current nonce for a given offerer.\n     *\n     * @param offerer The offerer in question.\n     *\n     * @return nonce The current nonce.\n     */\n    function getNonce(address offerer)\n        external\n        view\n        override\n        returns (uint256 nonce)\n    {\n        // Return the nonce for the supplied offerer.\n        nonce = _getNonce(offerer);\n    }\n\n    /**\n     * @notice Retrieve configuration information for this contract.\n     *\n     * @return version           The contract version.\n     * @return domainSeparator   The domain separator for this contract.\n     * @return conduitController The conduit Controller set for this contract.\n     */\n    function information()\n        external\n        view\n        override\n        returns (\n            string memory version,\n            bytes32 domainSeparator,\n            address conduitController\n        )\n    {\n        // Return the information for this contract.\n        return _information();\n    }\n\n    /**\n     * @notice Retrieve the name of this contract.\n     *\n     * @return contractName The name of this contract.\n     */\n    function name()\n        external\n        pure\n        override\n        returns (string memory contractName)\n    {\n        // Return the name of the contract.\n        contractName = _name();\n    }\n}\n"
      },
      "seaport/contracts/interfaces/ConsiderationInterface.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.8.7;\n\n// prettier-ignore\nimport {\n    BasicOrderParameters,\n    OrderComponents,\n    Fulfillment,\n    FulfillmentComponent,\n    Execution,\n    Order,\n    AdvancedOrder,\n    OrderStatus,\n    CriteriaResolver\n} from \"../lib/ConsiderationStructs.sol\";\n\n/**\n * @title ConsiderationInterface\n * @author 0age\n * @custom:version 1\n * @notice Consideration is a generalized ETH/ERC20/ERC721/ERC1155 marketplace.\n *         It minimizes external calls to the greatest extent possible and\n *         provides lightweight methods for common routes as well as more\n *         flexible methods for composing advanced orders.\n *\n * @dev ConsiderationInterface contains all external function interfaces for\n *      Consideration.\n */\ninterface ConsiderationInterface {\n    /**\n     * @notice Fulfill an order offering an ERC721 token by supplying Ether (or\n     *         the native token for the given chain) as consideration for the\n     *         order. An arbitrary number of \"additional recipients\" may also be\n     *         supplied which will each receive native tokens from the fulfiller\n     *         as consideration.\n     *\n     * @param parameters Additional information on the fulfilled order. Note\n     *                   that the offerer must first approve this contract (or\n     *                   their preferred conduit if indicated by the order) for\n     *                   their offered ERC721 token to be transferred.\n     *\n     * @return fulfilled A boolean indicating whether the order has been\n     *                   successfully fulfilled.\n     */\n    function fulfillBasicOrder(BasicOrderParameters calldata parameters)\n        external\n        payable\n        returns (bool fulfilled);\n\n    /**\n     * @notice Fulfill an order with an arbitrary number of items for offer and\n     *         consideration. Note that this function does not support\n     *         criteria-based orders or partial filling of orders (though\n     *         filling the remainder of a partially-filled order is supported).\n     *\n     * @param order               The order to fulfill. Note that both the\n     *                            offerer and the fulfiller must first approve\n     *                            this contract (or the corresponding conduit if\n     *                            indicated) to transfer any relevant tokens on\n     *                            their behalf and that contracts must implement\n     *                            `onERC1155Received` to receive ERC1155 tokens\n     *                            as consideration.\n     * @param fulfillerConduitKey A bytes32 value indicating what conduit, if\n     *                            any, to source the fulfiller's token approvals\n     *                            from. The zero hash signifies that no conduit\n     *                            should be used, with direct approvals set on\n     *                            Consideration.\n     *\n     * @return fulfilled A boolean indicating whether the order has been\n     *                   successfully fulfilled.\n     */\n    function fulfillOrder(Order calldata order, bytes32 fulfillerConduitKey)\n        external\n        payable\n        returns (bool fulfilled);\n\n    /**\n     * @notice Fill an order, fully or partially, with an arbitrary number of\n     *         items for offer and consideration alongside criteria resolvers\n     *         containing specific token identifiers and associated proofs.\n     *\n     * @param advancedOrder       The order to fulfill along with the fraction\n     *                            of the order to attempt to fill. Note that\n     *                            both the offerer and the fulfiller must first\n     *                            approve this contract (or their preferred\n     *                            conduit if indicated by the order) to transfer\n     *                            any relevant tokens on their behalf and that\n     *                            contracts must implement `onERC1155Received`\n     *                            to receive ERC1155 tokens as consideration.\n     *                            Also note that all offer and consideration\n     *                            components must have no remainder after\n     *                            multiplication of the respective amount with\n     *                            the supplied fraction for the partial fill to\n     *                            be considered valid.\n     * @param criteriaResolvers   An array where each element contains a\n     *                            reference to a specific offer or\n     *                            consideration, a token identifier, and a proof\n     *                            that the supplied token identifier is\n     *                            contained in the merkle root held by the item\n     *                            in question's criteria element. Note that an\n     *                            empty criteria indicates that any\n     *                            (transferrable) token identifier on the token\n     *                            in question is valid and that no associated\n     *                            proof needs to be supplied.\n     * @param fulfillerConduitKey A bytes32 value indicating what conduit, if\n     *                            any, to source the fulfiller's token approvals\n     *                            from. The zero hash signifies that no conduit\n     *                            should be used, with direct approvals set on\n     *                            Consideration.\n     *\n     * @return fulfilled A boolean indicating whether the order has been\n     *                   successfully fulfilled.\n     */\n    function fulfillAdvancedOrder(\n        AdvancedOrder calldata advancedOrder,\n        CriteriaResolver[] calldata criteriaResolvers,\n        bytes32 fulfillerConduitKey\n    ) external payable returns (bool fulfilled);\n\n    /**\n     * @notice Attempt to fill a group of orders, each with an arbitrary number\n     *         of items for offer and consideration. Any order that is not\n     *         currently active, has already been fully filled, or has been\n     *         cancelled will be omitted. Remaining offer and consideration\n     *         items will then be aggregated where possible as indicated by the\n     *         supplied offer and consideration component arrays and aggregated\n     *         items will be transferred to the fulfiller or to each intended\n     *         recipient, respectively. Note that a failing item transfer or an\n     *         issue with order formatting will cause the entire batch to fail.\n     *         Note that this function does not support criteria-based orders or\n     *         partial filling of orders (though filling the remainder of a\n     *         partially-filled order is supported).\n     *\n     * @param orders                    The orders to fulfill. Note that both\n     *                                  the offerer and the fulfiller must first\n     *                                  approve this contract (or the\n     *                                  corresponding conduit if indicated) to\n     *                                  transfer any relevant tokens on their\n     *                                  behalf and that contracts must implement\n     *                                  `onERC1155Received` to receive ERC1155\n     *                                  tokens as consideration.\n     * @param offerFulfillments         An array of FulfillmentComponent arrays\n     *                                  indicating which offer items to attempt\n     *                                  to aggregate when preparing executions.\n     * @param considerationFulfillments An array of FulfillmentComponent arrays\n     *                                  indicating which consideration items to\n     *                                  attempt to aggregate when preparing\n     *                                  executions.\n     * @param fulfillerConduitKey       A bytes32 value indicating what conduit,\n     *                                  if any, to source the fulfiller's token\n     *                                  approvals from. The zero hash signifies\n     *                                  that no conduit should be used, with\n     *                                  direct approvals set on this contract.\n     * @param maximumFulfilled          The maximum number of orders to fulfill.\n     *\n     * @return availableOrders An array of booleans indicating if each order\n     *                         with an index corresponding to the index of the\n     *                         returned boolean was fulfillable or not.\n     * @return executions      An array of elements indicating the sequence of\n     *                         transfers performed as part of matching the given\n     *                         orders.\n     */\n    function fulfillAvailableOrders(\n        Order[] calldata orders,\n        FulfillmentComponent[][] calldata offerFulfillments,\n        FulfillmentComponent[][] calldata considerationFulfillments,\n        bytes32 fulfillerConduitKey,\n        uint256 maximumFulfilled\n    )\n        external\n        payable\n        returns (bool[] memory availableOrders, Execution[] memory executions);\n\n    /**\n     * @notice Attempt to fill a group of orders, fully or partially, with an\n     *         arbitrary number of items for offer and consideration per order\n     *         alongside criteria resolvers containing specific token\n     *         identifiers and associated proofs. Any order that is not\n     *         currently active, has already been fully filled, or has been\n     *         cancelled will be omitted. Remaining offer and consideration\n     *         items will then be aggregated where possible as indicated by the\n     *         supplied offer and consideration component arrays and aggregated\n     *         items will be transferred to the fulfiller or to each intended\n     *         recipient, respectively. Note that a failing item transfer or an\n     *         issue with order formatting will cause the entire batch to fail.\n     *\n     * @param advancedOrders            The orders to fulfill along with the\n     *                                  fraction of those orders to attempt to\n     *                                  fill. Note that both the offerer and the\n     *                                  fulfiller must first approve this\n     *                                  contract (or their preferred conduit if\n     *                                  indicated by the order) to transfer any\n     *                                  relevant tokens on their behalf and that\n     *                                  contracts must implement\n     *                                  `onERC1155Received` to enable receipt of\n     *                                  ERC1155 tokens as consideration. Also\n     *                                  note that all offer and consideration\n     *                                  components must have no remainder after\n     *                                  multiplication of the respective amount\n     *                                  with the supplied fraction for an\n     *                                  order's partial fill amount to be\n     *                                  considered valid.\n     * @param criteriaResolvers         An array where each element contains a\n     *                                  reference to a specific offer or\n     *                                  consideration, a token identifier, and a\n     *                                  proof that the supplied token identifier\n     *                                  is contained in the merkle root held by\n     *                                  the item in question's criteria element.\n     *                                  Note that an empty criteria indicates\n     *                                  that any (transferrable) token\n     *                                  identifier on the token in question is\n     *                                  valid and that no associated proof needs\n     *                                  to be supplied.\n     * @param offerFulfillments         An array of FulfillmentComponent arrays\n     *                                  indicating which offer items to attempt\n     *                                  to aggregate when preparing executions.\n     * @param considerationFulfillments An array of FulfillmentComponent arrays\n     *                                  indicating which consideration items to\n     *                                  attempt to aggregate when preparing\n     *                                  executions.\n     * @param fulfillerConduitKey       A bytes32 value indicating what conduit,\n     *                                  if any, to source the fulfiller's token\n     *                                  approvals from. The zero hash signifies\n     *                                  that no conduit should be used, with\n     *                                  direct approvals set on this contract.\n     * @param maximumFulfilled          The maximum number of orders to fulfill.\n     *\n     * @return availableOrders An array of booleans indicating if each order\n     *                         with an index corresponding to the index of the\n     *                         returned boolean was fulfillable or not.\n     * @return executions      An array of elements indicating the sequence of\n     *                         transfers performed as part of matching the given\n     *                         orders.\n     */\n    function fulfillAvailableAdvancedOrders(\n        AdvancedOrder[] calldata advancedOrders,\n        CriteriaResolver[] calldata criteriaResolvers,\n        FulfillmentComponent[][] calldata offerFulfillments,\n        FulfillmentComponent[][] calldata considerationFulfillments,\n        bytes32 fulfillerConduitKey,\n        uint256 maximumFulfilled\n    )\n        external\n        payable\n        returns (bool[] memory availableOrders, Execution[] memory executions);\n\n    /**\n     * @notice Match an arbitrary number of orders, each with an arbitrary\n     *         number of items for offer and consideration along with as set of\n     *         fulfillments allocating offer components to consideration\n     *         components. Note that this function does not support\n     *         criteria-based or partial filling of orders (though filling the\n     *         remainder of a partially-filled order is supported).\n     *\n     * @param orders       The orders to match. Note that both the offerer and\n     *                     fulfiller on each order must first approve this\n     *                     contract (or their conduit if indicated by the order)\n     *                     to transfer any relevant tokens on their behalf and\n     *                     each consideration recipient must implement\n     *                     `onERC1155Received` to enable ERC1155 token receipt.\n     * @param fulfillments An array of elements allocating offer components to\n     *                     consideration components. Note that each\n     *                     consideration component must be fully met for the\n     *                     match operation to be valid.\n     *\n     * @return executions An array of elements indicating the sequence of\n     *                    transfers performed as part of matching the given\n     *                    orders.\n     */\n    function matchOrders(\n        Order[] calldata orders,\n        Fulfillment[] calldata fulfillments\n    ) external payable returns (Execution[] memory executions);\n\n    /**\n     * @notice Match an arbitrary number of full or partial orders, each with an\n     *         arbitrary number of items for offer and consideration, supplying\n     *         criteria resolvers containing specific token identifiers and\n     *         associated proofs as well as fulfillments allocating offer\n     *         components to consideration components.\n     *\n     * @param orders            The advanced orders to match. Note that both the\n     *                          offerer and fulfiller on each order must first\n     *                          approve this contract (or a preferred conduit if\n     *                          indicated by the order) to transfer any relevant\n     *                          tokens on their behalf and each consideration\n     *                          recipient must implement `onERC1155Received` in\n     *                          order toreceive ERC1155 tokens. Also note that\n     *                          the offer and consideration components for each\n     *                          order must have no remainder after multiplying\n     *                          the respective amount with the supplied fraction\n     *                          in order for the group of partial fills to be\n     *                          considered valid.\n     * @param criteriaResolvers An array where each element contains a reference\n     *                          to a specific order as well as that order's\n     *                          offer or consideration, a token identifier, and\n     *                          a proof that the supplied token identifier is\n     *                          contained in the order's merkle root. Note that\n     *                          an empty root indicates that any (transferrable)\n     *                          token identifier is valid and that no associated\n     *                          proof needs to be supplied.\n     * @param fulfillments      An array of elements allocating offer components\n     *                          to consideration components. Note that each\n     *                          consideration component must be fully met in\n     *                          order for the match operation to be valid.\n     *\n     * @return executions An array of elements indicating the sequence of\n     *                    transfers performed as part of matching the given\n     *                    orders.\n     */\n    function matchAdvancedOrders(\n        AdvancedOrder[] calldata orders,\n        CriteriaResolver[] calldata criteriaResolvers,\n        Fulfillment[] calldata fulfillments\n    ) external payable returns (Execution[] memory executions);\n\n    /**\n     * @notice Cancel an arbitrary number of orders. Note that only the offerer\n     *         or the zone of a given order may cancel it. Callers should ensure\n     *         that the intended order was cancelled by calling `getOrderStatus`\n     *         and confirming that `isCancelled` returns `true`.\n     *\n     * @param orders The orders to cancel.\n     *\n     * @return cancelled A boolean indicating whether the supplied orders have\n     *                   been successfully cancelled.\n     */\n    function cancel(OrderComponents[] calldata orders)\n        external\n        returns (bool cancelled);\n\n    /**\n     * @notice Validate an arbitrary number of orders, thereby registering their\n     *         signatures as valid and allowing the fulfiller to skip signature\n     *         verification on fulfillment. Note that validated orders may still\n     *         be unfulfillable due to invalid item amounts or other factors;\n     *         callers should determine whether validated orders are fulfillable\n     *         by simulating the fulfillment call prior to execution. Also note\n     *         that anyone can validate a signed order, but only the offerer can\n     *         validate an order without supplying a signature.\n     *\n     * @param orders The orders to validate.\n     *\n     * @return validated A boolean indicating whether the supplied orders have\n     *                   been successfully validated.\n     */\n    function validate(Order[] calldata orders)\n        external\n        returns (bool validated);\n\n    /**\n     * @notice Cancel all orders from a given offerer with a given zone in bulk\n     *         by incrementing a nonce. Note that only the offerer may increment\n     *         the nonce.\n     *\n     * @return newNonce The new nonce.\n     */\n    function incrementNonce() external returns (uint256 newNonce);\n\n    /**\n     * @notice Retrieve the order hash for a given order.\n     *\n     * @param order The components of the order.\n     *\n     * @return orderHash The order hash.\n     */\n    function getOrderHash(OrderComponents calldata order)\n        external\n        view\n        returns (bytes32 orderHash);\n\n    /**\n     * @notice Retrieve the status of a given order by hash, including whether\n     *         the order has been cancelled or validated and the fraction of the\n     *         order that has been filled.\n     *\n     * @param orderHash The order hash in question.\n     *\n     * @return isValidated A boolean indicating whether the order in question\n     *                     has been validated (i.e. previously approved or\n     *                     partially filled).\n     * @return isCancelled A boolean indicating whether the order in question\n     *                     has been cancelled.\n     * @return totalFilled The total portion of the order that has been filled\n     *                     (i.e. the \"numerator\").\n     * @return totalSize   The total size of the order that is either filled or\n     *                     unfilled (i.e. the \"denominator\").\n     */\n    function getOrderStatus(bytes32 orderHash)\n        external\n        view\n        returns (\n            bool isValidated,\n            bool isCancelled,\n            uint256 totalFilled,\n            uint256 totalSize\n        );\n\n    /**\n     * @notice Retrieve the current nonce for a given offerer.\n     *\n     * @param offerer The offerer in question.\n     *\n     * @return nonce The current nonce.\n     */\n    function getNonce(address offerer) external view returns (uint256 nonce);\n\n    /**\n     * @notice Retrieve configuration information for this contract.\n     *\n     * @return version           The contract version.\n     * @return domainSeparator   The domain separator for this contract.\n     * @return conduitController The conduit Controller set for this contract.\n     */\n    function information()\n        external\n        view\n        returns (\n            string memory version,\n            bytes32 domainSeparator,\n            address conduitController\n        );\n\n    /**\n     * @notice Retrieve the name of this contract.\n     *\n     * @return contractName The name of this contract.\n     */\n    function name() external view returns (string memory contractName);\n}\n"
      },
      "seaport/contracts/Seaport.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\nimport { Consideration } from \"./Consideration.sol\";\n\n/**\n * @title Seaport\n * @author 0age\n * @custom:coauthor d1ll0n\n * @custom:coauthor transmissions11\n * @custom:version 1\n * @notice Seaport is a generalized ETH/ERC20/ERC721/ERC1155 marketplace. It\n *         minimizes external calls to the greatest extent possible and provides\n *         lightweight methods for common routes as well as more flexible\n *         methods for composing advanced orders or groups of orders. Each order\n *         contains an arbitrary number of items that may be spent (the \"offer\")\n *         along with an arbitrary number of items that must be received back by\n *         the indicated recipients (the \"consideration\").\n */\ncontract Seaport is Consideration {\n    /**\n     * @notice Derive and set hashes, reference chainId, and associated domain\n     *         separator during deployment.\n     *\n     * @param conduitController A contract that deploys conduits, or proxies\n     *                          that may optionally be used to transfer approved\n     *                          ERC20/721/1155 tokens.\n     */\n    constructor(address conduitController) Consideration(conduitController) {}\n\n    /**\n     * @dev Internal pure function to retrieve and return the name of this\n     *      contract.\n     *\n     * @return The name of this contract.\n     */\n    function _name() internal pure override returns (string memory) {\n        // Return the name of the contract.\n        assembly {\n            mstore(0, 0x20)\n            mstore(0x27, 0x07536561706f7274)\n            return(0, 0x60)\n        }\n    }\n\n    /**\n     * @dev Internal pure function to retrieve the name of this contract as a\n     *      string that will be used to derive the name hash in the constructor.\n     *\n     * @return The name of this contract as a string.\n     */\n    function _nameString() internal pure override returns (string memory) {\n        // Return the name of the contract.\n        return \"Seaport\";\n    }\n}\n"
      },
      "src/contracts/Seaport.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\nimport \"seaport/contracts/Seaport.sol\";\n"
      },
      "src/contracts/ConduitController.sol": {
        "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.8.13;\n\nimport \"seaport/contracts/conduit/ConduitController.sol\";\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata"
          ],
          "": [
            "ast"
          ]
        }
      }
    }
  },
  "output": {
    "contracts": {
      "seaport/contracts/Consideration.sol": {
        "Consideration": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduitController",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "BadContractSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "BadFraction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BadReturnValueFromERC20OnTransfer",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                }
              ],
              "name": "BadSignatureV",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ConsiderationCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "orderIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "considerationIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "shortfallAmount",
                  "type": "uint256"
                }
              ],
              "name": "ConsiderationNotMet",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "CriteriaNotEnabledForItem",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "identifiers",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "ERC1155BatchTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "EtherTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InexactFraction",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InsufficientEtherSupplied",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidBasicOrderParameterEncoding",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidCallToConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidCanceller",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidERC721TransferAmount",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidFulfillmentComponentData",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "InvalidMsgValue",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidProof",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "InvalidRestrictedOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSigner",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidTime",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MismatchedFulfillmentOfferAndConsiderationComponents",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "enum Side",
                  "name": "side",
                  "type": "uint8"
                }
              ],
              "name": "MissingFulfillmentComponentOnAggregation",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingItemAmount",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingOriginalConsiderationItems",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "NoContract",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoReentrantCalls",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoSpecifiedOrdersAvailable",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OfferAndConsiderationRequiredOnFulfillment",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OfferCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderAlreadyFilled",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OrderCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderIsCancelled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderPartiallyFilled",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "PartialFillsNotEnabledForOrder",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "identifier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnresolvedConsiderationCriteria",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnresolvedOfferCriteria",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                }
              ],
              "name": "NonceIncremented",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderCancelled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fulfiller",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct SpentItem[]",
                  "name": "offer",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address payable",
                      "name": "recipient",
                      "type": "address"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct ReceivedItem[]",
                  "name": "consideration",
                  "type": "tuple[]"
                }
              ],
              "name": "OrderFulfilled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderValidated",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "zone",
                      "type": "address"
                    },
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifierOrCriteria",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endAmount",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OfferItem[]",
                      "name": "offer",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifierOrCriteria",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ConsiderationItem[]",
                      "name": "consideration",
                      "type": "tuple[]"
                    },
                    {
                      "internalType": "enum OrderType",
                      "name": "orderType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "endTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "zoneHash",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "salt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "nonce",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct OrderComponents[]",
                  "name": "orders",
                  "type": "tuple[]"
                }
              ],
              "name": "cancel",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "cancelled",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "uint120",
                      "name": "numerator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "uint120",
                      "name": "denominator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "extraData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct AdvancedOrder",
                  "name": "advancedOrder",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "enum Side",
                      "name": "side",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "index",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32[]",
                      "name": "criteriaProof",
                      "type": "bytes32[]"
                    }
                  ],
                  "internalType": "struct CriteriaResolver[]",
                  "name": "criteriaResolvers",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bytes32",
                  "name": "fulfillerConduitKey",
                  "type": "bytes32"
                }
              ],
              "name": "fulfillAdvancedOrder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "fulfilled",
                  "type": "bool"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "uint120",
                      "name": "numerator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "uint120",
                      "name": "denominator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "extraData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct AdvancedOrder[]",
                  "name": "advancedOrders",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "enum Side",
                      "name": "side",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "index",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32[]",
                      "name": "criteriaProof",
                      "type": "bytes32[]"
                    }
                  ],
                  "internalType": "struct CriteriaResolver[]",
                  "name": "criteriaResolvers",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "itemIndex",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct FulfillmentComponent[][]",
                  "name": "offerFulfillments",
                  "type": "tuple[][]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "itemIndex",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct FulfillmentComponent[][]",
                  "name": "considerationFulfillments",
                  "type": "tuple[][]"
                },
                {
                  "internalType": "bytes32",
                  "name": "fulfillerConduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "maximumFulfilled",
                  "type": "uint256"
                }
              ],
              "name": "fulfillAvailableAdvancedOrders",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "availableOrders",
                  "type": "bool[]"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifier",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ReceivedItem",
                      "name": "item",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct Execution[]",
                  "name": "executions",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Order[]",
                  "name": "orders",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "itemIndex",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct FulfillmentComponent[][]",
                  "name": "offerFulfillments",
                  "type": "tuple[][]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "itemIndex",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct FulfillmentComponent[][]",
                  "name": "considerationFulfillments",
                  "type": "tuple[][]"
                },
                {
                  "internalType": "bytes32",
                  "name": "fulfillerConduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "maximumFulfilled",
                  "type": "uint256"
                }
              ],
              "name": "fulfillAvailableOrders",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "availableOrders",
                  "type": "bool[]"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifier",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ReceivedItem",
                      "name": "item",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct Execution[]",
                  "name": "executions",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "considerationToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "considerationIdentifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "considerationAmount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address payable",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "zone",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "offerToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "offerIdentifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "offerAmount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "enum BasicOrderType",
                      "name": "basicOrderType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "endTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "zoneHash",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "salt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "offererConduitKey",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "fulfillerConduitKey",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "totalOriginalAdditionalRecipients",
                      "type": "uint256"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct AdditionalRecipient[]",
                      "name": "additionalRecipients",
                      "type": "tuple[]"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct BasicOrderParameters",
                  "name": "parameters",
                  "type": "tuple"
                }
              ],
              "name": "fulfillBasicOrder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "fulfilled",
                  "type": "bool"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Order",
                  "name": "order",
                  "type": "tuple"
                },
                {
                  "internalType": "bytes32",
                  "name": "fulfillerConduitKey",
                  "type": "bytes32"
                }
              ],
              "name": "fulfillOrder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "fulfilled",
                  "type": "bool"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                }
              ],
              "name": "getNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "zone",
                      "type": "address"
                    },
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifierOrCriteria",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endAmount",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OfferItem[]",
                      "name": "offer",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifierOrCriteria",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ConsiderationItem[]",
                      "name": "consideration",
                      "type": "tuple[]"
                    },
                    {
                      "internalType": "enum OrderType",
                      "name": "orderType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "endTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "zoneHash",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "salt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "nonce",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct OrderComponents",
                  "name": "order",
                  "type": "tuple"
                }
              ],
              "name": "getOrderHash",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "getOrderStatus",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isValidated",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "isCancelled",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "totalFilled",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalSize",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "incrementNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "information",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "version",
                  "type": "string"
                },
                {
                  "internalType": "bytes32",
                  "name": "domainSeparator",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "conduitController",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "uint120",
                      "name": "numerator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "uint120",
                      "name": "denominator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "extraData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct AdvancedOrder[]",
                  "name": "advancedOrders",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "enum Side",
                      "name": "side",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "index",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32[]",
                      "name": "criteriaProof",
                      "type": "bytes32[]"
                    }
                  ],
                  "internalType": "struct CriteriaResolver[]",
                  "name": "criteriaResolvers",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "orderIndex",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "itemIndex",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct FulfillmentComponent[]",
                      "name": "offerComponents",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "orderIndex",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "itemIndex",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct FulfillmentComponent[]",
                      "name": "considerationComponents",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct Fulfillment[]",
                  "name": "fulfillments",
                  "type": "tuple[]"
                }
              ],
              "name": "matchAdvancedOrders",
              "outputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifier",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ReceivedItem",
                      "name": "item",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct Execution[]",
                  "name": "executions",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Order[]",
                  "name": "orders",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "orderIndex",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "itemIndex",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct FulfillmentComponent[]",
                      "name": "offerComponents",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "orderIndex",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "itemIndex",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct FulfillmentComponent[]",
                      "name": "considerationComponents",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct Fulfillment[]",
                  "name": "fulfillments",
                  "type": "tuple[]"
                }
              ],
              "name": "matchOrders",
              "outputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifier",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ReceivedItem",
                      "name": "item",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct Execution[]",
                  "name": "executions",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "contractName",
                  "type": "string"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Order[]",
                  "name": "orders",
                  "type": "tuple[]"
                }
              ],
              "name": "validate",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "validated",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_2519": {
                  "entryPoint": null,
                  "id": 2519,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_2625": {
                  "entryPoint": null,
                  "id": 2625,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_31": {
                  "entryPoint": null,
                  "id": 31,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_3225": {
                  "entryPoint": null,
                  "id": 3225,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_4482": {
                  "entryPoint": null,
                  "id": 4482,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_5345": {
                  "entryPoint": null,
                  "id": 5345,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_5599": {
                  "entryPoint": null,
                  "id": 5599,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_6579": {
                  "entryPoint": null,
                  "id": 6579,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_7098": {
                  "entryPoint": null,
                  "id": 7098,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_7733": {
                  "entryPoint": null,
                  "id": 7733,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_8248": {
                  "entryPoint": null,
                  "id": 8248,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_deriveDomainSeparator_3247": {
                  "entryPoint": null,
                  "id": 3247,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_deriveTypehashes_3383": {
                  "entryPoint": 304,
                  "id": 3383,
                  "parameterSlots": 0,
                  "returnSlots": 6
                },
                "@_nameString_3264": {
                  "entryPoint": null,
                  "id": 3264,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1478,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_bytes32_fromMemory": {
                  "entryPoint": 1528,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_bytes": {
                  "entryPoint": 1565,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_59d7": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_cfcd": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1627,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7686:45",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:45",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:45",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:45",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:45"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:45",
                            "type": ""
                          }
                        ],
                        "src": "14:290:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "407:147:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "453:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "462:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "465:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "455:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "455:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "455:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "428:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "437:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "424:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "424:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "449:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "420:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "420:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "417:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "478:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "494:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "488:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "488:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "478:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "513:35:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "533:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "544:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "529:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "529:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:25:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "365:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "376:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "388:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "396:6:45",
                            "type": ""
                          }
                        ],
                        "src": "309:245:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "614:59:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "631:3:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "636:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "624:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "624:16:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "624:16:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "649:18:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "660:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "665:1:45",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "656:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "656:11:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "649:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_59d7",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "598:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "606:3:45",
                            "type": ""
                          }
                        ],
                        "src": "559:114:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1476:365:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1493:3:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1498:12:45",
                                    "type": "",
                                    "value": "OfferItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1486:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1486:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1486:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1531:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1536:2:45",
                                        "type": "",
                                        "value": "10"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1527:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1527:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1541:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1520:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1520:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1520:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1579:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1584:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1575:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1575:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1589:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1568:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1568:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1568:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1626:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1631:2:45",
                                        "type": "",
                                        "value": "39"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1622:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1622:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1636:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1615:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1615:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1615:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1688:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1693:2:45",
                                        "type": "",
                                        "value": "68"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1684:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1684:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1698:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1677:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1677:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1677:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1741:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1746:2:45",
                                        "type": "",
                                        "value": "88"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1737:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1737:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1751:19:45",
                                    "type": "",
                                    "value": "uint256 endAmount"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1730:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1730:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1730:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1791:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1796:3:45",
                                        "type": "",
                                        "value": "105"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1787:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1787:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1802:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1780:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1780:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1780:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1815:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1826:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1831:3:45",
                                    "type": "",
                                    "value": "106"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1822:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1822:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1815:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1460:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1468:3:45",
                            "type": ""
                          }
                        ],
                        "src": "678:1163:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2745:425:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2762:3:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2767:20:45",
                                    "type": "",
                                    "value": "ConsiderationItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2755:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2755:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2755:33:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2808:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2813:2:45",
                                        "type": "",
                                        "value": "18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2804:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2804:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2818:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2797:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2797:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2797:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2856:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2861:2:45",
                                        "type": "",
                                        "value": "33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2852:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2852:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2866:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2845:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2845:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2845:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2903:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2908:2:45",
                                        "type": "",
                                        "value": "47"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2899:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2899:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2913:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2892:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2892:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2892:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2965:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2970:2:45",
                                        "type": "",
                                        "value": "76"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2961:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2961:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2975:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2954:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2954:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2954:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3018:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3023:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3014:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3014:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3028:20:45",
                                    "type": "",
                                    "value": "uint256 endAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3007:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3007:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3007:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3069:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3074:3:45",
                                        "type": "",
                                        "value": "114"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3065:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3065:13:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320726563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3080:19:45",
                                    "type": "",
                                    "value": "address recipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3058:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3058:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3058:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3120:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3125:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3116:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3116:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3131:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3109:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3109:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3109:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3144:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3155:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3160:3:45",
                                    "type": "",
                                    "value": "132"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3151:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3151:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3144:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2729:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2737:3:45",
                            "type": ""
                          }
                        ],
                        "src": "1846:1324:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3230:78:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3247:3:45"
                                  },
                                  {
                                    "hexValue": "6279746573333220636f6e647569744b65792c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3252:21:45",
                                    "type": "",
                                    "value": "bytes32 conduitKey,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3240:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3240:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3240:34:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3283:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3294:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3299:2:45",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3290:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3290:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_cfcd",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3214:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3222:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3175:133:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3363:72:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3380:3:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206e6f6e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3385:15:45",
                                    "type": "",
                                    "value": "uint256 nonce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3373:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3373:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3373:28:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3410:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3421:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3426:2:45",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3417:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3417:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3410:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3347:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3355:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3313:122:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4844:659:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4861:3:45"
                                  },
                                  {
                                    "hexValue": "4f72646572436f6d706f6e656e747328",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4866:18:45",
                                    "type": "",
                                    "value": "OrderComponents("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4854:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4854:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4854:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4905:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4910:2:45",
                                        "type": "",
                                        "value": "16"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4901:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4901:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373206f6666657265722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4915:18:45",
                                    "type": "",
                                    "value": "address offerer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4894:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4894:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4894:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4954:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4959:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4950:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4950:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373207a6f6e652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4964:15:45",
                                    "type": "",
                                    "value": "address zone,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4943:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4943:37:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4943:37:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5000:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5005:2:45",
                                        "type": "",
                                        "value": "45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4996:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4996:12:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d5b5d206f666665722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5010:20:45",
                                    "type": "",
                                    "value": "OfferItem[] offer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4989:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4989:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4989:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5051:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5056:2:45",
                                        "type": "",
                                        "value": "63"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5047:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5047:12:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5061:34:45",
                                    "type": "",
                                    "value": "ConsiderationItem[] consideratio"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5040:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5040:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5040:56:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5116:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5121:2:45",
                                        "type": "",
                                        "value": "95"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5112:12:45"
                                  },
                                  {
                                    "hexValue": "6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5126:4:45",
                                    "type": "",
                                    "value": "n,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5105:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5105:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5105:26:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5151:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5156:2:45",
                                        "type": "",
                                        "value": "97"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5147:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5147:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206f72646572547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5161:18:45",
                                    "type": "",
                                    "value": "uint8 orderType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5140:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5140:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5140:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5200:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5205:3:45",
                                        "type": "",
                                        "value": "113"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5196:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5196:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620737461727454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5211:20:45",
                                    "type": "",
                                    "value": "uint256 startTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5189:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5189:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5189:43:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5252:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5257:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5248:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5248:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e6454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5263:18:45",
                                    "type": "",
                                    "value": "uint256 endTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5241:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5241:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5241:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5302:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5307:3:45",
                                        "type": "",
                                        "value": "147"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5298:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5298:13:45"
                                  },
                                  {
                                    "hexValue": "62797465733332207a6f6e65486173682c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5313:19:45",
                                    "type": "",
                                    "value": "bytes32 zoneHash,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5291:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5291:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5291:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5353:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5358:3:45",
                                        "type": "",
                                        "value": "164"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5349:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5349:13:45"
                                  },
                                  {
                                    "hexValue": "75696e743235362073616c742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5364:15:45",
                                    "type": "",
                                    "value": "uint256 salt,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5342:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5342:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5342:38:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5389:108:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "5485:3:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5490:3:45",
                                                "type": "",
                                                "value": "177"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5481:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5481:13:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_stringliteral_cfcd",
                                          "nodeType": "YulIdentifier",
                                          "src": "5451:29:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5451:44:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_stringliteral",
                                      "nodeType": "YulIdentifier",
                                      "src": "5426:24:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5426:70:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_stringliteral_59d7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5396:29:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5396:101:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5389:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4828:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4836:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3440:2063:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6205:306:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6222:3:45"
                                  },
                                  {
                                    "hexValue": "454950373132446f6d61696e28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6227:15:45",
                                    "type": "",
                                    "value": "EIP712Domain("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6215:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6215:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6215:28:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6263:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6268:2:45",
                                        "type": "",
                                        "value": "13"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6259:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6259:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e67206e616d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6273:14:45",
                                    "type": "",
                                    "value": "string name,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6252:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6252:36:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6252:36:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6308:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6313:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6304:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6304:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e672076657273696f6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6318:17:45",
                                    "type": "",
                                    "value": "string version,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6297:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6297:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6297:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6356:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6361:2:45",
                                        "type": "",
                                        "value": "40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6352:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6352:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620636861696e49642c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6366:18:45",
                                    "type": "",
                                    "value": "uint256 chainId,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6345:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6345:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6345:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6405:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6410:2:45",
                                        "type": "",
                                        "value": "56"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6401:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6401:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320766572696679696e67436f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6415:27:45",
                                    "type": "",
                                    "value": "address verifyingContract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6394:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6394:49:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6394:49:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6463:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6468:2:45",
                                        "type": "",
                                        "value": "81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6459:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6459:12:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6473:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6452:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6452:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6452:25:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6486:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6497:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6502:2:45",
                                    "type": "",
                                    "value": "82"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6493:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6493:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6486:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6189:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6197:3:45",
                            "type": ""
                          }
                        ],
                        "src": "5508:1003:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6565:287:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6575:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6595:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6589:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6589:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6579:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6610:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6619:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6614:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6681:76:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6706:3:45"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "6711:1:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6702:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6702:11:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6729:5:45"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6736:1:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6725:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6725:13:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "6740:4:45",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6721:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6721:24:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6715:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6715:31:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6695:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6695:52:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6695:52:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6640:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6643:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6637:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6637:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6651:21:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6653:17:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6662:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6665:4:45",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6658:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6658:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6653:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6633:3:45",
                                "statements": []
                              },
                              "src": "6629:128:45"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6783:31:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6796:3:45"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "6801:6:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6792:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6792:16:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6810:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6785:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6785:27:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6785:27:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6772:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6775:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6769:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6769:13:45"
                              },
                              "nodeType": "YulIf",
                              "src": "6766:48:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6823:23:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6834:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6839:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6830:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6830:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6823:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6542:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6549:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6557:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6516:336:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7086:104:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7096:88:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7120:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7145:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "7170:6:45"
                                          },
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "7178:3:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_bytes",
                                          "nodeType": "YulIdentifier",
                                          "src": "7153:16:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7153:29:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "7128:16:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7128:55:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "7103:16:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7103:81:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7096:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7046:3:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7051:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7059:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7067:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7078:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6857:333:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7408:276:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7418:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7430:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7441:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7426:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7426:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7418:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7461:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7472:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7454:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7454:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7454:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7499:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7510:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7495:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7495:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7515:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7488:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7488:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7488:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7542:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7553:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7538:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7538:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7558:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7531:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7531:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7531:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7585:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7596:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7581:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7581:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7601:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7574:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7574:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7574:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7628:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7639:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7624:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7624:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7649:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7665:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7670:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "7661:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7661:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7674:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "7657:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7657:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7645:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7645:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7617:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7617:61:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7617:61:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7345:9:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7356:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7364:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7372:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7380:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7388:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7399:4:45",
                            "type": ""
                          }
                        ],
                        "src": "7195:489:45"
                      }
                    ]
                  },
                  "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 abi_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OfferItem(\")\n        mstore(add(pos, 10), \"uint8 itemType,\")\n        mstore(add(pos, 25), \"address token,\")\n        mstore(add(pos, 39), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 68), \"uint256 startAmount,\")\n        mstore(add(pos, 88), \"uint256 endAmount\")\n        mstore(add(pos, 105), \")\")\n        end := add(pos, 106)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"ConsiderationItem(\")\n        mstore(add(pos, 18), \"uint8 itemType,\")\n        mstore(add(pos, 33), \"address token,\")\n        mstore(add(pos, 47), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 76), \"uint256 startAmount,\")\n        mstore(add(pos, 96), \"uint256 endAmount,\")\n        mstore(add(pos, 114), \"address recipient\")\n        mstore(add(pos, 131), \")\")\n        end := add(pos, 132)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral(pos) -> end\n    {\n        mstore(pos, \"uint256 nonce\")\n        end := add(pos, 13)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address zone,\")\n        mstore(add(pos, 45), \"OfferItem[] offer,\")\n        mstore(add(pos, 63), \"ConsiderationItem[] consideratio\")\n        mstore(add(pos, 95), \"n,\")\n        mstore(add(pos, 97), \"uint8 orderType,\")\n        mstore(add(pos, 113), \"uint256 startTime,\")\n        mstore(add(pos, 131), \"uint256 endTime,\")\n        mstore(add(pos, 147), \"bytes32 zoneHash,\")\n        mstore(add(pos, 164), \"uint256 salt,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral(abi_encode_stringliteral_cfcd(add(pos, 177))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value, i), 0x20)))\n        }\n        if gt(i, length) { mstore(add(pos, length), 0) }\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        end := abi_encode_bytes(value2, abi_encode_bytes(value1, abi_encode_bytes(value0, pos)))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}",
                  "id": 45,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101c06040523480156200001257600080fd5b5060405162005b6e38038062005b6e8339810160408190526200003591620005c6565b8080808080808080806200004862000130565b610120526101005260e05260c081815260a0838152608085815246610140819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610160526001600160a01b03811661018081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa158015620000ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001159190620005f8565b506101a0525050600160005550620006889650505050505050565b600080808080806200016260408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260018152603160f81b90840152519097507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc696506000916200026591016909ecccccae492e8cada560b31b81526e1d5a5b9d0e081a5d195b551e5c194b608a1b600a8201526d1859191c995cdcc81d1bdad95b8b60921b60198201527f75696e74323536206964656e7469666965724f7243726974657269612c00000060278201527f75696e74323536207374617274416d6f756e742c0000000000000000000000006044820152701d5a5b9d0c8d4d88195b99105b5bdd5b9d607a1b6058820152602960f81b6069820152606a0190565b60408051601f1981840301815282825271086dedce6d2c8cae4c2e8d2dedc92e8cada560731b60208401526e1d5a5b9d0e081a5d195b551e5c194b608a1b60328401526d1859191c995cdcc81d1bdad95b8b60921b60418401527f75696e74323536206964656e7469666965724f7243726974657269612c000000604f8401527f75696e74323536207374617274416d6f756e742c000000000000000000000000606c840152711d5a5b9d0c8d4d88195b99105b5bdd5b9d0b60721b6080840152701859191c995cdcc81c9958da5c1a595b9d607a1b6092840152602960f81b60a384018190528251808503608401815260a485019093526f09ee4c8cae486dedae0dedccadce8e6560831b60c48501526f1859191c995cdcc81bd999995c995c8b60821b60d48501526c1859191c995cdcc81e9bdb994b609a1b60e48501527113d999995c925d195b56d7481bd999995c8b60721b60f18501527f436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f610103850152611b8b60f21b6101238501526f1d5a5b9d0e081bdc99195c951e5c194b60821b610125850152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b6101358501526f1d5a5b9d0c8d4d88195b99151a5b594b60821b61014785015270189e5d195ccccc881e9bdb9952185cda0b607a1b6101578501526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101688501527f6279746573333220636f6e647569744b65792c000000000000000000000000006101758501526c75696e74323536206e6f6e636560981b6101888501526101958401529250906000906101960160408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b6071830152915060720160408051601f19818403018152908290528051602091820120855186830120855186840120919a5098509650620005a391839185918791016200065b565b604051602081830303815290604052805190602001209350505050909192939495565b600060208284031215620005d957600080fd5b81516001600160a01b0381168114620005f157600080fd5b9392505050565b600080604083850312156200060c57600080fd5b505080516020909101519092909150565b6000815160005b8181101562000640576020818501810151868301520162000624565b8181111562000650576000828601525b509290920192915050565b60006200067f620006786200067184886200061d565b866200061d565b846200061d565b95945050505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a05161544e620007206000396000613545015260008181610d72015261351901526000612329015260006122590152600081816108a90152612541015260008181610838015261239f0152600081816107d101526124ba01526000612287015260006122d5015260006122ad015261544e6000f3fe6080604052600436106100e85760003560e01c8063a81744041161008a578063f47b774011610059578063f47b7740146102c7578063fb0f3ee1146102eb578063fb4c2af9146102fe578063fd9f1e101461031157600080fd5b8063a81744041461026d578063b3a34c4c14610280578063df7b0dac14610293578063ed98a574146102a657600080fd5b806355944a42116100c657806355944a42146101e8578063627cdcb91461020857806379df72bd1461021d578063881477321461023d57600080fd5b806306fdde03146100ed5780632d0335ab1461011857806346423aa714610146575b600080fd5b3480156100f957600080fd5b50610102610331565b60405161010f9190613fe4565b60405180910390f35b34801561012457600080fd5b5061013861013336600461401c565b610340565b60405190815260200161010f565b34801561015257600080fd5b506101c6610161366004614039565b6000908152600260209081526040918290208251608081018452905460ff8082161515808452610100830490911615159383018490526001600160781b036201000083048116958401869052600160881b909204909116606090920182905293919291565b604080519415158552921515602085015291830152606082015260800161010f565b6101fb6101f63660046145e3565b610360565b60405161010f9190614745565b34801561021457600080fd5b50610138610381565b34801561022957600080fd5b50610138610238366004614758565b61038b565b34801561024957600080fd5b5061025d610258366004614793565b61051c565b604051901515815260200161010f565b6101fb61027b3660046147d4565b61052f565b61025d61028e36600461483f565b6105ad565b61025d6102a1366004614888565b61061e565b6102b96102b43660046148ff565b61063c565b60405161010f9291906149a7565b3480156102d357600080fd5b506102dc6106c5565b60405161010f939291906149f6565b61025d6102f9366004614a29565b6106dd565b6102b961030c366004614a64565b6106e8565b34801561031d57600080fd5b5061025d61032c366004614793565b610716565b606061033b610722565b905090565b6001600160a01b0381166000908152600160205260408120545b92915050565b6060610377866103708688614b34565b8585610741565b9695505050505050565b600061033b61075c565b60408051610160810190915260009061035a90806103ac602086018661401c565b6001600160a01b031681526020018460200160208101906103cd919061401c565b6001600160a01b031681526020016103e86040860186614c68565b808060200260200160405190810160405280939291908181526020016000905b828210156104345761042560a08302860136819003810190614cb0565b81526020019060010190610408565b505050918352505060200161044c6060860186614ccc565b808060200260200160405190810160405280939291908181526020016000905b828210156104985761048960c08302860136819003810190614d14565b8152602001906001019061046c565b50505091835250506020016104b360a0860160808701614d30565b60038111156104c4576104c4614677565b81526020018460a0013581526020018460c0013581526020018460e0013581526020018461010001358152602001846101200135815260200184806060019061050d9190614ccc565b909152506101408401356107b9565b600061052883836108ff565b9392505050565b60606105a261053e8686610abb565b604080516000808252602082019092529061059a565b6105876040805160a081019091526000808252602082019081526020016000815260200160008152602001606081525090565b8152602001906001900390816105545790505b508585610741565b90505b949350505050565b60006105286105bb84610b76565b6040805160008082526020820190925290610617565b6106046040805160a081019091526000808252602082019081526020016000815260200160008152602001606081525090565b8152602001906001900390816105d15790505b5084610c21565b60006105a261062c86614d4b565b6106368587614b34565b84610c21565b6060806106b461064c8b8b610abb565b60408051600080825260208201909252906106a8565b6106956040805160a081019091526000808252602082019081526020016000815260200160008152602001606081525090565b8152602001906001900390816106625790505b508a8a8a8a8a8a610d12565b915091509850989650505050505050565b60606000806106d2610d51565b925092509250909192565b600061035a82610db0565b6060806107048b6106f98b8d614b34565b8a8a8a8a8a8a610d12565b91509150995099975050505050505050565b6000610528838361104a565b606060206000526d0d436f6e73696465726174696f6e602d5260606000f35b606061075185856001885161124b565b6105a2858484611562565b600061076661168d565b503360008181526001602081815260409283902080549092019182905591518181529092917f7ab0fc7de8910a6100b24df423c3d0835534506dca9473d30c3e7df51241b2cf910160405180910390a290565b610140820151604080519084015180516000939284927f000000000000000000000000000000000000000000000000000000000000000092602090910190845b81811015610826578251601f1901805186825260c0822086529052602093840193909201916001016107f9565b506020810260405120945050505060007f00000000000000000000000000000000000000000000000000000000000000009150604051602060608901510160005b86811015610894578151601f1901805186825260e082208552905260209283019290910190600101610867565b505060408051602087029020601f198a0180517f00000000000000000000000000000000000000000000000000000000000000008252928b01805197815260608c018051938152610140909c019a8b5261018082209390915295909552939097525050925250919050565b600061090961168d565b60008083815b81811015610aae573687878381811061092a5761092a614d57565b905060200281019061093c9190614d6d565b9050366109498280614d8d565b9050610958602082018261401c565b945061096b61096682614da4565b6116b2565b60008181526002602090815260408083208151608081018352905460ff808216151583526101008204161515938201939093526001600160781b03620100008404811692820192909252600160881b9092041660608201529197506109d5908890839060016116ed565b508051610aa057610a2886886109ee6020870187614db0565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117a692505050565b600087815260026020908152604091829020805460ff19166001179055610a5391840190840161401c565b6001600160a01b0316866001600160a01b03167ffde361574a066b44b3b5fe98a87108b7565e327327954c4faeea56a4e6491a0a89604051610a9791815260200190565b60405180910390a35b83600101935050505061090f565b5060019695505050505050565b606081806001600160401b03811115610ad657610ad6614052565b604051908082528060200260200182016040528015610b0f57816020015b610afc613ea3565b815260200190600190039081610af45790505b50915060005b81811015610b6e57610b49858583818110610b3257610b32614d57565b9050602002810190610b449190614d6d565b610b76565b838281518110610b5b57610b5b614d57565b6020908102919091010152600101610b15565b505092915050565b610b7e613ea3565b6040805160a0810190915280610b948480614d8d565b610b9d90614da4565b815260200160016001600160781b0316815260200160016001600160781b03168152602001838060200190610bd29190614db0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050604080516020818101909252928352909201525092915050565b6000610c2b6117fb565b60606000806000610c3f888860018761180a565b604080516001808252818301909252939650919450925060009190816020015b610c67613ea3565b815260200190600190039081610c5f5790505090508881600081518110610c9057610c90614d57565b6020026020010181905250610ca58189611a93565b600081600081518110610cba57610cba614d57565b6020026020010151600001519050610cda8185858461012001518c611e10565b610cf885826000015183602001513385604001518660600151612014565b610d026001600055565b5060019998505050505050505050565b606080610d228a8a60008661124b565b610d408a610d30898b614e44565b610d3a888a614e44565b87612079565b909b909a5098505050505050505050565b6060600080610d5e612255565b6040805160018082528183019092529193507f000000000000000000000000000000000000000000000000000000000000000092506020820181803683375050603160f81b6020830152509391925090565b600060046101243590810490600316600182113415811480610dec57604051630a61be9f60e41b81523460048201526024015b60405180910390fd5b5060008060006003861160a08102602401359350600287146002881160028903020192506001830181026002861502880103915050610e2f88868487878661234b565b6000610e4160808a0160608b0161401c565b90506101c46003881160200201356000866005811115610e6357610e63614677565b03610eaf57610e8e83610e7c60c08d0160a08e0161401c565b84338e60c001358f60e001358761268b565b610eaa60408b013583610ea56102008e018e614f16565b61273f565b610d02565b6040805160208082528183019092526000916020820181803683370190505090506002896005811115610ee457610ee4614677565b03610f4457610f0f610efc60c08d0160a08e0161401c565b84338e60c001358f60e001358787612804565b610f3f3384610f2160208f018f61401c565b8e604001358f806102000190610f379190614f16565b600088612851565b611030565b6003896005811115610f5857610f58614677565b03610f8357610f0f610f7060c08d0160a08e0161401c565b84338e60c001358f60e0013587876128d8565b6004896005811115610f9757610f97614677565b03610ff557610fbf610fac60208d018d61401c565b33858e602001358f604001358787612804565b610f3f83338d60a0016020810190610fd7919061401c565b8e60e001358f806102000190610fed9190614f16565b600188612851565b61101861100560208d018d61401c565b33858e602001358f6040013587876128d8565b61103083338d60a0016020810190610fd7919061401c565b6110398161290e565b505060019998505050505050505050565b600061105461168d565b60008083815b81811015610aae573687878381811061107557611075614d57565b90506020028101906110879190614d8d565b9050611096602082018261401c565b94506110a8604082016020830161401c565b9350336001600160a01b038616148015906110cc5750336001600160a01b03851614155b156110ea5760405163203b1cdd60e21b815260040160405180910390fd5b60006111d9604051806101600160405280886001600160a01b03168152602001876001600160a01b031681526020018480604001906111299190614c68565b808060200260200160405190810160405280939291908181526020016000905b828210156111755761116660a08302860136819003810190614cb0565b81526020019060010190611149565b505050918352505060200161118d6060860186614ccc565b808060200260200160405190810160405280939291908181526020016000905b82821015610498576111ca60c08302860136819003810190614d14565b815260200190600101906111ad565b60008181526002602052604090819020805461ffff1916610100179055519091506001600160a01b0380871691908816907f6bacc01dbe442496068f7d234edd811f1a5f833243e0aec824f86ab861f3c90d906112399085815260200190565b60405180910390a3505060010161105a565b6112536117fb565b83516000816001600160401b0381111561126f5761126f614052565b604051908082528060200260200182016040528015611298578160200160208202803683370190505b5090506000815260005b828110156114b75760008782815181106112be576112be614d57565b60200260200101519050846000036112e35760006020909101526001810182526114af565b60008060006112f4848b8b8961180a565b9250925092506001850186528160000361131b5750506000602090920191909152506114af565b8286868151811061132e5761132e614d57565b6020908102919091010152835160a081015160c0820151604090920151600019909a019990918290039042839003908183039060005b81518110156113fb57600082828151811061138157611381614d57565b60200260200101519050600061139c8a8a8460800151612937565b905081608001518260600151036113b957606082018190526113ce565b6113c88a8a8460600151612937565b60608301525b6080820181905260608201516113e9908288888b6000612987565b60609092019190915250600101611364565b5088516060015160005b81518110156114a357600082828151811061142257611422614d57565b60200260200101519050600061143d8b8b8460800151612937565b9050816080015182606001510361145a576060820181905261146f565b6114698b8b8460600151612937565b60608301525b60808201819052606082015161148a908289898c6001612987565b60608301525060a0810151608090910152600101611405565b50505050505050505050505b6001016112a2565b506114c28686611a93565b8315330260005b83811015611558576000801b8382815181106114e7576114e7614d57565b6020026020010151031561155057600088828151811061150957611509614d57565b602002602001015160000151905061154e84838151811061152c5761152c614d57565b6020026020010151826000015183602001518685604001518660600151612014565b505b6001016114c9565b5050505050505050565b606081806001600160401b0381111561157d5761157d614052565b6040519080825280602002602001820160405280156115b657816020015b6115a3613ed7565b81526020019060019003908161159b5790505b5091506000805b8281101561166b57368686838181106115d8576115d8614d57565b90506020028101906115ea9190614d6d565b9050600061160e896115fc8480614f16565b6116096020870187614f16565b6129e2565b905080602001516001600160a01b03168160000151608001516001600160a01b03160361164057600184019350611661565b80868585038151811061165557611655614d57565b60200260200101819052505b50506001016115bd565b508015611679578083510383525b506116848583612cd3565b50509392505050565b6001600054146116b057604051637fa8a98760e01b815260040160405180910390fd5b565b60006116c8826060015151836101400151612ee8565b81516001600160a01b031660009081526001602052604090205461035a9083906107b9565b600083602001511561172357811561171b57604051630694555d60e21b815260048101869052602401610de3565b5060006105a5565b60408401516001600160781b03161561179b5782156117585760405163ee9e0e6360e01b815260048101869052602401610de3565b83606001516001600160781b031684604001516001600160781b03161061179b57811561171b576040516310fda3e160e01b815260048101869052602401610de3565b506001949350505050565b336001600160a01b038416036117bb57505050565b60006117e86117c8612255565b61190160f01b600090815260029190915260228581526042822091905290565b90506117f5848284612f09565b50505050565b61180361168d565b6002600055565b6000806000808760000151905061182a8160a001518260c001518861304c565b61183e575060009250829150819050611a89565b602088015160408901516001600160781b03918216911680821180611861575081155b1561187f57604051632d02959960e11b815260040160405180910390fd5b808210801561189357506080830151600116155b156118b15760405163a11b63ff60e01b815260040160405180910390fd5b6118ba836116b2565b95506118dc8a8a89898760e00151886080015189600001518a60200151613092565b60008681526002602090815260408083208151608081018352905460ff808216151583526101008204161515938201939093526001600160781b03620100008404811692820192909252600160881b9092041660608201529061194390889083908c6116ed565b611958575060009450849350611a8992505050565b8051611971576119718460000151888d606001516117a6565b604081015160608201516001600160781b0391821691168015611a3557836001036119a1578094508093506119cd565b8381146119cd576119b28483614f75565b91506119be8186614f75565b94506119ca8185614f75565b93505b836119d88684614f94565b11156119e45781840394505b600089815260026020526040902080546001600160781b03868116600160881b026001600160881b03868a019290921662010000026001600160881b03199093169290921760011716179055611a7e565b600089815260026020526040902080546001600160781b03868116600160881b026001600160881b0391891662010000026001600160881b031990931692909217600117161790555b509295509093505050505b9450945094915050565b8051825160005b82811015611cda576000848281518110611ab657611ab6614d57565b60200260200101519050600081600001519050838110611ae9576040516321a561b160e21b815260040160405180910390fd5b868181518110611afb57611afb614d57565b6020026020010151602001516001600160781b0316600003611b1e575050611cd2565b6000878281518110611b3257611b32614d57565b60209081029190910101515160408401519091506000808086602001516001811115611b6057611b60614677565b03611bfa57604084015180518410611b8b57604051635fd9fc6760e11b815260040160405180910390fd5b6000818581518110611b9f57611b9f614d57565b602090810291909101015180516040820151909550935090506004841460030381816005811115611bd257611bd2614677565b90816005811115611be557611be5614677565b90525050606088015160409091015250611c8b565b606084015180518410611c20576040516330446bef60e11b815260040160405180910390fd5b6000818581518110611c3457611c34614d57565b602090810291909101015180516040820151909550935090506004841460030381816005811115611c6757611c67614677565b90816005811115611c7a57611c7a614677565b905250506060880151604090910152505b611c958260031090565b611cb257604051634a75b57b60e11b815260040160405180910390fd5b8015611ccb57611ccb8660600151828860800151613173565b5050505050505b600101611a9a565b5060005b81811015611e09576000858281518110611cfa57611cfa614d57565b6020026020010151905080602001516001600160781b0316600003611d1f5750611e01565b6000868381518110611d3357611d33614d57565b60200260200101516000015190506000816060015151905060005b81811015611daa57611d8183606001518281518110611d6f57611d6f614d57565b60200260200101516000015160031090565b15611da25760405160016202297360e61b0319815260040160405180910390fd5b600101611d4e565b505060408101515160005b81811015611dfc57611dd683604001518281518110611d6f57611d6f614d57565b15611df45760405163a6cfc67360e01b815260040160405180910390fd5b600101611db5565b505050505b600101611cde565b5050505050565b60008560a001518660c00151611e269190614fac565b905060008660a0015142611e3a9190614fac565b90506000611e488284614fac565b60408051602080825281830190925291925034916000916020820181803683370190505090506131e360005b8b6040015151811015611f2c5760008c604001518281518110611e9957611e99614d57565b602002602001015190506000611ebe826060015183608001518f8f8c8c8f60006132a0565b606083018190523360808401529050600082516005811115611ee257611ee2614677565b03611f0e5785811115611f0857604051631a783b8d60e01b815260040160405180910390fd5b80860395505b611f22828f600001518d888863ffffffff16565b5050600101611e74565b506131e3905060005b8b6060015151811015611fed5760008c606001518281518110611f5a57611f5a614d57565b602002602001015190506000611f7f826060015183608001518f8f8c8c8f60016132a0565b6060830181905260a083015160808401529050600082516005811115611fa757611fa7614677565b03611fd35785811115611fcd57604051631a783b8d60e01b815260040160405180910390fd5b80860395505b611fe382338c888863ffffffff16565b5050600101611f35565b5050611ff88161290e565b81156120085761200833836132ec565b50505050505050505050565b60608290506060829050856001600160a01b0316876001600160a01b03167f9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f318a8886866040516120679493929190614ffd565b60405180910390a35050505050505050565b82518251606091829161208c8183614f94565b6001600160401b038111156120a3576120a3614052565b6040519080825280602002602001820160405280156120dc57816020015b6120c9613ed7565b8152602001906001900390816120c15790505b5092506000805b838110156121755760008982815181106120ff576120ff614d57565b6020026020010151905060006121188c6000848c613340565b905080602001516001600160a01b03168160000151608001516001600160a01b03160361214a5760018401935061216b565b80878585038151811061215f5761215f614d57565b60200260200101819052505b50506001016120e3565b5060005b8281101561220d57600088828151811061219557612195614d57565b6020026020010151905060006121ae8c6001848c613340565b905080602001516001600160a01b03168160000151608001516001600160a01b0316036121e057600184019350612203565b80878588860103815181106121f7576121f7614d57565b60200260200101819052505b5050600101612179565b50801561221b578084510384525b50825160000361223e5760405163d5da9a1b60e01b815260040160405180910390fd5b6122488884612cd3565b9350505094509492505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146123265761033b604080517f000000000000000000000000000000000000000000000000000000000000000060208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6123536117fb565b612369866101200135876101400135600161304c565b506123726133db565b61239a612383610200880188614f16565b61238f91506001614f94565b876101e00135612ee8565b6000807f00000000000000000000000000000000000000000000000000000000000000009050806080528560a0526060602460c037604060646101203760e06080206101605261026435602081026102a0016001610264350181526020810190508781526080602460208301376101608760a0528660c052600060e05261020435925060005b8381101561246b578060400261028401602081610100376040816101203760208301925060e0608020835260a084019350898452886020850152604081606086013750600101612420565b60206001850102610160206060526102643593505b838110156124b1578060400261028401915060a0830192508883528760208401526040826060850137600101612480565b505050505060007f00000000000000000000000000000000000000000000000000000000000000009050806080528260a052606060c460c03760206101046101203760c0608020600052602060002060e052602061026435026102000160018152836020820152606060c4604083013750506084356001600160a01b0381166000908152600160205260408120547f000000000000000000000000000000000000000000000000000000000000000060808190529091506040608460a03760605161010052886101205260a061014461014037816101e0526101806080209350505050602061026435026101800181815233602082015260806040820152610120606082015260a061026435026101e00160a4356084357f9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f318385a35050600060605261262681886101600135888a6060016020810190612611919061401c565b61262160a08d0160808e0161401c565b61341c565b6126828161263a60808a0160608b0161401c565b6126486102208b018b614db0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061346c92505050565b50505050505050565b80156126e75760006040519050632671a55160e11b815260206004820152600160248201528760448201528660648201528560848201528460a48201528360c48201528260e48201526126e1828261010461350e565b50612682565b60028760058111156126fb576126fb614677565b0361273257816001146127215760405163efcc00b160e01b815260040160405180910390fd5b61272d868686866135fe565b612682565b61268286868686866136bf565b348160005b818110156127b2573685858381811061275f5761275f614d57565b6040029190910191505080358481111561278c57604051631a783b8d60e01b815260040160405180910390fd5b6127a561279f604084016020850161401c565b826132ec565b9093039250600101612744565b50818611156127d457604051631a783b8d60e01b815260040160405180910390fd5b6127de85876132ec565b858211156127f2576127f2338784036132ec565b6127fc6001600055565b505050505050565b61280e81836137a3565b8161284057826001146128345760405163efcc00b160e01b815260040160405180910390fd5b61272d878787876135fe565b612682828260028a8a8a8a8a6137c2565b602082026101e403358360005b818110156128bf573687878381811061287957612879614d57565b604002919091019150508035861561289857612895818b614fac565b99505b6128b58b8e6128ad604086016020870161401c565b84898b613842565b505060010161285e565b506128ce888b8b8a8688613842565b6120086001600055565b6128e18361387d565b6128eb81836137a3565b816128fd5761272d87878787876136bf565b612682828260038a8a8a8a8a6137c2565b805160401461291a5750565b6000612927826020015190565b9050612933818361389e565b5050565b6000828403612947575080610528565b6000838584091590508061296e5760405163c63cf08960e01b815260040160405180910390fd5b600061297a8685614f75565b9490940495945050505050565b60008587146129d7576000821561299f575060001983015b6000816129ac888a614f75565b6129b6888c614f75565b6129c09190614f94565b6129ca9190614f94565b8590049250610377915050565b509395945050505050565b6129ea613ed7565b8315806129f5575081155b15612a1357604051634c74edb760e11b815260040160405180910390fd5b612a1b613ed7565b612a78878585808060200260200160405190810160405280939291908181526020016000905b82821015612a6d57612a5e60408302860136819003810190615097565b81526020019060010190612a41565b5050505050836138c2565b805160408051602080890282018101909252878152612ad7918a91908a908a90819060009085015b82821015612acc57612abd60408302860136819003810190615097565b81526020019060010190612aa0565b505050505085613a6e565b80516005811115612aea57612aea614677565b8351516005811115612afe57612afe614677565b141580612b29575080602001516001600160a01b03168360000151602001516001600160a01b031614155b80612b405750806040015183600001516040015114155b15612b5e576040516309cfb45560e01b815260040160405180910390fd5b82600001516060015181606001511115612c1557600085856000818110612b8757612b87614d57565b905060400201803603810190612b9d9190615097565b90508360000151606001518260600151612bb79190614fac565b89826000015181518110612bcd57612bcd614d57565b60200260200101516000015160600151826020015181518110612bf257612bf2614d57565b602090810291909101015160609081019190915284518101519083015250612ca7565b600087876000818110612c2a57612c2a614d57565b905060400201803603810190612c409190615097565b90508160600151846000015160600151612c5a9190614fac565b89826000015181518110612c7057612c70614d57565b60200260200101516000015160400151826020015181518110612c9557612c95614d57565b60200260200101516060018181525050505b60608082015184519091015260809081015183516001600160a01b039091169101525095945050505050565b8151606090806001600160401b03811115612cf057612cf0614052565b604051908082528060200260200182016040528015612d19578160200160208202803683370190505b50915060005b81811015612dff576000858281518110612d3b57612d3b614d57565b6020026020010151905080602001516001600160781b0316600003612d605750612df7565b6001848381518110612d7457612d74614d57565b9115156020928302919091019091015280516060015160005b8151811015612df3576000828281518110612daa57612daa614d57565b602002602001015160600151905080600014612dea576040516314bea84160e31b8152600481018690526024810183905260448101829052606401610de3565b50600101612d8d565b5050505b600101612d1f565b5060408051602080825281830190925234916000919060208201818036833701905050905060005b8551811015612ebb576000868281518110612e4457612e44614d57565b60209081029190910101518051909150600081516005811115612e6957612e69614677565b03612e9d578481606001511115612e9357604051631a783b8d60e01b815260040160405180910390fd5b8060600151850394505b612eb18183602001518460400151876131e3565b5050600101612e27565b50612ec58161290e565b8115612ed557612ed533836132ec565b612edf6001600055565b50505092915050565b8082101561293357604051632335530b60e11b815260040160405180910390fd5b60008060008351604003612f3a57505050602081015160408201516001600160ff1b0381169060ff1c601b01612fa0565b8351604103612f955750505060208101516040820151606083015160001a601b8114801590612f6d57508060ff16601c14155b15612f9057604051630f801e8560e11b815260ff82166004820152602401610de3565b612fa0565b6127fc868686613bf8565b6040805160008082526020820180845288905260ff841692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015612ff4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661302857604051638baa579f60e01b815260040160405180910390fd5b866001600160a01b0316816001600160a01b03161461268257612682878787613bf8565b60004284118061305c5750428311155b15613088578115613080576040516337bf561360e11b815260040160405180910390fd5b506000610528565b5060019392505050565b60018360038111156130a6576130a6614677565b1180156130bc5750336001600160a01b03821614155b80156130d15750336001600160a01b03831614155b15611558576080880151511580156130e857508651155b156130fe576130f981868487613c6f565b611558565b600061315c82633313157060e01b88338d8c8e60405160240161312595949392919061526b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613cbb565b90506131688187613cd0565b505050505050505050565b60008360208301602084510281015b808210156131bf57815180841180156131a25781600052846020526131ab565b84600052816020525b505060406000209250602082019150613182565b505083149050806117f5576040516309bde33960e01b815260040160405180910390fd5b6000845160058111156131f8576131f8614677565b036132145761320f846080015185606001516132ec565b6117f5565b60018451600581111561322957613229614677565b036132485761320f846020015184866080015187606001518686613842565b60028451600581111561325d5761325d614677565b036132815761320f8460200151848660800151876040015188606001518787612804565b6117f584602001518486608001518760400151886060015187876128d8565b60008789036132bb576132b487878a612937565b90506132e0565b6132dd6132c988888c612937565b6132d489898c612937565b87878787612987565b90505b98975050505050505050565b6132f58161387d565b600080600080600085875af190508061333b57613310613d2a565b60405163470c7c1d60e01b81526001600160a01b038416600482015260248101839052604401610de3565b505050565b613348613ed7565b825160000361336c578360405163375c24c160e01b8152600401610de391906153f1565b600084600181111561338057613380614677565b0361339557613390858483613a6e565b6133ae565b6133a08584836138c2565b336020820152604081018290525b8051606001516000036105a557602081015181516001600160a01b03909116608090910152949350505050565b610244356102606102643560400201146004356020146102243561024014161680613419576040516339f3e3fd60e01b815260040160405180910390fd5b50565b600183600381111561343057613430614677565b1180156134465750336001600160a01b03821614155b801561345b5750336001600160a01b03831614155b15611e0957611e0981868487613c6f565b6000838152600260209081526040918290208251608081018452905460ff808216151583526101008204161515928201929092526001600160781b03620100008304811693820193909352600160881b90910490911660608201526134d484826001806116ed565b5080516134e6576134e68385846117a6565b5050506000908152600260205260409020710100000000000000000000000000000100019055565b6040805160ff60a01b7f000000000000000000000000000000000000000000000000000000000000000017600090815260208681527f000000000000000000000000000000000000000000000000000000000000000084526055600b20929093528080526001600160a01b039091169181848682865af19050806135b857613594613d2a565b60405163344f54f560e21b81526001600160a01b0383166004820152602401610de3565b6000516001600160e01b03198116632671a55160e11b146127fc57604051630e7ccd9360e11b8152600481018790526001600160a01b0384166024820152604401610de3565b833b61361957632f8aeb3960e11b6000528360045260246000fd5b6040516323b872dd60e01b6000528360045282602452816044526000806064600080895af1806136b0573d1561368a5760203d0460208304816003028183111561367157818303600302610200838002858002030401015b5a602082011015613686573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b6136da57632f8aeb3960e11b6000528460045260246000fd5b60405160805160a05160c051637921219560e11b6000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af180613787573d156137625760203d0460208604816003028183111561374957818303600302610200838002858002030401015b5a60208201101561375e573d6000803e3d6000fd5b5050505b63f486bc8760e01b600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b60006137b0836020015190565b905081811461333b5761333b8361290e565b600060208851036137fd5750604080885260208089018a9052632671a55160e11b91890191909152604488015260016064880181905261380c565b50606487018051600101908190525b603c60c082028901038781528660208201528560408201528460608201528360808201528260a082015250505050505050505050565b61384b8361387d565b61385581836137a3565b8161386b5761386686868686613d6f565b6127fc565b6127fc8282600189898960008a6137c2565b806000036134195760405163246cf94560e21b815260040160405180910390fd5b6064810151604082019060c0026044016138b984838361350e565b50506020905250565b6138ee565b637fda727960e01b60005260206000fd5b634e487b7160e01b600052601160045260246000fd5b6020820180515184518110613905576139056138c7565b602081026020860101516060815101516020845101518151811061392b5761392b6138c7565b60208102602083010151600080602086015115613952575050606081018051600090915280155b885183518152602084015160208201526040840151604082015260a084015160808201526060812060208c51028c015b808b1015613a295760208b019a508a515199508d518a106139a5576139a56138c7565b60208a0260208f010151985060208901511561398257606089510151975060208b5101519650875187106139db576139db6138c7565b602087026020890101519550606086018051860181511587821060011b1786179550809650506000815250606086208214608084015160a08801511416613a2457613a246138c7565b613982565b50506060018290528060018114613a475760028114613a5857613a60565b63246cf94560e21b60005260206000fd5b613a606138d8565b505050505050505050505050565b6020820180515184518110613a8557613a856138c7565b602081026020860101518051604081015160208551015181518110613aac57613aac6138c7565b60208102602083010151600080602087015115613ad3575050606081018051600090915280155b8951336080820152835181526020840151602082015260408401516040820152865160208c015261012087015160408c015260608120905060208c51028c015b808b1015613bc75760208b019a508a515199508d518a10613b3657613b366138c7565b60208a0260208f0101519850602089015115613b1357885197506040880151965060208b510151955086518610613b6f57613b6f6138c7565b602086026020880101519450606085018051850181511586821060011b178517945080955050600081525060608520821460408d01516101208a01511460208e01518a51141616613bc257613bc26138c7565b613b13565b50508160608b5101528060018114613a475760028103613be957613be96138d8565b50505050505050505050505050565b6000613c1984631626ba7e60e01b85856040516024016131259291906153ff565b905080613c4157613c28613d2a565b604051634f7fb80d60e01b815260040160405180910390fd5b613c51630b135d3f60e11b613e75565b156117f557604051632057875960e21b815260040160405180910390fd5b604051602481018490523360448201526001600160a01b038316606482015260848101829052600090613caf9086906303874c7760e21b9060a401613125565b9050611e098185613cd0565b6000806000835160208501865afa9392505050565b81613cf957613cdd613d2a565b604051633ed4053f60e21b815260048101829052602401610de3565b613d096303874c7760e21b613e75565b1561293357604051633ed4053f60e21b815260048101829052602401610de3565b3d156116b05760203d046020604051048160030281831115613d5a57818303600302610200838002858002030401015b5a60208201101561333b573d6000803e3d6000fd5b6040516323b872dd60e01b600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d15158116613e655780873b151516613e655780613e505781613e2f573d15613e095760203d04602084048160030281831115613df057818303600302610200838002858002030401015b5a602082011015613e05573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005286600452856024528460445260006064528360845260a46000fd5b639889192360e01b6000528660045285602452846044528360645260846000fd5b632f8aeb3960e11b6000528660045260246000fd5b5050604052505060006060525050565b60008060203d03613e8b5760206000803e506000515b6001600160e01b031990811692169190911415919050565b6040518060a00160405280613eb6613f1a565b81526000602082018190526040820152606080820181905260809091015290565b60408051610100810182526000606082018181526080830182905260a0830182905260c0830182905260e083018290528252602082018190529181019190915290565b60405180610160016040528060006001600160a01b0316815260200160006001600160a01b03168152602001606081526020016060815260200160006003811115613f6757613f67614677565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c09091015290565b6000815180845260005b81811015613fbd57602081850181015186830182015201613fa1565b81811115613fcf576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006105286020830184613f97565b6001600160a01b038116811461341957600080fd5b803561401781613ff7565b919050565b60006020828403121561402e57600080fd5b813561052881613ff7565b60006020828403121561404b57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b038111828210171561408a5761408a614052565b60405290565b60405161016081016001600160401b038111828210171561408a5761408a614052565b604051601f8201601f191681016001600160401b03811182821017156140db576140db614052565b604052919050565b60006001600160401b038211156140fc576140fc614052565b5060051b60200190565b80356006811061401757600080fd5b600060a0828403121561412757600080fd5b61412f614068565b905061413a82614106565b8152602082013561414a81613ff7565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b600082601f83011261418657600080fd5b8135602061419b614196836140e3565b6140b3565b82815260a092830285018201928282019190878511156141ba57600080fd5b8387015b858110156141dd576141d08982614115565b84529284019281016141be565b5090979650505050505050565b600060c082840312156141fc57600080fd5b60405160c081018181106001600160401b038211171561421e5761421e614052565b60405290508061422d83614106565b8152602083013561423d81613ff7565b8060208301525060408301356040820152606083013560608201526080830135608082015260a083013561427081613ff7565b60a0919091015292915050565b600082601f83011261428e57600080fd5b8135602061429e614196836140e3565b82815260c092830285018201928282019190878511156142bd57600080fd5b8387015b858110156141dd576142d389826141ea565b84529284019281016142c1565b80356004811061401757600080fd5b6000610160828403121561430257600080fd5b61430a614090565b90506143158261400c565b81526143236020830161400c565b602082015260408201356001600160401b038082111561434257600080fd5b61434e85838601614175565b6040840152606084013591508082111561436757600080fd5b506143748482850161427d565b606083015250614386608083016142e0565b608082015260a082013560a082015260c082013560c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525092915050565b80356001600160781b038116811461401757600080fd5b600082601f8301126143fb57600080fd5b81356001600160401b0381111561441457614414614052565b614427601f8201601f19166020016140b3565b81815284602083860101111561443c57600080fd5b816020850160208301376000918101602001919091529392505050565b600060a0828403121561446b57600080fd5b614473614068565b905081356001600160401b038082111561448c57600080fd5b614498858386016142ef565b83526144a6602085016143d3565b60208401526144b7604085016143d3565b604084015260608401359150808211156144d057600080fd5b6144dc858386016143ea565b606084015260808401359150808211156144f557600080fd5b50614502848285016143ea565b60808301525092915050565b600082601f83011261451f57600080fd5b8135602061452f614196836140e3565b82815260059290921b8401810191818101908684111561454e57600080fd5b8286015b8481101561458d5780356001600160401b038111156145715760008081fd5b61457f8986838b0101614459565b845250918301918301614552565b509695505050505050565b60008083601f8401126145aa57600080fd5b5081356001600160401b038111156145c157600080fd5b6020830191508360208260051b85010111156145dc57600080fd5b9250929050565b6000806000806000606086880312156145fb57600080fd5b85356001600160401b038082111561461257600080fd5b61461e89838a0161450e565b9650602088013591508082111561463457600080fd5b61464089838a01614598565b9096509450604088013591508082111561465957600080fd5b5061466688828901614598565b969995985093965092949392505050565b634e487b7160e01b600052602160045260246000fd5b6006811061469d5761469d614677565b9052565b6146ac82825161468d565b6020818101516001600160a01b0390811691840191909152604080830151908401526060808301519084015260809182015116910152565b600081518084526020808501945080840160005b8381101561473a57815161470d8882516146a1565b808401516001600160a01b031660a08901526040015160c088015260e090960195908201906001016146f8565b509495945050505050565b60208152600061052860208301846146e4565b60006020828403121561476a57600080fd5b81356001600160401b0381111561478057600080fd5b8201610160818503121561052857600080fd5b600080602083850312156147a657600080fd5b82356001600160401b038111156147bc57600080fd5b6147c885828601614598565b90969095509350505050565b600080600080604085870312156147ea57600080fd5b84356001600160401b038082111561480157600080fd5b61480d88838901614598565b9096509450602087013591508082111561482657600080fd5b5061483387828801614598565b95989497509550505050565b6000806040838503121561485257600080fd5b82356001600160401b0381111561486857600080fd5b83016040818603121561487a57600080fd5b946020939093013593505050565b6000806000806060858703121561489e57600080fd5b84356001600160401b03808211156148b557600080fd5b9086019060a082890312156148c957600080fd5b909450602086013590808211156148df57600080fd5b506148ec87828801614598565b9598909750949560400135949350505050565b60008060008060008060008060a0898b03121561491b57600080fd5b88356001600160401b038082111561493257600080fd5b61493e8c838d01614598565b909a50985060208b013591508082111561495757600080fd5b6149638c838d01614598565b909850965060408b013591508082111561497c57600080fd5b506149898b828c01614598565b999c989b509699959896976060870135966080013595509350505050565b604080825283519082018190526000906020906060840190828701845b828110156149e25781511515845292840192908401906001016149c4565b5050508381038285015261037781866146e4565b606081526000614a096060830186613f97565b6020830194909452506001600160a01b0391909116604090910152919050565b600060208284031215614a3b57600080fd5b81356001600160401b03811115614a5157600080fd5b8201610240818503121561052857600080fd5b600080600080600080600080600060c08a8c031215614a8257600080fd5b89356001600160401b0380821115614a9957600080fd5b614aa58d838e0161450e565b9a5060208c0135915080821115614abb57600080fd5b614ac78d838e01614598565b909a50985060408c0135915080821115614ae057600080fd5b614aec8d838e01614598565b909850965060608c0135915080821115614b0557600080fd5b50614b128c828d01614598565b9a9d999c50979a96999598959660808101359660a09091013595509350505050565b6000614b42614196846140e3565b83815260208082019190600586811b860136811115614b6057600080fd5b865b81811015614c5b5780356001600160401b0380821115614b825760008081fd5b818a01915060a08236031215614b985760008081fd5b614ba0614068565b823581528683013560028110614bb65760008081fd5b81880152604083810135908201526060808401359082015260808084013583811115614be25760008081fd5b939093019236601f850112614bf957600092508283fd5b83359250614c09614196846140e3565b83815292871b84018801928881019036851115614c265760008081fd5b948901945b84861015614c4457853582529489019490890190614c2b565b918301919091525088525050948301948301614b62565b5092979650505050505050565b6000808335601e19843603018112614c7f57600080fd5b8301803591506001600160401b03821115614c9957600080fd5b602001915060a0810236038213156145dc57600080fd5b600060a08284031215614cc257600080fd5b6105288383614115565b6000808335601e19843603018112614ce357600080fd5b8301803591506001600160401b03821115614cfd57600080fd5b602001915060c0810236038213156145dc57600080fd5b600060c08284031215614d2657600080fd5b61052883836141ea565b600060208284031215614d4257600080fd5b610528826142e0565b600061035a3683614459565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112614d8357600080fd5b9190910192915050565b6000823561015e19833603018112614d8357600080fd5b600061035a36836142ef565b6000808335601e19843603018112614dc757600080fd5b8301803591506001600160401b03821115614de157600080fd5b6020019150368190038213156145dc57600080fd5b600060408284031215614e0857600080fd5b604051604081018181106001600160401b0382111715614e2a57614e2a614052565b604052823581526020928301359281019290925250919050565b6000614e52614196846140e3565b80848252602080830192508560051b850136811115614e7057600080fd5b855b81811015614f0a5780356001600160401b03811115614e915760008081fd5b870136601f820112614ea35760008081fd5b8035614eb1614196826140e3565b81815260069190911b82018501908581019036831115614ed15760008081fd5b928601925b82841015614efa57614ee83685614df6565b82528682019150604084019350614ed6565b8852505050938201938201614e72565b50919695505050505050565b6000808335601e19843603018112614f2d57600080fd5b8301803591506001600160401b03821115614f4757600080fd5b6020019150600681901b36038213156145dc57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615614f8f57614f8f614f5f565b500290565b60008219821115614fa757614fa7614f5f565b500190565b600082821015614fbe57614fbe614f5f565b500390565b600081518084526020808501945080840160005b8381101561473a57614fea8783516146a1565b60a0969096019590820190600101614fd7565b60006080808301878452602060018060a01b03808916828701526040848188015283895180865260a089019150848b01955060005b8181101561507357865161504784825161468d565b808701518616848801528481015185850152606090810151908401529585019591870191600101615032565b50508781036060890152615087818a614fc3565b9c9b505050505050505050505050565b6000604082840312156150a957600080fd5b6105288383614df6565b600081518084526020808501945080840160005b8381101561473a5781516150dc88825161468d565b838101516001600160a01b03168885015260408082015190890152606080820151908901526080908101519088015260a090960195908201906001016150c7565b600081518084526020808501945080840160005b8381101561473a57815161514688825161468d565b808401516001600160a01b0390811689860152604080830151908a0152606080830151908a0152608080830151908a015260a091820151169088015260c09096019590820190600101615131565b6004811061469d5761469d614677565b600081518084526020808501945080840160005b8381101561473a578151875295820195908201906001016151b8565b6002811061469d5761469d614677565b600082825180855260208086019550808260051b84010181860160005b848110156141dd57601f19868403018952815160a0815185528582015161522a878701826151d4565b506040828101519086015260608083015190860152608091820151918501819052615257818601836151a4565b9a86019a9450505090830190600101615201565b85815260018060a01b038516602082015260a060408201526000610140855160a0808501526152a582850182516001600160a01b03169052565b60208101516101606152c1818701836001600160a01b03169052565b6040830151915080610180870152506152de6102a08601826150b3565b9050606082015161013f19868303016101a08701526152fd828261511d565b91505060808201516153136101c0870182615194565b5060a08201516101e086015260c082015161020086015260e082015161022086015261010080830151610240870152610120808401516102608801528484015161028088015260208a0151945061537560c08801866001600160781b03169052565b60408a01516001600160781b031660e088015260608a0151878403609f19908101848a015290955093506153a98386613f97565b945060808a0151925083878603018188015250506153c78382613f97565b9250505082810360608401526153dd81866151a4565b905082810360808401526132e081856151e4565b6020810161035a82846151d4565b8281526040602082015260006105a56040830184613f9756fea2646970667358221220d35ae0e3881291d6ab21b7cf6cc4e94d03bc3bb9282e55f663fd3f903f16e38064736f6c634300080d0033",
              "opcodes": "PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x5B6E CODESIZE SUB DUP1 PUSH3 0x5B6E DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x5C6 JUMP JUMPDEST DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH3 0x48 PUSH3 0x130 JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH2 0x100 MSTORE PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x160 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x180 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xEF 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 PUSH3 0x115 SWAP2 SWAP1 PUSH3 0x5F8 JUMP JUMPDEST POP PUSH2 0x1A0 MSTORE POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP PUSH3 0x688 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH3 0x162 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP8 POP PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP7 POP PUSH1 0x0 SWAP2 PUSH3 0x265 SWAP2 ADD PUSH10 0x9ECCCCCAE492E8CADA5 PUSH1 0xB3 SHL DUP2 MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0xA DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x19 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x27 DUP3 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D PUSH1 0x7A SHL PUSH1 0x58 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x69 DUP3 ADD MSTORE PUSH1 0x6A ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE PUSH18 0x86DEDCE6D2C8CAE4C2E8D2DEDC92E8CADA5 PUSH1 0x73 SHL PUSH1 0x20 DUP5 ADD MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0x32 DUP5 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x41 DUP5 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x4F DUP5 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x6C DUP5 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D0B PUSH1 0x72 SHL PUSH1 0x80 DUP5 ADD MSTORE PUSH17 0x1859191C995CDCC81C9958DA5C1A595B9D PUSH1 0x7A SHL PUSH1 0x92 DUP5 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0xA3 DUP5 ADD DUP2 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB PUSH1 0x84 ADD DUP2 MSTORE PUSH1 0xA4 DUP6 ADD SWAP1 SWAP4 MSTORE PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL PUSH1 0xC4 DUP6 ADD MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0xD4 DUP6 ADD MSTORE PUSH13 0x1859191C995CDCC81E9BDB994B PUSH1 0x9A SHL PUSH1 0xE4 DUP6 ADD MSTORE PUSH18 0x13D999995C925D195B56D7481BD999995C8B PUSH1 0x72 SHL PUSH1 0xF1 DUP6 ADD MSTORE PUSH32 0x436F6E73696465726174696F6E4974656D5B5D20636F6E73696465726174696F PUSH2 0x103 DUP6 ADD MSTORE PUSH2 0x1B8B PUSH1 0xF2 SHL PUSH2 0x123 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0E081BDC99195C951E5C194B PUSH1 0x82 SHL PUSH2 0x125 DUP6 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH2 0x135 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH2 0x147 DUP6 ADD MSTORE PUSH17 0x189E5D195CCCCC881E9BDB9952185CDA0B PUSH1 0x7A SHL PUSH2 0x157 DUP6 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x168 DUP6 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x175 DUP6 ADD MSTORE PUSH13 0x75696E74323536206E6F6E6365 PUSH1 0x98 SHL PUSH2 0x188 DUP6 ADD MSTORE PUSH2 0x195 DUP5 ADD MSTORE SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x196 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 DUP6 MLOAD DUP7 DUP4 ADD KECCAK256 DUP6 MLOAD DUP7 DUP5 ADD KECCAK256 SWAP2 SWAP11 POP SWAP9 POP SWAP7 POP PUSH3 0x5A3 SWAP2 DUP4 SWAP2 DUP6 SWAP2 DUP8 SWAP2 ADD PUSH3 0x65B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP POP POP POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x5F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x60C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x640 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH3 0x624 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0x650 JUMPI PUSH1 0x0 DUP3 DUP7 ADD MSTORE JUMPDEST POP SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x67F PUSH3 0x678 PUSH3 0x671 DUP5 DUP9 PUSH3 0x61D JUMP JUMPDEST DUP7 PUSH3 0x61D JUMP JUMPDEST DUP5 PUSH3 0x61D JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH2 0x544E PUSH3 0x720 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x3545 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0xD72 ADD MSTORE PUSH2 0x3519 ADD MSTORE PUSH1 0x0 PUSH2 0x2329 ADD MSTORE PUSH1 0x0 PUSH2 0x2259 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x8A9 ADD MSTORE PUSH2 0x2541 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x838 ADD MSTORE PUSH2 0x239F ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x7D1 ADD MSTORE PUSH2 0x24BA ADD MSTORE PUSH1 0x0 PUSH2 0x2287 ADD MSTORE PUSH1 0x0 PUSH2 0x22D5 ADD MSTORE PUSH1 0x0 PUSH2 0x22AD ADD MSTORE PUSH2 0x544E PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA8174404 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xF47B7740 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xF47B7740 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xFB0F3EE1 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0xFB4C2AF9 EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0xFD9F1E10 EQ PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA8174404 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xB3A34C4C EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0xDF7B0DAC EQ PUSH2 0x293 JUMPI DUP1 PUSH4 0xED98A574 EQ PUSH2 0x2A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x55944A42 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x55944A42 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x627CDCB9 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x79DF72BD EQ PUSH2 0x21D JUMPI DUP1 PUSH4 0x88147732 EQ PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x2D0335AB EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x46423AA7 EQ PUSH2 0x146 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x331 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x3FE4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x401C JUMP JUMPDEST PUSH2 0x340 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x161 CALLDATASIZE PUSH1 0x4 PUSH2 0x4039 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x80 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP1 DUP5 MSTORE PUSH2 0x100 DUP4 DIV SWAP1 SWAP2 AND ISZERO ISZERO SWAP4 DUP4 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB PUSH3 0x10000 DUP4 DIV DUP2 AND SWAP6 DUP5 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x88 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND PUSH1 0x60 SWAP1 SWAP3 ADD DUP3 SWAP1 MSTORE SWAP4 SWAP2 SWAP3 SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 ISZERO ISZERO DUP6 MSTORE SWAP3 ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE SWAP2 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x1FB PUSH2 0x1F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x45E3 JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x4745 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x381 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x238 CALLDATASIZE PUSH1 0x4 PUSH2 0x4758 JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x249 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x258 CALLDATASIZE PUSH1 0x4 PUSH2 0x4793 JUMP JUMPDEST PUSH2 0x51C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x1FB PUSH2 0x27B CALLDATASIZE PUSH1 0x4 PUSH2 0x47D4 JUMP JUMPDEST PUSH2 0x52F JUMP JUMPDEST PUSH2 0x25D PUSH2 0x28E CALLDATASIZE PUSH1 0x4 PUSH2 0x483F JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST PUSH2 0x25D PUSH2 0x2A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4888 JUMP JUMPDEST PUSH2 0x61E JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x2B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x48FF JUMP JUMPDEST PUSH2 0x63C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP3 SWAP2 SWAP1 PUSH2 0x49A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DC PUSH2 0x6C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x49F6 JUMP JUMPDEST PUSH2 0x25D PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A29 JUMP JUMPDEST PUSH2 0x6DD JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x30C CALLDATASIZE PUSH1 0x4 PUSH2 0x4A64 JUMP JUMPDEST PUSH2 0x6E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x32C CALLDATASIZE PUSH1 0x4 PUSH2 0x4793 JUMP JUMPDEST PUSH2 0x716 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x33B PUSH2 0x722 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x377 DUP7 PUSH2 0x370 DUP7 DUP9 PUSH2 0x4B34 JUMP JUMPDEST DUP6 DUP6 PUSH2 0x741 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33B PUSH2 0x75C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x160 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x35A SWAP1 DUP1 PUSH2 0x3AC PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x401C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3CD SWAP2 SWAP1 PUSH2 0x401C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3E8 PUSH1 0x40 DUP7 ADD DUP7 PUSH2 0x4C68 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x434 JUMPI PUSH2 0x425 PUSH1 0xA0 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x4CB0 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x408 JUMP JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x20 ADD PUSH2 0x44C PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0x4CCC JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x498 JUMPI PUSH2 0x489 PUSH1 0xC0 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x4D14 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x46C JUMP JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x20 ADD PUSH2 0x4B3 PUSH1 0xA0 DUP7 ADD PUSH1 0x80 DUP8 ADD PUSH2 0x4D30 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4C4 JUMPI PUSH2 0x4C4 PUSH2 0x4677 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xA0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xC0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xE0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x100 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x120 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP1 PUSH1 0x60 ADD SWAP1 PUSH2 0x50D SWAP2 SWAP1 PUSH2 0x4CCC JUMP JUMPDEST SWAP1 SWAP2 MSTORE POP PUSH2 0x140 DUP5 ADD CALLDATALOAD PUSH2 0x7B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 DUP4 DUP4 PUSH2 0x8FF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5A2 PUSH2 0x53E DUP7 DUP7 PUSH2 0xABB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH2 0x59A JUMP JUMPDEST PUSH2 0x587 PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x554 JUMPI SWAP1 POP JUMPDEST POP DUP6 DUP6 PUSH2 0x741 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 PUSH2 0x5BB DUP5 PUSH2 0xB76 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH2 0x617 JUMP JUMPDEST PUSH2 0x604 PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x5D1 JUMPI SWAP1 POP JUMPDEST POP DUP5 PUSH2 0xC21 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A2 PUSH2 0x62C DUP7 PUSH2 0x4D4B JUMP JUMPDEST PUSH2 0x636 DUP6 DUP8 PUSH2 0x4B34 JUMP JUMPDEST DUP5 PUSH2 0xC21 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x6B4 PUSH2 0x64C DUP12 DUP12 PUSH2 0xABB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH2 0x6A8 JUMP JUMPDEST PUSH2 0x695 PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x662 JUMPI SWAP1 POP JUMPDEST POP DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xD12 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x6D2 PUSH2 0xD51 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35A DUP3 PUSH2 0xDB0 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x704 DUP12 PUSH2 0x6F9 DUP12 DUP14 PUSH2 0x4B34 JUMP JUMPDEST DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xD12 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 DUP4 DUP4 PUSH2 0x104A JUMP JUMPDEST PUSH1 0x60 PUSH1 0x20 PUSH1 0x0 MSTORE PUSH14 0xD436F6E73696465726174696F6E PUSH1 0x2D MSTORE PUSH1 0x60 PUSH1 0x0 RETURN JUMPDEST PUSH1 0x60 PUSH2 0x751 DUP6 DUP6 PUSH1 0x1 DUP9 MLOAD PUSH2 0x124B JUMP JUMPDEST PUSH2 0x5A2 DUP6 DUP5 DUP5 PUSH2 0x1562 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x766 PUSH2 0x168D JUMP JUMPDEST POP CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP2 DUP3 SWAP1 SSTORE SWAP2 MLOAD DUP2 DUP2 MSTORE SWAP1 SWAP3 SWAP2 PUSH32 0x7AB0FC7DE8910A6100B24DF423C3D0835534506DCA9473D30C3E7DF51241B2CF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 SWAP1 JUMP JUMPDEST PUSH2 0x140 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP1 DUP5 ADD MLOAD DUP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 PUSH32 0x0 SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x826 JUMPI DUP3 MLOAD PUSH1 0x1F NOT ADD DUP1 MLOAD DUP7 DUP3 MSTORE PUSH1 0xC0 DUP3 KECCAK256 DUP7 MSTORE SWAP1 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x7F9 JUMP JUMPDEST POP PUSH1 0x20 DUP2 MUL PUSH1 0x40 MLOAD KECCAK256 SWAP5 POP POP POP POP PUSH1 0x0 PUSH32 0x0 SWAP2 POP PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x60 DUP10 ADD MLOAD ADD PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x894 JUMPI DUP2 MLOAD PUSH1 0x1F NOT ADD DUP1 MLOAD DUP7 DUP3 MSTORE PUSH1 0xE0 DUP3 KECCAK256 DUP6 MSTORE SWAP1 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x867 JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP8 MUL SWAP1 KECCAK256 PUSH1 0x1F NOT DUP11 ADD DUP1 MLOAD PUSH32 0x0 DUP3 MSTORE SWAP3 DUP12 ADD DUP1 MLOAD SWAP8 DUP2 MSTORE PUSH1 0x60 DUP13 ADD DUP1 MLOAD SWAP4 DUP2 MSTORE PUSH2 0x140 SWAP1 SWAP13 ADD SWAP11 DUP12 MSTORE PUSH2 0x180 DUP3 KECCAK256 SWAP4 SWAP1 SWAP2 MSTORE SWAP6 SWAP1 SWAP6 MSTORE SWAP4 SWAP1 SWAP8 MSTORE POP POP SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x909 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xAAE JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x92A JUMPI PUSH2 0x92A PUSH2 0x4D57 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x93C SWAP2 SWAP1 PUSH2 0x4D6D JUMP JUMPDEST SWAP1 POP CALLDATASIZE PUSH2 0x949 DUP3 DUP1 PUSH2 0x4D8D JUMP JUMPDEST SWAP1 POP PUSH2 0x958 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x401C JUMP JUMPDEST SWAP5 POP PUSH2 0x96B PUSH2 0x966 DUP3 PUSH2 0x4DA4 JUMP JUMPDEST PUSH2 0x16B2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x80 DUP2 ADD DUP4 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB PUSH3 0x10000 DUP5 DIV DUP2 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x88 SHL SWAP1 SWAP3 DIV AND PUSH1 0x60 DUP3 ADD MSTORE SWAP2 SWAP8 POP PUSH2 0x9D5 SWAP1 DUP9 SWAP1 DUP4 SWAP1 PUSH1 0x1 PUSH2 0x16ED JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0xAA0 JUMPI PUSH2 0xA28 DUP7 DUP9 PUSH2 0x9EE PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x4DB0 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 0x17A6 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0xA53 SWAP2 DUP5 ADD SWAP1 DUP5 ADD PUSH2 0x401C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFDE361574A066B44B3B5FE98A87108B7565E327327954C4FAEEA56A4E6491A0A DUP10 PUSH1 0x40 MLOAD PUSH2 0xA97 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP POP POP POP PUSH2 0x90F JUMP JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xAD6 JUMPI PUSH2 0xAD6 PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xB0F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xAFC PUSH2 0x3EA3 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xAF4 JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB6E JUMPI PUSH2 0xB49 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xB32 JUMPI PUSH2 0xB32 PUSH2 0x4D57 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xB44 SWAP2 SWAP1 PUSH2 0x4D6D JUMP JUMPDEST PUSH2 0xB76 JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB5B JUMPI PUSH2 0xB5B PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xB15 JUMP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xB7E PUSH2 0x3EA3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH2 0xB94 DUP5 DUP1 PUSH2 0x4D8D JUMP JUMPDEST PUSH2 0xB9D SWAP1 PUSH2 0x4DA4 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xBD2 SWAP2 SWAP1 PUSH2 0x4DB0 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 DUP3 SWAP1 MSTORE POP SWAP4 DUP6 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP1 SWAP3 MSTORE SWAP3 DUP4 MSTORE SWAP1 SWAP3 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC2B PUSH2 0x17FB JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xC3F DUP9 DUP9 PUSH1 0x1 DUP8 PUSH2 0x180A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xC67 PUSH2 0x3EA3 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xC5F JUMPI SWAP1 POP POP SWAP1 POP DUP9 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC90 JUMPI PUSH2 0xC90 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH2 0xCA5 DUP2 DUP10 PUSH2 0x1A93 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xCBA JUMPI PUSH2 0xCBA PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH2 0xCDA DUP2 DUP6 DUP6 DUP5 PUSH2 0x120 ADD MLOAD DUP13 PUSH2 0x1E10 JUMP JUMPDEST PUSH2 0xCF8 DUP6 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD CALLER DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD PUSH2 0x2014 JUMP JUMPDEST PUSH2 0xD02 PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0xD22 DUP11 DUP11 PUSH1 0x0 DUP7 PUSH2 0x124B JUMP JUMPDEST PUSH2 0xD40 DUP11 PUSH2 0xD30 DUP10 DUP12 PUSH2 0x4E44 JUMP JUMPDEST PUSH2 0xD3A DUP9 DUP11 PUSH2 0x4E44 JUMP JUMPDEST DUP8 PUSH2 0x2079 JUMP JUMPDEST SWAP1 SWAP12 SWAP1 SWAP11 POP SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0xD5E PUSH2 0x2255 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP3 POP PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP4 ADD MSTORE POP SWAP4 SWAP2 SWAP3 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH2 0x124 CALLDATALOAD SWAP1 DUP2 DIV SWAP1 PUSH1 0x3 AND PUSH1 0x1 DUP3 GT CALLVALUE ISZERO DUP2 EQ DUP1 PUSH2 0xDEC JUMPI PUSH1 0x40 MLOAD PUSH4 0xA61BE9F PUSH1 0xE4 SHL DUP2 MSTORE CALLVALUE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x3 DUP7 GT PUSH1 0xA0 DUP2 MUL PUSH1 0x24 ADD CALLDATALOAD SWAP4 POP PUSH1 0x2 DUP8 EQ PUSH1 0x2 DUP9 GT PUSH1 0x2 DUP10 SUB MUL ADD SWAP3 POP PUSH1 0x1 DUP4 ADD DUP2 MUL PUSH1 0x2 DUP7 ISZERO MUL DUP9 ADD SUB SWAP2 POP POP PUSH2 0xE2F DUP9 DUP7 DUP5 DUP8 DUP8 DUP7 PUSH2 0x234B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE41 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x401C JUMP JUMPDEST SWAP1 POP PUSH2 0x1C4 PUSH1 0x3 DUP9 GT PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x0 DUP7 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xE63 JUMPI PUSH2 0xE63 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0xEAF JUMPI PUSH2 0xE8E DUP4 PUSH2 0xE7C PUSH1 0xC0 DUP14 ADD PUSH1 0xA0 DUP15 ADD PUSH2 0x401C JUMP JUMPDEST DUP5 CALLER DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP16 PUSH1 0xE0 ADD CALLDATALOAD DUP8 PUSH2 0x268B JUMP JUMPDEST PUSH2 0xEAA PUSH1 0x40 DUP12 ADD CALLDATALOAD DUP4 PUSH2 0xEA5 PUSH2 0x200 DUP15 ADD DUP15 PUSH2 0x4F16 JUMP JUMPDEST PUSH2 0x273F JUMP JUMPDEST PUSH2 0xD02 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x2 DUP10 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xEE4 JUMPI PUSH2 0xEE4 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0xF44 JUMPI PUSH2 0xF0F PUSH2 0xEFC PUSH1 0xC0 DUP14 ADD PUSH1 0xA0 DUP15 ADD PUSH2 0x401C JUMP JUMPDEST DUP5 CALLER DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP16 PUSH1 0xE0 ADD CALLDATALOAD DUP8 DUP8 PUSH2 0x2804 JUMP JUMPDEST PUSH2 0xF3F CALLER DUP5 PUSH2 0xF21 PUSH1 0x20 DUP16 ADD DUP16 PUSH2 0x401C JUMP JUMPDEST DUP15 PUSH1 0x40 ADD CALLDATALOAD DUP16 DUP1 PUSH2 0x200 ADD SWAP1 PUSH2 0xF37 SWAP2 SWAP1 PUSH2 0x4F16 JUMP JUMPDEST PUSH1 0x0 DUP9 PUSH2 0x2851 JUMP JUMPDEST PUSH2 0x1030 JUMP JUMPDEST PUSH1 0x3 DUP10 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xF58 JUMPI PUSH2 0xF58 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0xF83 JUMPI PUSH2 0xF0F PUSH2 0xF70 PUSH1 0xC0 DUP14 ADD PUSH1 0xA0 DUP15 ADD PUSH2 0x401C JUMP JUMPDEST DUP5 CALLER DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP16 PUSH1 0xE0 ADD CALLDATALOAD DUP8 DUP8 PUSH2 0x28D8 JUMP JUMPDEST PUSH1 0x4 DUP10 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xF97 JUMPI PUSH2 0xF97 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0xFF5 JUMPI PUSH2 0xFBF PUSH2 0xFAC PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x401C JUMP JUMPDEST CALLER DUP6 DUP15 PUSH1 0x20 ADD CALLDATALOAD DUP16 PUSH1 0x40 ADD CALLDATALOAD DUP8 DUP8 PUSH2 0x2804 JUMP JUMPDEST PUSH2 0xF3F DUP4 CALLER DUP14 PUSH1 0xA0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xFD7 SWAP2 SWAP1 PUSH2 0x401C JUMP JUMPDEST DUP15 PUSH1 0xE0 ADD CALLDATALOAD DUP16 DUP1 PUSH2 0x200 ADD SWAP1 PUSH2 0xFED SWAP2 SWAP1 PUSH2 0x4F16 JUMP JUMPDEST PUSH1 0x1 DUP9 PUSH2 0x2851 JUMP JUMPDEST PUSH2 0x1018 PUSH2 0x1005 PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x401C JUMP JUMPDEST CALLER DUP6 DUP15 PUSH1 0x20 ADD CALLDATALOAD DUP16 PUSH1 0x40 ADD CALLDATALOAD DUP8 DUP8 PUSH2 0x28D8 JUMP JUMPDEST PUSH2 0x1030 DUP4 CALLER DUP14 PUSH1 0xA0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xFD7 SWAP2 SWAP1 PUSH2 0x401C JUMP JUMPDEST PUSH2 0x1039 DUP2 PUSH2 0x290E JUMP JUMPDEST POP POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1054 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xAAE JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x1075 JUMPI PUSH2 0x1075 PUSH2 0x4D57 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1087 SWAP2 SWAP1 PUSH2 0x4D8D JUMP JUMPDEST SWAP1 POP PUSH2 0x1096 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x401C JUMP JUMPDEST SWAP5 POP PUSH2 0x10A8 PUSH1 0x40 DUP3 ADD PUSH1 0x20 DUP4 ADD PUSH2 0x401C JUMP JUMPDEST SWAP4 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x10CC JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x10EA JUMPI PUSH1 0x40 MLOAD PUSH4 0x203B1CDD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11D9 PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP1 PUSH1 0x40 ADD SWAP1 PUSH2 0x1129 SWAP2 SWAP1 PUSH2 0x4C68 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x1175 JUMPI PUSH2 0x1166 PUSH1 0xA0 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x4CB0 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1149 JUMP JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x20 ADD PUSH2 0x118D PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0x4CCC JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x498 JUMPI PUSH2 0x11CA PUSH1 0xC0 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x4D14 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x11AD JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0x100 OR SWAP1 SSTORE MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP2 SWAP1 DUP9 AND SWAP1 PUSH32 0x6BACC01DBE442496068F7D234EDD811F1A5F833243E0AEC824F86AB861F3C90D SWAP1 PUSH2 0x1239 SWAP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x105A JUMP JUMPDEST PUSH2 0x1253 PUSH2 0x17FB JUMP JUMPDEST DUP4 MLOAD PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x126F JUMPI PUSH2 0x126F PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1298 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x14B7 JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x12BE JUMPI PUSH2 0x12BE PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP5 PUSH1 0x0 SUB PUSH2 0x12E3 JUMPI PUSH1 0x0 PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 DUP2 ADD DUP3 MSTORE PUSH2 0x14AF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x12F4 DUP5 DUP12 DUP12 DUP10 PUSH2 0x180A JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x1 DUP6 ADD DUP7 MSTORE DUP2 PUSH1 0x0 SUB PUSH2 0x131B JUMPI POP POP PUSH1 0x0 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x14AF JUMP JUMPDEST DUP3 DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x132E JUMPI PUSH2 0x132E PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP4 MLOAD PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD PUSH1 0x0 NOT SWAP1 SWAP11 ADD SWAP10 SWAP1 SWAP2 DUP3 SWAP1 SUB SWAP1 TIMESTAMP DUP4 SWAP1 SUB SWAP1 DUP2 DUP4 SUB SWAP1 PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x13FB JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1381 JUMPI PUSH2 0x1381 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x139C DUP11 DUP11 DUP5 PUSH1 0x80 ADD MLOAD PUSH2 0x2937 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x80 ADD MLOAD DUP3 PUSH1 0x60 ADD MLOAD SUB PUSH2 0x13B9 JUMPI PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x13CE JUMP JUMPDEST PUSH2 0x13C8 DUP11 DUP11 DUP5 PUSH1 0x60 ADD MLOAD PUSH2 0x2937 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x13E9 SWAP1 DUP3 DUP9 DUP9 DUP12 PUSH1 0x0 PUSH2 0x2987 JUMP JUMPDEST PUSH1 0x60 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH1 0x1 ADD PUSH2 0x1364 JUMP JUMPDEST POP DUP9 MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x14A3 JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1422 JUMPI PUSH2 0x1422 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x143D DUP12 DUP12 DUP5 PUSH1 0x80 ADD MLOAD PUSH2 0x2937 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x80 ADD MLOAD DUP3 PUSH1 0x60 ADD MLOAD SUB PUSH2 0x145A JUMPI PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x146F JUMP JUMPDEST PUSH2 0x1469 DUP12 DUP12 DUP5 PUSH1 0x60 ADD MLOAD PUSH2 0x2937 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x148A SWAP1 DUP3 DUP10 DUP10 DUP13 PUSH1 0x1 PUSH2 0x2987 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1405 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x12A2 JUMP JUMPDEST POP PUSH2 0x14C2 DUP7 DUP7 PUSH2 0x1A93 JUMP JUMPDEST DUP4 ISZERO CALLER MUL PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1558 JUMPI PUSH1 0x0 DUP1 SHL DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x14E7 JUMPI PUSH2 0x14E7 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB ISZERO PUSH2 0x1550 JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1509 JUMPI PUSH2 0x1509 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH2 0x154E DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x152C JUMPI PUSH2 0x152C PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD DUP7 DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD PUSH2 0x2014 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x14C9 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x157D JUMPI PUSH2 0x157D PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x15B6 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x15A3 PUSH2 0x3ED7 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x159B JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x166B JUMPI CALLDATASIZE DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x15D8 JUMPI PUSH2 0x15D8 PUSH2 0x4D57 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x15EA SWAP2 SWAP1 PUSH2 0x4D6D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x160E DUP10 PUSH2 0x15FC DUP5 DUP1 PUSH2 0x4F16 JUMP JUMPDEST PUSH2 0x1609 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x4F16 JUMP JUMPDEST PUSH2 0x29E2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1640 JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP PUSH2 0x1661 JUMP JUMPDEST DUP1 DUP7 DUP6 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x1655 JUMPI PUSH2 0x1655 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x15BD JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x1679 JUMPI DUP1 DUP4 MLOAD SUB DUP4 MSTORE JUMPDEST POP PUSH2 0x1684 DUP6 DUP4 PUSH2 0x2CD3 JUMP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x16B0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7FA8A987 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16C8 DUP3 PUSH1 0x60 ADD MLOAD MLOAD DUP4 PUSH2 0x140 ADD MLOAD PUSH2 0x2EE8 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x35A SWAP1 DUP4 SWAP1 PUSH2 0x7B9 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x1723 JUMPI DUP2 ISZERO PUSH2 0x171B JUMPI PUSH1 0x40 MLOAD PUSH4 0x694555D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDE3 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x5A5 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND ISZERO PUSH2 0x179B JUMPI DUP3 ISZERO PUSH2 0x1758 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEE9E0E63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDE3 JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND LT PUSH2 0x179B JUMPI DUP2 ISZERO PUSH2 0x171B JUMPI PUSH1 0x40 MLOAD PUSH4 0x10FDA3E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDE3 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SUB PUSH2 0x17BB JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17E8 PUSH2 0x17C8 PUSH2 0x2255 JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x22 DUP6 DUP2 MSTORE PUSH1 0x42 DUP3 KECCAK256 SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x17F5 DUP5 DUP3 DUP5 PUSH2 0x2F09 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1803 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP8 PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH2 0x182A DUP2 PUSH1 0xA0 ADD MLOAD DUP3 PUSH1 0xC0 ADD MLOAD DUP9 PUSH2 0x304C JUMP JUMPDEST PUSH2 0x183E JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1A89 JUMP JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD PUSH1 0x40 DUP10 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP1 DUP3 GT DUP1 PUSH2 0x1861 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x187F JUMPI PUSH1 0x40 MLOAD PUSH4 0x2D029599 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 LT DUP1 ISZERO PUSH2 0x1893 JUMPI POP PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x1 AND ISZERO JUMPDEST ISZERO PUSH2 0x18B1 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA11B63FF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x18BA DUP4 PUSH2 0x16B2 JUMP JUMPDEST SWAP6 POP PUSH2 0x18DC DUP11 DUP11 DUP10 DUP10 DUP8 PUSH1 0xE0 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD DUP10 PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD PUSH2 0x3092 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x80 DUP2 ADD DUP4 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB PUSH3 0x10000 DUP5 DIV DUP2 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x88 SHL SWAP1 SWAP3 DIV AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 PUSH2 0x1943 SWAP1 DUP9 SWAP1 DUP4 SWAP1 DUP13 PUSH2 0x16ED JUMP JUMPDEST PUSH2 0x1958 JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x1A89 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1971 JUMPI PUSH2 0x1971 DUP5 PUSH1 0x0 ADD MLOAD DUP9 DUP14 PUSH1 0x60 ADD MLOAD PUSH2 0x17A6 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP1 ISZERO PUSH2 0x1A35 JUMPI DUP4 PUSH1 0x1 SUB PUSH2 0x19A1 JUMPI DUP1 SWAP5 POP DUP1 SWAP4 POP PUSH2 0x19CD JUMP JUMPDEST DUP4 DUP2 EQ PUSH2 0x19CD JUMPI PUSH2 0x19B2 DUP5 DUP4 PUSH2 0x4F75 JUMP JUMPDEST SWAP2 POP PUSH2 0x19BE DUP2 DUP7 PUSH2 0x4F75 JUMP JUMPDEST SWAP5 POP PUSH2 0x19CA DUP2 DUP6 PUSH2 0x4F75 JUMP JUMPDEST SWAP4 POP JUMPDEST DUP4 PUSH2 0x19D8 DUP7 DUP5 PUSH2 0x4F94 JUMP JUMPDEST GT ISZERO PUSH2 0x19E4 JUMPI DUP2 DUP5 SUB SWAP5 POP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB DUP7 DUP2 AND PUSH1 0x1 PUSH1 0x88 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB DUP7 DUP11 ADD SWAP3 SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0x1 OR AND OR SWAP1 SSTORE PUSH2 0x1A7E JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB DUP7 DUP2 AND PUSH1 0x1 PUSH1 0x88 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB SWAP2 DUP10 AND PUSH3 0x10000 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0x1 OR AND OR SWAP1 SSTORE JUMPDEST POP SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1CDA JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1AB6 JUMPI PUSH2 0x1AB6 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD SWAP1 POP DUP4 DUP2 LT PUSH2 0x1AE9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x21A561B1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1AFB JUMPI PUSH2 0x1AFB PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND PUSH1 0x0 SUB PUSH2 0x1B1E JUMPI POP POP PUSH2 0x1CD2 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B32 JUMPI PUSH2 0x1B32 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD MLOAD PUSH1 0x40 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP1 DUP1 DUP7 PUSH1 0x20 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1B60 JUMPI PUSH2 0x1B60 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x1BFA JUMPI PUSH1 0x40 DUP5 ADD MLOAD DUP1 MLOAD DUP5 LT PUSH2 0x1B8B JUMPI PUSH1 0x40 MLOAD PUSH4 0x5FD9FC67 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1B9F JUMPI PUSH2 0x1B9F PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD DUP1 MLOAD PUSH1 0x40 DUP3 ADD MLOAD SWAP1 SWAP6 POP SWAP4 POP SWAP1 POP PUSH1 0x4 DUP5 EQ PUSH1 0x3 SUB DUP2 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1BD2 JUMPI PUSH2 0x1BD2 PUSH2 0x4677 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1BE5 JUMPI PUSH2 0x1BE5 PUSH2 0x4677 JUMP JUMPDEST SWAP1 MSTORE POP POP PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE POP PUSH2 0x1C8B JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD DUP1 MLOAD DUP5 LT PUSH2 0x1C20 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30446BEF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1C34 JUMPI PUSH2 0x1C34 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD DUP1 MLOAD PUSH1 0x40 DUP3 ADD MLOAD SWAP1 SWAP6 POP SWAP4 POP SWAP1 POP PUSH1 0x4 DUP5 EQ PUSH1 0x3 SUB DUP2 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1C67 JUMPI PUSH2 0x1C67 PUSH2 0x4677 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1C7A JUMPI PUSH2 0x1C7A PUSH2 0x4677 JUMP JUMPDEST SWAP1 MSTORE POP POP PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE POP JUMPDEST PUSH2 0x1C95 DUP3 PUSH1 0x3 LT SWAP1 JUMP JUMPDEST PUSH2 0x1CB2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A75B57B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x1CCB JUMPI PUSH2 0x1CCB DUP7 PUSH1 0x60 ADD MLOAD DUP3 DUP9 PUSH1 0x80 ADD MLOAD PUSH2 0x3173 JUMP JUMPDEST POP POP POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1A9A JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1E09 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1CFA JUMPI PUSH2 0x1CFA PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND PUSH1 0x0 SUB PUSH2 0x1D1F JUMPI POP PUSH2 0x1E01 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1D33 JUMPI PUSH2 0x1D33 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x60 ADD MLOAD MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1DAA JUMPI PUSH2 0x1D81 DUP4 PUSH1 0x60 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1D6F JUMPI PUSH2 0x1D6F PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x3 LT SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1DA2 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x22973 PUSH1 0xE6 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x1D4E JUMP JUMPDEST POP POP PUSH1 0x40 DUP2 ADD MLOAD MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1DFC JUMPI PUSH2 0x1DD6 DUP4 PUSH1 0x40 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1D6F JUMPI PUSH2 0x1D6F PUSH2 0x4D57 JUMP JUMPDEST ISZERO PUSH2 0x1DF4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA6CFC673 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x1DB5 JUMP JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1CDE JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0xA0 ADD MLOAD DUP7 PUSH1 0xC0 ADD MLOAD PUSH2 0x1E26 SWAP2 SWAP1 PUSH2 0x4FAC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0xA0 ADD MLOAD TIMESTAMP PUSH2 0x1E3A SWAP2 SWAP1 PUSH2 0x4FAC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E48 DUP3 DUP5 PUSH2 0x4FAC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP CALLVALUE SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0x31E3 PUSH1 0x0 JUMPDEST DUP12 PUSH1 0x40 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1F2C JUMPI PUSH1 0x0 DUP13 PUSH1 0x40 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1E99 JUMPI PUSH2 0x1E99 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1EBE DUP3 PUSH1 0x60 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD DUP16 DUP16 DUP13 DUP13 DUP16 PUSH1 0x0 PUSH2 0x32A0 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE CALLER PUSH1 0x80 DUP5 ADD MSTORE SWAP1 POP PUSH1 0x0 DUP3 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1EE2 JUMPI PUSH2 0x1EE2 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x1F0E JUMPI DUP6 DUP2 GT ISZERO PUSH2 0x1F08 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP7 SUB SWAP6 POP JUMPDEST PUSH2 0x1F22 DUP3 DUP16 PUSH1 0x0 ADD MLOAD DUP14 DUP9 DUP9 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1E74 JUMP JUMPDEST POP PUSH2 0x31E3 SWAP1 POP PUSH1 0x0 JUMPDEST DUP12 PUSH1 0x60 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1FED JUMPI PUSH1 0x0 DUP13 PUSH1 0x60 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1F5A JUMPI PUSH2 0x1F5A PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1F7F DUP3 PUSH1 0x60 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD DUP16 DUP16 DUP13 DUP13 DUP16 PUSH1 0x1 PUSH2 0x32A0 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE SWAP1 POP PUSH1 0x0 DUP3 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1FA7 JUMPI PUSH2 0x1FA7 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x1FD3 JUMPI DUP6 DUP2 GT ISZERO PUSH2 0x1FCD JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP7 SUB SWAP6 POP JUMPDEST PUSH2 0x1FE3 DUP3 CALLER DUP13 DUP9 DUP9 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1F35 JUMP JUMPDEST POP POP PUSH2 0x1FF8 DUP2 PUSH2 0x290E JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2008 JUMPI PUSH2 0x2008 CALLER DUP4 PUSH2 0x32EC JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SWAP1 POP PUSH1 0x60 DUP3 SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9D9AF8E38D66C62E2C12F0225249FD9D721C54B83F48D9352C97C6CACDCB6F31 DUP11 DUP9 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x2067 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4FFD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP3 MLOAD DUP3 MLOAD PUSH1 0x60 SWAP2 DUP3 SWAP2 PUSH2 0x208C DUP2 DUP4 PUSH2 0x4F94 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x20A3 JUMPI PUSH2 0x20A3 PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x20DC JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x20C9 PUSH2 0x3ED7 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x20C1 JUMPI SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2175 JUMPI PUSH1 0x0 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x20FF JUMPI PUSH2 0x20FF PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x2118 DUP13 PUSH1 0x0 DUP5 DUP13 PUSH2 0x3340 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x214A JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP PUSH2 0x216B JUMP JUMPDEST DUP1 DUP8 DUP6 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x215F JUMPI PUSH2 0x215F PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x20E3 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x220D JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2195 JUMPI PUSH2 0x2195 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x21AE DUP13 PUSH1 0x1 DUP5 DUP13 PUSH2 0x3340 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x21E0 JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP PUSH2 0x2203 JUMP JUMPDEST DUP1 DUP8 DUP6 DUP9 DUP7 ADD SUB DUP2 MLOAD DUP2 LT PUSH2 0x21F7 JUMPI PUSH2 0x21F7 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2179 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x221B JUMPI DUP1 DUP5 MLOAD SUB DUP5 MSTORE JUMPDEST POP DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x223E JUMPI PUSH1 0x40 MLOAD PUSH4 0xD5DA9A1B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2248 DUP9 DUP5 PUSH2 0x2CD3 JUMP JUMPDEST SWAP4 POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x2326 JUMPI PUSH2 0x33B PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x2353 PUSH2 0x17FB JUMP JUMPDEST PUSH2 0x2369 DUP7 PUSH2 0x120 ADD CALLDATALOAD DUP8 PUSH2 0x140 ADD CALLDATALOAD PUSH1 0x1 PUSH2 0x304C JUMP JUMPDEST POP PUSH2 0x2372 PUSH2 0x33DB JUMP JUMPDEST PUSH2 0x239A PUSH2 0x2383 PUSH2 0x200 DUP9 ADD DUP9 PUSH2 0x4F16 JUMP JUMPDEST PUSH2 0x238F SWAP2 POP PUSH1 0x1 PUSH2 0x4F94 JUMP JUMPDEST DUP8 PUSH2 0x1E0 ADD CALLDATALOAD PUSH2 0x2EE8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 SWAP1 POP DUP1 PUSH1 0x80 MSTORE DUP6 PUSH1 0xA0 MSTORE PUSH1 0x60 PUSH1 0x24 PUSH1 0xC0 CALLDATACOPY PUSH1 0x40 PUSH1 0x64 PUSH2 0x120 CALLDATACOPY PUSH1 0xE0 PUSH1 0x80 KECCAK256 PUSH2 0x160 MSTORE PUSH2 0x264 CALLDATALOAD PUSH1 0x20 DUP2 MUL PUSH2 0x2A0 ADD PUSH1 0x1 PUSH2 0x264 CALLDATALOAD ADD DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP DUP8 DUP2 MSTORE PUSH1 0x80 PUSH1 0x24 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH2 0x160 DUP8 PUSH1 0xA0 MSTORE DUP7 PUSH1 0xC0 MSTORE PUSH1 0x0 PUSH1 0xE0 MSTORE PUSH2 0x204 CALLDATALOAD SWAP3 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x246B JUMPI DUP1 PUSH1 0x40 MUL PUSH2 0x284 ADD PUSH1 0x20 DUP2 PUSH2 0x100 CALLDATACOPY PUSH1 0x40 DUP2 PUSH2 0x120 CALLDATACOPY PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0xE0 PUSH1 0x80 KECCAK256 DUP4 MSTORE PUSH1 0xA0 DUP5 ADD SWAP4 POP DUP10 DUP5 MSTORE DUP9 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 PUSH1 0x60 DUP7 ADD CALLDATACOPY POP PUSH1 0x1 ADD PUSH2 0x2420 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 DUP6 ADD MUL PUSH2 0x160 KECCAK256 PUSH1 0x60 MSTORE PUSH2 0x264 CALLDATALOAD SWAP4 POP JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24B1 JUMPI DUP1 PUSH1 0x40 MUL PUSH2 0x284 ADD SWAP2 POP PUSH1 0xA0 DUP4 ADD SWAP3 POP DUP9 DUP4 MSTORE DUP8 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 PUSH1 0x60 DUP6 ADD CALLDATACOPY PUSH1 0x1 ADD PUSH2 0x2480 JUMP JUMPDEST POP POP POP POP POP PUSH1 0x0 PUSH32 0x0 SWAP1 POP DUP1 PUSH1 0x80 MSTORE DUP3 PUSH1 0xA0 MSTORE PUSH1 0x60 PUSH1 0xC4 PUSH1 0xC0 CALLDATACOPY PUSH1 0x20 PUSH2 0x104 PUSH2 0x120 CALLDATACOPY PUSH1 0xC0 PUSH1 0x80 KECCAK256 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0xE0 MSTORE PUSH1 0x20 PUSH2 0x264 CALLDATALOAD MUL PUSH2 0x200 ADD PUSH1 0x1 DUP2 MSTORE DUP4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0xC4 PUSH1 0x40 DUP4 ADD CALLDATACOPY POP POP PUSH1 0x84 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH32 0x0 PUSH1 0x80 DUP2 SWAP1 MSTORE SWAP1 SWAP2 POP PUSH1 0x40 PUSH1 0x84 PUSH1 0xA0 CALLDATACOPY PUSH1 0x60 MLOAD PUSH2 0x100 MSTORE DUP9 PUSH2 0x120 MSTORE PUSH1 0xA0 PUSH2 0x144 PUSH2 0x140 CALLDATACOPY DUP2 PUSH2 0x1E0 MSTORE PUSH2 0x180 PUSH1 0x80 KECCAK256 SWAP4 POP POP POP POP PUSH1 0x20 PUSH2 0x264 CALLDATALOAD MUL PUSH2 0x180 ADD DUP2 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x120 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 PUSH2 0x264 CALLDATALOAD MUL PUSH2 0x1E0 ADD PUSH1 0xA4 CALLDATALOAD PUSH1 0x84 CALLDATALOAD PUSH32 0x9D9AF8E38D66C62E2C12F0225249FD9D721C54B83F48D9352C97C6CACDCB6F31 DUP4 DUP6 LOG3 POP POP PUSH1 0x0 PUSH1 0x60 MSTORE PUSH2 0x2626 DUP2 DUP9 PUSH2 0x160 ADD CALLDATALOAD DUP9 DUP11 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2611 SWAP2 SWAP1 PUSH2 0x401C JUMP JUMPDEST PUSH2 0x2621 PUSH1 0xA0 DUP14 ADD PUSH1 0x80 DUP15 ADD PUSH2 0x401C JUMP JUMPDEST PUSH2 0x341C JUMP JUMPDEST PUSH2 0x2682 DUP2 PUSH2 0x263A PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x401C JUMP JUMPDEST PUSH2 0x2648 PUSH2 0x220 DUP12 ADD DUP12 PUSH2 0x4DB0 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 0x346C SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x26E7 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP PUSH4 0x2671A551 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE DUP8 PUSH1 0x44 DUP3 ADD MSTORE DUP7 PUSH1 0x64 DUP3 ADD MSTORE DUP6 PUSH1 0x84 DUP3 ADD MSTORE DUP5 PUSH1 0xA4 DUP3 ADD MSTORE DUP4 PUSH1 0xC4 DUP3 ADD MSTORE DUP3 PUSH1 0xE4 DUP3 ADD MSTORE PUSH2 0x26E1 DUP3 DUP3 PUSH2 0x104 PUSH2 0x350E JUMP JUMPDEST POP PUSH2 0x2682 JUMP JUMPDEST PUSH1 0x2 DUP8 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x26FB JUMPI PUSH2 0x26FB PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x2732 JUMPI DUP2 PUSH1 0x1 EQ PUSH2 0x2721 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEFCC00B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x272D DUP7 DUP7 DUP7 DUP7 PUSH2 0x35FE JUMP JUMPDEST PUSH2 0x2682 JUMP JUMPDEST PUSH2 0x2682 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x36BF JUMP JUMPDEST CALLVALUE DUP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x27B2 JUMPI CALLDATASIZE DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x275F JUMPI PUSH2 0x275F PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x40 MUL SWAP2 SWAP1 SWAP2 ADD SWAP2 POP POP DUP1 CALLDATALOAD DUP5 DUP2 GT ISZERO PUSH2 0x278C JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x27A5 PUSH2 0x279F PUSH1 0x40 DUP5 ADD PUSH1 0x20 DUP6 ADD PUSH2 0x401C JUMP JUMPDEST DUP3 PUSH2 0x32EC JUMP JUMPDEST SWAP1 SWAP4 SUB SWAP3 POP PUSH1 0x1 ADD PUSH2 0x2744 JUMP JUMPDEST POP DUP2 DUP7 GT ISZERO PUSH2 0x27D4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x27DE DUP6 DUP8 PUSH2 0x32EC JUMP JUMPDEST DUP6 DUP3 GT ISZERO PUSH2 0x27F2 JUMPI PUSH2 0x27F2 CALLER DUP8 DUP5 SUB PUSH2 0x32EC JUMP JUMPDEST PUSH2 0x27FC PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x280E DUP2 DUP4 PUSH2 0x37A3 JUMP JUMPDEST DUP2 PUSH2 0x2840 JUMPI DUP3 PUSH1 0x1 EQ PUSH2 0x2834 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEFCC00B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x272D DUP8 DUP8 DUP8 DUP8 PUSH2 0x35FE JUMP JUMPDEST PUSH2 0x2682 DUP3 DUP3 PUSH1 0x2 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x37C2 JUMP JUMPDEST PUSH1 0x20 DUP3 MUL PUSH2 0x1E4 SUB CALLDATALOAD DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x28BF JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x2879 JUMPI PUSH2 0x2879 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x40 MUL SWAP2 SWAP1 SWAP2 ADD SWAP2 POP POP DUP1 CALLDATALOAD DUP7 ISZERO PUSH2 0x2898 JUMPI PUSH2 0x2895 DUP2 DUP12 PUSH2 0x4FAC JUMP JUMPDEST SWAP10 POP JUMPDEST PUSH2 0x28B5 DUP12 DUP15 PUSH2 0x28AD PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x401C JUMP JUMPDEST DUP5 DUP10 DUP12 PUSH2 0x3842 JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x285E JUMP JUMPDEST POP PUSH2 0x28CE DUP9 DUP12 DUP12 DUP11 DUP7 DUP9 PUSH2 0x3842 JUMP JUMPDEST PUSH2 0x2008 PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH2 0x28E1 DUP4 PUSH2 0x387D JUMP JUMPDEST PUSH2 0x28EB DUP2 DUP4 PUSH2 0x37A3 JUMP JUMPDEST DUP2 PUSH2 0x28FD JUMPI PUSH2 0x272D DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x36BF JUMP JUMPDEST PUSH2 0x2682 DUP3 DUP3 PUSH1 0x3 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x37C2 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 EQ PUSH2 0x291A JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2927 DUP3 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2933 DUP2 DUP4 PUSH2 0x389E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 SUB PUSH2 0x2947 JUMPI POP DUP1 PUSH2 0x528 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP5 MULMOD ISZERO SWAP1 POP DUP1 PUSH2 0x296E JUMPI PUSH1 0x40 MLOAD PUSH4 0xC63CF089 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x297A DUP7 DUP6 PUSH2 0x4F75 JUMP JUMPDEST SWAP5 SWAP1 SWAP5 DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 DUP8 EQ PUSH2 0x29D7 JUMPI PUSH1 0x0 DUP3 ISZERO PUSH2 0x299F JUMPI POP PUSH1 0x0 NOT DUP4 ADD JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x29AC DUP9 DUP11 PUSH2 0x4F75 JUMP JUMPDEST PUSH2 0x29B6 DUP9 DUP13 PUSH2 0x4F75 JUMP JUMPDEST PUSH2 0x29C0 SWAP2 SWAP1 PUSH2 0x4F94 JUMP JUMPDEST PUSH2 0x29CA SWAP2 SWAP1 PUSH2 0x4F94 JUMP JUMPDEST DUP6 SWAP1 DIV SWAP3 POP PUSH2 0x377 SWAP2 POP POP JUMP JUMPDEST POP SWAP4 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x29EA PUSH2 0x3ED7 JUMP JUMPDEST DUP4 ISZERO DUP1 PUSH2 0x29F5 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x2A13 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C74EDB7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2A1B PUSH2 0x3ED7 JUMP JUMPDEST PUSH2 0x2A78 DUP8 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x2A6D JUMPI PUSH2 0x2A5E PUSH1 0x40 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x5097 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2A41 JUMP JUMPDEST POP POP POP POP POP DUP4 PUSH2 0x38C2 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP8 DUP2 MSTORE PUSH2 0x2AD7 SWAP2 DUP11 SWAP2 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP2 SWAP1 PUSH1 0x0 SWAP1 DUP6 ADD JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x2ACC JUMPI PUSH2 0x2ABD PUSH1 0x40 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x5097 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2AA0 JUMP JUMPDEST POP POP POP POP POP DUP6 PUSH2 0x3A6E JUMP JUMPDEST DUP1 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2AEA JUMPI PUSH2 0x2AEA PUSH2 0x4677 JUMP JUMPDEST DUP4 MLOAD MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2AFE JUMPI PUSH2 0x2AFE PUSH2 0x4677 JUMP JUMPDEST EQ ISZERO DUP1 PUSH2 0x2B29 JUMPI POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST DUP1 PUSH2 0x2B40 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x40 ADD MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x2B5E JUMPI PUSH1 0x40 MLOAD PUSH4 0x9CFB455 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD DUP2 PUSH1 0x60 ADD MLOAD GT ISZERO PUSH2 0x2C15 JUMPI PUSH1 0x0 DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x2B87 JUMPI PUSH2 0x2B87 PUSH2 0x4D57 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2B9D SWAP2 SWAP1 PUSH2 0x5097 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x2BB7 SWAP2 SWAP1 PUSH2 0x4FAC JUMP JUMPDEST DUP10 DUP3 PUSH1 0x0 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2BCD JUMPI PUSH2 0x2BCD PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2BF2 JUMPI PUSH2 0x2BF2 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x60 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MLOAD DUP2 ADD MLOAD SWAP1 DUP4 ADD MSTORE POP PUSH2 0x2CA7 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP8 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x2C2A JUMPI PUSH2 0x2C2A PUSH2 0x4D57 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2C40 SWAP2 SWAP1 PUSH2 0x5097 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x60 ADD MLOAD DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH2 0x2C5A SWAP2 SWAP1 PUSH2 0x4FAC JUMP JUMPDEST DUP10 DUP3 PUSH1 0x0 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2C70 JUMPI PUSH2 0x2C70 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2C95 JUMPI PUSH2 0x2C95 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP POP JUMPDEST PUSH1 0x60 DUP1 DUP3 ADD MLOAD DUP5 MLOAD SWAP1 SWAP2 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 ADD MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x60 SWAP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2CF0 JUMPI PUSH2 0x2CF0 PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2D19 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2DFF JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2D3B JUMPI PUSH2 0x2D3B PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND PUSH1 0x0 SUB PUSH2 0x2D60 JUMPI POP PUSH2 0x2DF7 JUMP JUMPDEST PUSH1 0x1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2D74 JUMPI PUSH2 0x2D74 PUSH2 0x4D57 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x2DF3 JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2DAA JUMPI PUSH2 0x2DAA PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x2DEA JUMPI PUSH1 0x40 MLOAD PUSH4 0x14BEA841 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xDE3 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2D8D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2D1F JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE CALLVALUE SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x2EBB JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2E44 JUMPI PUSH2 0x2E44 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD DUP1 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2E69 JUMPI PUSH2 0x2E69 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x2E9D JUMPI DUP5 DUP2 PUSH1 0x60 ADD MLOAD GT ISZERO PUSH2 0x2E93 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD DUP6 SUB SWAP5 POP JUMPDEST PUSH2 0x2EB1 DUP2 DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD DUP8 PUSH2 0x31E3 JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2E27 JUMP JUMPDEST POP PUSH2 0x2EC5 DUP2 PUSH2 0x290E JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2ED5 JUMPI PUSH2 0x2ED5 CALLER DUP4 PUSH2 0x32EC JUMP JUMPDEST PUSH2 0x2EDF PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x2933 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2335530B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x40 SUB PUSH2 0x2F3A JUMPI POP POP POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP2 AND SWAP1 PUSH1 0xFF SHR PUSH1 0x1B ADD PUSH2 0x2FA0 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x2F95 JUMPI POP POP POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x0 BYTE PUSH1 0x1B DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2F6D JUMPI POP DUP1 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x2F90 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF801E85 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0xFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDE3 JUMP JUMPDEST PUSH2 0x2FA0 JUMP JUMPDEST PUSH2 0x27FC DUP7 DUP7 DUP7 PUSH2 0x3BF8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP9 SWAP1 MSTORE PUSH1 0xFF DUP5 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 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 0x2FF4 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 0x3028 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8BAA579F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2682 JUMPI PUSH2 0x2682 DUP8 DUP8 DUP8 PUSH2 0x3BF8 JUMP JUMPDEST PUSH1 0x0 TIMESTAMP DUP5 GT DUP1 PUSH2 0x305C JUMPI POP TIMESTAMP DUP4 GT ISZERO JUMPDEST ISZERO PUSH2 0x3088 JUMPI DUP2 ISZERO PUSH2 0x3080 JUMPI PUSH1 0x40 MLOAD PUSH4 0x37BF5613 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x528 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x30A6 JUMPI PUSH2 0x30A6 PUSH2 0x4677 JUMP JUMPDEST GT DUP1 ISZERO PUSH2 0x30BC JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x30D1 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1558 JUMPI PUSH1 0x80 DUP9 ADD MLOAD MLOAD ISZERO DUP1 ISZERO PUSH2 0x30E8 JUMPI POP DUP7 MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x30FE JUMPI PUSH2 0x30F9 DUP2 DUP7 DUP5 DUP8 PUSH2 0x3C6F JUMP JUMPDEST PUSH2 0x1558 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x315C DUP3 PUSH4 0x33131570 PUSH1 0xE0 SHL DUP9 CALLER DUP14 DUP13 DUP15 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3125 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x526B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3CBB JUMP JUMPDEST SWAP1 POP PUSH2 0x3168 DUP2 DUP8 PUSH2 0x3CD0 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP5 MLOAD MUL DUP2 ADD JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x31BF JUMPI DUP2 MLOAD DUP1 DUP5 GT DUP1 ISZERO PUSH2 0x31A2 JUMPI DUP2 PUSH1 0x0 MSTORE DUP5 PUSH1 0x20 MSTORE PUSH2 0x31AB JUMP JUMPDEST DUP5 PUSH1 0x0 MSTORE DUP2 PUSH1 0x20 MSTORE JUMPDEST POP POP PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP3 POP PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x3182 JUMP JUMPDEST POP POP DUP4 EQ SWAP1 POP DUP1 PUSH2 0x17F5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9BDE339 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x31F8 JUMPI PUSH2 0x31F8 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x3214 JUMPI PUSH2 0x320F DUP5 PUSH1 0x80 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x32EC JUMP JUMPDEST PUSH2 0x17F5 JUMP JUMPDEST PUSH1 0x1 DUP5 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x3229 JUMPI PUSH2 0x3229 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x3248 JUMPI PUSH2 0x320F DUP5 PUSH1 0x20 ADD MLOAD DUP5 DUP7 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD DUP7 DUP7 PUSH2 0x3842 JUMP JUMPDEST PUSH1 0x2 DUP5 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x325D JUMPI PUSH2 0x325D PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x3281 JUMPI PUSH2 0x320F DUP5 PUSH1 0x20 ADD MLOAD DUP5 DUP7 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD DUP8 DUP8 PUSH2 0x2804 JUMP JUMPDEST PUSH2 0x17F5 DUP5 PUSH1 0x20 ADD MLOAD DUP5 DUP7 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD DUP8 DUP8 PUSH2 0x28D8 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP10 SUB PUSH2 0x32BB JUMPI PUSH2 0x32B4 DUP8 DUP8 DUP11 PUSH2 0x2937 JUMP JUMPDEST SWAP1 POP PUSH2 0x32E0 JUMP JUMPDEST PUSH2 0x32DD PUSH2 0x32C9 DUP9 DUP9 DUP13 PUSH2 0x2937 JUMP JUMPDEST PUSH2 0x32D4 DUP10 DUP10 DUP13 PUSH2 0x2937 JUMP JUMPDEST DUP8 DUP8 DUP8 DUP8 PUSH2 0x2987 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x32F5 DUP2 PUSH2 0x387D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP8 GAS CALL SWAP1 POP DUP1 PUSH2 0x333B JUMPI PUSH2 0x3310 PUSH2 0x3D2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x470C7C1D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xDE3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x3348 PUSH2 0x3ED7 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x336C JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x375C24C1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDE3 SWAP2 SWAP1 PUSH2 0x53F1 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3380 JUMPI PUSH2 0x3380 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x3395 JUMPI PUSH2 0x3390 DUP6 DUP5 DUP4 PUSH2 0x3A6E JUMP JUMPDEST PUSH2 0x33AE JUMP JUMPDEST PUSH2 0x33A0 DUP6 DUP5 DUP4 PUSH2 0x38C2 JUMP JUMPDEST CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP3 SWAP1 MSTORE JUMPDEST DUP1 MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x0 SUB PUSH2 0x5A5 JUMPI PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x244 CALLDATALOAD PUSH2 0x260 PUSH2 0x264 CALLDATALOAD PUSH1 0x40 MUL ADD EQ PUSH1 0x4 CALLDATALOAD PUSH1 0x20 EQ PUSH2 0x224 CALLDATALOAD PUSH2 0x240 EQ AND AND DUP1 PUSH2 0x3419 JUMPI PUSH1 0x40 MLOAD PUSH4 0x39F3E3FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3430 JUMPI PUSH2 0x3430 PUSH2 0x4677 JUMP JUMPDEST GT DUP1 ISZERO PUSH2 0x3446 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x345B JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1E09 JUMPI PUSH2 0x1E09 DUP2 DUP7 DUP5 DUP8 PUSH2 0x3C6F JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x80 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB PUSH3 0x10000 DUP4 DIV DUP2 AND SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x88 SHL SWAP1 SWAP2 DIV SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x34D4 DUP5 DUP3 PUSH1 0x1 DUP1 PUSH2 0x16ED JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x34E6 JUMPI PUSH2 0x34E6 DUP4 DUP6 DUP5 PUSH2 0x17A6 JUMP JUMPDEST POP POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH18 0x10000000000000000000000000000010001 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF PUSH1 0xA0 SHL PUSH32 0x0 OR PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 DUP2 MSTORE PUSH32 0x0 DUP5 MSTORE PUSH1 0x55 PUSH1 0xB KECCAK256 SWAP3 SWAP1 SWAP4 MSTORE DUP1 DUP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 DUP2 DUP5 DUP7 DUP3 DUP7 GAS CALL SWAP1 POP DUP1 PUSH2 0x35B8 JUMPI PUSH2 0x3594 PUSH2 0x3D2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x344F54F5 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDE3 JUMP JUMPDEST PUSH1 0x0 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x2671A551 PUSH1 0xE1 SHL EQ PUSH2 0x27FC JUMPI PUSH1 0x40 MLOAD PUSH4 0xE7CCD93 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xDE3 JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x3619 JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x36B0 JUMPI RETURNDATASIZE ISZERO PUSH2 0x368A JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x3671 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x3686 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x36DA JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH4 0x79212195 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0x3787 JUMPI RETURNDATASIZE ISZERO PUSH2 0x3762 JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x3749 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x375E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37B0 DUP4 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x333B JUMPI PUSH2 0x333B DUP4 PUSH2 0x290E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP9 MLOAD SUB PUSH2 0x37FD JUMPI POP PUSH1 0x40 DUP1 DUP9 MSTORE PUSH1 0x20 DUP1 DUP10 ADD DUP11 SWAP1 MSTORE PUSH4 0x2671A551 PUSH1 0xE1 SHL SWAP2 DUP10 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x1 PUSH1 0x64 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x380C JUMP JUMPDEST POP PUSH1 0x64 DUP8 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 MSTORE JUMPDEST PUSH1 0x3C PUSH1 0xC0 DUP3 MUL DUP10 ADD SUB DUP8 DUP2 MSTORE DUP7 PUSH1 0x20 DUP3 ADD MSTORE DUP6 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE DUP4 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x384B DUP4 PUSH2 0x387D JUMP JUMPDEST PUSH2 0x3855 DUP2 DUP4 PUSH2 0x37A3 JUMP JUMPDEST DUP2 PUSH2 0x386B JUMPI PUSH2 0x3866 DUP7 DUP7 DUP7 DUP7 PUSH2 0x3D6F JUMP JUMPDEST PUSH2 0x27FC JUMP JUMPDEST PUSH2 0x27FC DUP3 DUP3 PUSH1 0x1 DUP10 DUP10 DUP10 PUSH1 0x0 DUP11 PUSH2 0x37C2 JUMP JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x3419 JUMPI PUSH1 0x40 MLOAD PUSH4 0x246CF945 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x64 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD SWAP1 PUSH1 0xC0 MUL PUSH1 0x44 ADD PUSH2 0x38B9 DUP5 DUP4 DUP4 PUSH2 0x350E JUMP JUMPDEST POP POP PUSH1 0x20 SWAP1 MSTORE POP JUMP JUMPDEST PUSH2 0x38EE JUMP JUMPDEST PUSH4 0x7FDA7279 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD DUP1 MLOAD MLOAD DUP5 MLOAD DUP2 LT PUSH2 0x3905 JUMPI PUSH2 0x3905 PUSH2 0x38C7 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL PUSH1 0x20 DUP7 ADD ADD MLOAD PUSH1 0x60 DUP2 MLOAD ADD MLOAD PUSH1 0x20 DUP5 MLOAD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x392B JUMPI PUSH2 0x392B PUSH2 0x38C7 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL PUSH1 0x20 DUP4 ADD ADD MLOAD PUSH1 0x0 DUP1 PUSH1 0x20 DUP7 ADD MLOAD ISZERO PUSH2 0x3952 JUMPI POP POP PUSH1 0x60 DUP2 ADD DUP1 MLOAD PUSH1 0x0 SWAP1 SWAP2 MSTORE DUP1 ISZERO JUMPDEST DUP9 MLOAD DUP4 MLOAD DUP2 MSTORE PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xA0 DUP5 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x60 DUP2 KECCAK256 PUSH1 0x20 DUP13 MLOAD MUL DUP13 ADD JUMPDEST DUP1 DUP12 LT ISZERO PUSH2 0x3A29 JUMPI PUSH1 0x20 DUP12 ADD SWAP11 POP DUP11 MLOAD MLOAD SWAP10 POP DUP14 MLOAD DUP11 LT PUSH2 0x39A5 JUMPI PUSH2 0x39A5 PUSH2 0x38C7 JUMP JUMPDEST PUSH1 0x20 DUP11 MUL PUSH1 0x20 DUP16 ADD ADD MLOAD SWAP9 POP PUSH1 0x20 DUP10 ADD MLOAD ISZERO PUSH2 0x3982 JUMPI PUSH1 0x60 DUP10 MLOAD ADD MLOAD SWAP8 POP PUSH1 0x20 DUP12 MLOAD ADD MLOAD SWAP7 POP DUP8 MLOAD DUP8 LT PUSH2 0x39DB JUMPI PUSH2 0x39DB PUSH2 0x38C7 JUMP JUMPDEST PUSH1 0x20 DUP8 MUL PUSH1 0x20 DUP10 ADD ADD MLOAD SWAP6 POP PUSH1 0x60 DUP7 ADD DUP1 MLOAD DUP7 ADD DUP2 MLOAD ISZERO DUP8 DUP3 LT PUSH1 0x1 SHL OR DUP7 OR SWAP6 POP DUP1 SWAP7 POP POP PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x60 DUP7 KECCAK256 DUP3 EQ PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0xA0 DUP9 ADD MLOAD EQ AND PUSH2 0x3A24 JUMPI PUSH2 0x3A24 PUSH2 0x38C7 JUMP JUMPDEST PUSH2 0x3982 JUMP JUMPDEST POP POP PUSH1 0x60 ADD DUP3 SWAP1 MSTORE DUP1 PUSH1 0x1 DUP2 EQ PUSH2 0x3A47 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x3A58 JUMPI PUSH2 0x3A60 JUMP JUMPDEST PUSH4 0x246CF945 PUSH1 0xE2 SHL PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x3A60 PUSH2 0x38D8 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP1 MLOAD MLOAD DUP5 MLOAD DUP2 LT PUSH2 0x3A85 JUMPI PUSH2 0x3A85 PUSH2 0x38C7 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL PUSH1 0x20 DUP7 ADD ADD MLOAD DUP1 MLOAD PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x20 DUP6 MLOAD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x3AAC JUMPI PUSH2 0x3AAC PUSH2 0x38C7 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL PUSH1 0x20 DUP4 ADD ADD MLOAD PUSH1 0x0 DUP1 PUSH1 0x20 DUP8 ADD MLOAD ISZERO PUSH2 0x3AD3 JUMPI POP POP PUSH1 0x60 DUP2 ADD DUP1 MLOAD PUSH1 0x0 SWAP1 SWAP2 MSTORE DUP1 ISZERO JUMPDEST DUP10 MLOAD CALLER PUSH1 0x80 DUP3 ADD MSTORE DUP4 MLOAD DUP2 MSTORE PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE DUP7 MLOAD PUSH1 0x20 DUP13 ADD MSTORE PUSH2 0x120 DUP8 ADD MLOAD PUSH1 0x40 DUP13 ADD MSTORE PUSH1 0x60 DUP2 KECCAK256 SWAP1 POP PUSH1 0x20 DUP13 MLOAD MUL DUP13 ADD JUMPDEST DUP1 DUP12 LT ISZERO PUSH2 0x3BC7 JUMPI PUSH1 0x20 DUP12 ADD SWAP11 POP DUP11 MLOAD MLOAD SWAP10 POP DUP14 MLOAD DUP11 LT PUSH2 0x3B36 JUMPI PUSH2 0x3B36 PUSH2 0x38C7 JUMP JUMPDEST PUSH1 0x20 DUP11 MUL PUSH1 0x20 DUP16 ADD ADD MLOAD SWAP9 POP PUSH1 0x20 DUP10 ADD MLOAD ISZERO PUSH2 0x3B13 JUMPI DUP9 MLOAD SWAP8 POP PUSH1 0x40 DUP9 ADD MLOAD SWAP7 POP PUSH1 0x20 DUP12 MLOAD ADD MLOAD SWAP6 POP DUP7 MLOAD DUP7 LT PUSH2 0x3B6F JUMPI PUSH2 0x3B6F PUSH2 0x38C7 JUMP JUMPDEST PUSH1 0x20 DUP7 MUL PUSH1 0x20 DUP9 ADD ADD MLOAD SWAP5 POP PUSH1 0x60 DUP6 ADD DUP1 MLOAD DUP6 ADD DUP2 MLOAD ISZERO DUP7 DUP3 LT PUSH1 0x1 SHL OR DUP6 OR SWAP5 POP DUP1 SWAP6 POP POP PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x60 DUP6 KECCAK256 DUP3 EQ PUSH1 0x40 DUP14 ADD MLOAD PUSH2 0x120 DUP11 ADD MLOAD EQ PUSH1 0x20 DUP15 ADD MLOAD DUP11 MLOAD EQ AND AND PUSH2 0x3BC2 JUMPI PUSH2 0x3BC2 PUSH2 0x38C7 JUMP JUMPDEST PUSH2 0x3B13 JUMP JUMPDEST POP POP DUP2 PUSH1 0x60 DUP12 MLOAD ADD MSTORE DUP1 PUSH1 0x1 DUP2 EQ PUSH2 0x3A47 JUMPI PUSH1 0x2 DUP2 SUB PUSH2 0x3BE9 JUMPI PUSH2 0x3BE9 PUSH2 0x38D8 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C19 DUP5 PUSH4 0x1626BA7E PUSH1 0xE0 SHL DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3125 SWAP3 SWAP2 SWAP1 PUSH2 0x53FF JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3C41 JUMPI PUSH2 0x3C28 PUSH2 0x3D2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4F7FB80D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3C51 PUSH4 0xB135D3F PUSH1 0xE1 SHL PUSH2 0x3E75 JUMP JUMPDEST ISZERO PUSH2 0x17F5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x20578759 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE CALLER PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3CAF SWAP1 DUP7 SWAP1 PUSH4 0x3874C77 PUSH1 0xE2 SHL SWAP1 PUSH1 0xA4 ADD PUSH2 0x3125 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E09 DUP2 DUP6 PUSH2 0x3CD0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS STATICCALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x3CF9 JUMPI PUSH2 0x3CDD PUSH2 0x3D2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3ED4053F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDE3 JUMP JUMPDEST PUSH2 0x3D09 PUSH4 0x3874C77 PUSH1 0xE2 SHL PUSH2 0x3E75 JUMP JUMPDEST ISZERO PUSH2 0x2933 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3ED4053F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDE3 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x16B0 JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 PUSH1 0x40 MLOAD DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x3D5A JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x333B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x3E65 JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x3E65 JUMPI DUP1 PUSH2 0x3E50 JUMPI DUP2 PUSH2 0x3E2F JUMPI RETURNDATASIZE ISZERO PUSH2 0x3E09 JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x3DF0 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x3E05 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x98891923 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 RETURNDATASIZE SUB PUSH2 0x3E8B JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 DUP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 EQ ISZERO SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x3EB6 PUSH2 0x3F1A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x80 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP4 ADD DUP3 SWAP1 MSTORE DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F67 JUMPI PUSH2 0x3F67 PUSH2 0x4677 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3FBD JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x3FA1 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x3FCF JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP 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 0x528 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3F97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3419 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4017 DUP2 PUSH2 0x3FF7 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x402E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x528 DUP2 PUSH2 0x3FF7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x404B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD 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 0xA0 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x408A JUMPI PUSH2 0x408A PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x160 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x408A JUMPI PUSH2 0x408A PUSH2 0x4052 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 0x40DB JUMPI PUSH2 0x40DB PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x40FC JUMPI PUSH2 0x40FC PUSH2 0x4052 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x6 DUP2 LT PUSH2 0x4017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x412F PUSH2 0x4068 JUMP JUMPDEST SWAP1 POP PUSH2 0x413A DUP3 PUSH2 0x4106 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x414A DUP2 PUSH2 0x3FF7 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x419B PUSH2 0x4196 DUP4 PUSH2 0x40E3 JUMP JUMPDEST PUSH2 0x40B3 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xA0 SWAP3 DUP4 MUL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP3 ADD SWAP2 SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0x41BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x41DD JUMPI PUSH2 0x41D0 DUP10 DUP3 PUSH2 0x4115 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 DUP2 ADD PUSH2 0x41BE JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x421E JUMPI PUSH2 0x421E PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 POP DUP1 PUSH2 0x422D DUP4 PUSH2 0x4106 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x423D DUP2 PUSH2 0x3FF7 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD PUSH2 0x4270 DUP2 PUSH2 0x3FF7 JUMP JUMPDEST PUSH1 0xA0 SWAP2 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x428E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x429E PUSH2 0x4196 DUP4 PUSH2 0x40E3 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xC0 SWAP3 DUP4 MUL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP3 ADD SWAP2 SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0x42BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x41DD JUMPI PUSH2 0x42D3 DUP10 DUP3 PUSH2 0x41EA JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 DUP2 ADD PUSH2 0x42C1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0x4017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x430A PUSH2 0x4090 JUMP JUMPDEST SWAP1 POP PUSH2 0x4315 DUP3 PUSH2 0x400C JUMP JUMPDEST DUP2 MSTORE PUSH2 0x4323 PUSH1 0x20 DUP4 ADD PUSH2 0x400C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4342 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x434E DUP6 DUP4 DUP7 ADD PUSH2 0x4175 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4374 DUP5 DUP3 DUP6 ADD PUSH2 0x427D JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH2 0x4386 PUSH1 0x80 DUP4 ADD PUSH2 0x42E0 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP3 ADD CALLDATALOAD PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP3 ADD CALLDATALOAD PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 DUP1 DUP4 ADD CALLDATALOAD DUP2 DUP4 ADD MSTORE POP PUSH2 0x120 DUP1 DUP4 ADD CALLDATALOAD DUP2 DUP4 ADD MSTORE POP PUSH2 0x140 DUP1 DUP4 ADD CALLDATALOAD DUP2 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x43FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4414 JUMPI PUSH2 0x4414 PUSH2 0x4052 JUMP JUMPDEST PUSH2 0x4427 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x40B3 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x443C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x446B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4473 PUSH2 0x4068 JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x448C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4498 DUP6 DUP4 DUP7 ADD PUSH2 0x42EF JUMP JUMPDEST DUP4 MSTORE PUSH2 0x44A6 PUSH1 0x20 DUP6 ADD PUSH2 0x43D3 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x44B7 PUSH1 0x40 DUP6 ADD PUSH2 0x43D3 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x44D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x44DC DUP6 DUP4 DUP7 ADD PUSH2 0x43EA JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x44F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4502 DUP5 DUP3 DUP6 ADD PUSH2 0x43EA JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x451F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x452F PUSH2 0x4196 DUP4 PUSH2 0x40E3 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x454E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x458D JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4571 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x457F DUP10 DUP7 DUP4 DUP12 ADD ADD PUSH2 0x4459 JUMP JUMPDEST DUP5 MSTORE POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x4552 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x45AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x45C1 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 0x45DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x45FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4612 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x461E DUP10 DUP4 DUP11 ADD PUSH2 0x450E JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4634 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4640 DUP10 DUP4 DUP11 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4666 DUP9 DUP3 DUP10 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x6 DUP2 LT PUSH2 0x469D JUMPI PUSH2 0x469D PUSH2 0x4677 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x46AC DUP3 DUP3 MLOAD PUSH2 0x468D JUMP JUMPDEST PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MSTORE PUSH1 0x80 SWAP2 DUP3 ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x473A JUMPI DUP2 MLOAD PUSH2 0x470D DUP9 DUP3 MLOAD PUSH2 0x46A1 JUMP JUMPDEST DUP1 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP10 ADD MSTORE PUSH1 0x40 ADD MLOAD PUSH1 0xC0 DUP9 ADD MSTORE PUSH1 0xE0 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x46F8 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x528 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x46E4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x476A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH2 0x160 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x47A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47C8 DUP6 DUP3 DUP7 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x47EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4801 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x480D DUP9 DUP4 DUP10 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4826 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4833 DUP8 DUP3 DUP9 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4852 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4868 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x40 DUP2 DUP7 SUB SLT ISZERO PUSH2 0x487A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x489E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x48B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP7 ADD SWAP1 PUSH1 0xA0 DUP3 DUP10 SUB SLT ISZERO PUSH2 0x48C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x48DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48EC DUP8 DUP3 DUP9 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP6 SWAP9 SWAP1 SWAP8 POP SWAP5 SWAP6 PUSH1 0x40 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x491B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x493E DUP13 DUP4 DUP14 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH1 0x20 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4963 DUP13 DUP4 DUP14 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x40 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x497C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4989 DUP12 DUP3 DUP13 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 SWAP6 SWAP9 SWAP7 SWAP8 PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x80 ADD CALLDATALOAD SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x49E2 JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x49C4 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE PUSH2 0x377 DUP2 DUP7 PUSH2 0x46E4 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x4A09 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x3F97 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4A51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH2 0x240 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x4A82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4A99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4AA5 DUP14 DUP4 DUP15 ADD PUSH2 0x450E JUMP JUMPDEST SWAP11 POP PUSH1 0x20 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4ABB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4AC7 DUP14 DUP4 DUP15 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH1 0x40 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4AE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4AEC DUP14 DUP4 DUP15 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x60 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4B05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B12 DUP13 DUP3 DUP14 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP11 SWAP14 SWAP10 SWAP13 POP SWAP8 SWAP11 SWAP7 SWAP10 SWAP6 SWAP9 SWAP6 SWAP7 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP7 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B42 PUSH2 0x4196 DUP5 PUSH2 0x40E3 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP2 SWAP1 PUSH1 0x5 DUP7 DUP2 SHL DUP7 ADD CALLDATASIZE DUP2 GT ISZERO PUSH2 0x4B60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4C5B JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4B82 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP PUSH1 0xA0 DUP3 CALLDATASIZE SUB SLT ISZERO PUSH2 0x4B98 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x4BA0 PUSH2 0x4068 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE DUP7 DUP4 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x4BB6 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP9 ADD MSTORE PUSH1 0x40 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x4BE2 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP4 SWAP1 SWAP4 ADD SWAP3 CALLDATASIZE PUSH1 0x1F DUP6 ADD SLT PUSH2 0x4BF9 JUMPI PUSH1 0x0 SWAP3 POP DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x4C09 PUSH2 0x4196 DUP5 PUSH2 0x40E3 JUMP JUMPDEST DUP4 DUP2 MSTORE SWAP3 DUP8 SHL DUP5 ADD DUP9 ADD SWAP3 DUP9 DUP2 ADD SWAP1 CALLDATASIZE DUP6 GT ISZERO PUSH2 0x4C26 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP5 DUP10 ADD SWAP5 JUMPDEST DUP5 DUP7 LT ISZERO PUSH2 0x4C44 JUMPI DUP6 CALLDATALOAD DUP3 MSTORE SWAP5 DUP10 ADD SWAP5 SWAP1 DUP10 ADD SWAP1 PUSH2 0x4C2B JUMP JUMPDEST SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 MSTORE POP POP SWAP5 DUP4 ADD SWAP5 DUP4 ADD PUSH2 0x4B62 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4C7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4C99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP PUSH1 0xA0 DUP2 MUL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x45DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4CC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x528 DUP4 DUP4 PUSH2 0x4115 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4CE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4CFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP PUSH1 0xC0 DUP2 MUL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x45DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x528 DUP4 DUP4 PUSH2 0x41EA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x528 DUP3 PUSH2 0x42E0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35A CALLDATASIZE DUP4 PUSH2 0x4459 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 PUSH1 0x3E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4D83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x15E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4D83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x35A CALLDATASIZE DUP4 PUSH2 0x42EF JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4DC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4DE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x45DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x4E2A JUMPI PUSH2 0x4E2A PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MSTORE 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 PUSH2 0x4E52 PUSH2 0x4196 DUP5 PUSH2 0x40E3 JUMP JUMPDEST DUP1 DUP5 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP6 PUSH1 0x5 SHL DUP6 ADD CALLDATASIZE DUP2 GT ISZERO PUSH2 0x4E70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4F0A JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4E91 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP8 ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT PUSH2 0x4EA3 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4EB1 PUSH2 0x4196 DUP3 PUSH2 0x40E3 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x6 SWAP2 SWAP1 SWAP2 SHL DUP3 ADD DUP6 ADD SWAP1 DUP6 DUP2 ADD SWAP1 CALLDATASIZE DUP4 GT ISZERO PUSH2 0x4ED1 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP3 DUP7 ADD SWAP3 JUMPDEST DUP3 DUP5 LT ISZERO PUSH2 0x4EFA JUMPI PUSH2 0x4EE8 CALLDATASIZE DUP6 PUSH2 0x4DF6 JUMP JUMPDEST DUP3 MSTORE DUP7 DUP3 ADD SWAP2 POP PUSH1 0x40 DUP5 ADD SWAP4 POP PUSH2 0x4ED6 JUMP JUMPDEST DUP9 MSTORE POP POP POP SWAP4 DUP3 ADD SWAP4 DUP3 ADD PUSH2 0x4E72 JUMP JUMPDEST POP SWAP2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4F2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4F47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP PUSH1 0x6 DUP2 SWAP1 SHL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x45DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x4F8F JUMPI PUSH2 0x4F8F PUSH2 0x4F5F JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x4FA7 JUMPI PUSH2 0x4FA7 PUSH2 0x4F5F JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x4FBE JUMPI PUSH2 0x4FBE PUSH2 0x4F5F JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x473A JUMPI PUSH2 0x4FEA DUP8 DUP4 MLOAD PUSH2 0x46A1 JUMP JUMPDEST PUSH1 0xA0 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4FD7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP1 DUP4 ADD DUP8 DUP5 MSTORE PUSH1 0x20 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND DUP3 DUP8 ADD MSTORE PUSH1 0x40 DUP5 DUP2 DUP9 ADD MSTORE DUP4 DUP10 MLOAD DUP1 DUP7 MSTORE PUSH1 0xA0 DUP10 ADD SWAP2 POP DUP5 DUP12 ADD SWAP6 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5073 JUMPI DUP7 MLOAD PUSH2 0x5047 DUP5 DUP3 MLOAD PUSH2 0x468D JUMP JUMPDEST DUP1 DUP8 ADD MLOAD DUP7 AND DUP5 DUP9 ADD MSTORE DUP5 DUP2 ADD MLOAD DUP6 DUP6 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 ADD MLOAD SWAP1 DUP5 ADD MSTORE SWAP6 DUP6 ADD SWAP6 SWAP2 DUP8 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x5032 JUMP JUMPDEST POP POP DUP8 DUP2 SUB PUSH1 0x60 DUP10 ADD MSTORE PUSH2 0x5087 DUP2 DUP11 PUSH2 0x4FC3 JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x50A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x528 DUP4 DUP4 PUSH2 0x4DF6 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x473A JUMPI DUP2 MLOAD PUSH2 0x50DC DUP9 DUP3 MLOAD PUSH2 0x468D JUMP JUMPDEST DUP4 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP6 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP10 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP10 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP9 ADD MSTORE PUSH1 0xA0 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x50C7 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x473A JUMPI DUP2 MLOAD PUSH2 0x5146 DUP9 DUP3 MLOAD PUSH2 0x468D JUMP JUMPDEST DUP1 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP10 DUP7 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP11 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP11 ADD MSTORE PUSH1 0x80 DUP1 DUP4 ADD MLOAD SWAP1 DUP11 ADD MSTORE PUSH1 0xA0 SWAP2 DUP3 ADD MLOAD AND SWAP1 DUP9 ADD MSTORE PUSH1 0xC0 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5131 JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x469D JUMPI PUSH2 0x469D PUSH2 0x4677 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x473A JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x51B8 JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x469D JUMPI PUSH2 0x469D PUSH2 0x4677 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MLOAD DUP1 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP6 POP DUP1 DUP3 PUSH1 0x5 SHL DUP5 ADD ADD DUP2 DUP7 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x41DD JUMPI PUSH1 0x1F NOT DUP7 DUP5 SUB ADD DUP10 MSTORE DUP2 MLOAD PUSH1 0xA0 DUP2 MLOAD DUP6 MSTORE DUP6 DUP3 ADD MLOAD PUSH2 0x522A DUP8 DUP8 ADD DUP3 PUSH2 0x51D4 JUMP JUMPDEST POP PUSH1 0x40 DUP3 DUP2 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH1 0x80 SWAP2 DUP3 ADD MLOAD SWAP2 DUP6 ADD DUP2 SWAP1 MSTORE PUSH2 0x5257 DUP2 DUP7 ADD DUP4 PUSH2 0x51A4 JUMP JUMPDEST SWAP11 DUP7 ADD SWAP11 SWAP5 POP POP POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5201 JUMP JUMPDEST DUP6 DUP2 MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x140 DUP6 MLOAD PUSH1 0xA0 DUP1 DUP6 ADD MSTORE PUSH2 0x52A5 DUP3 DUP6 ADD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x160 PUSH2 0x52C1 DUP2 DUP8 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD SWAP2 POP DUP1 PUSH2 0x180 DUP8 ADD MSTORE POP PUSH2 0x52DE PUSH2 0x2A0 DUP7 ADD DUP3 PUSH2 0x50B3 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x13F NOT DUP7 DUP4 SUB ADD PUSH2 0x1A0 DUP8 ADD MSTORE PUSH2 0x52FD DUP3 DUP3 PUSH2 0x511D JUMP JUMPDEST SWAP2 POP POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x5313 PUSH2 0x1C0 DUP8 ADD DUP3 PUSH2 0x5194 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x1E0 DUP7 ADD MSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x200 DUP7 ADD MSTORE PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x220 DUP7 ADD MSTORE PUSH2 0x100 DUP1 DUP4 ADD MLOAD PUSH2 0x240 DUP8 ADD MSTORE PUSH2 0x120 DUP1 DUP5 ADD MLOAD PUSH2 0x260 DUP9 ADD MSTORE DUP5 DUP5 ADD MLOAD PUSH2 0x280 DUP9 ADD MSTORE PUSH1 0x20 DUP11 ADD MLOAD SWAP5 POP PUSH2 0x5375 PUSH1 0xC0 DUP9 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND PUSH1 0xE0 DUP9 ADD MSTORE PUSH1 0x60 DUP11 ADD MLOAD DUP8 DUP5 SUB PUSH1 0x9F NOT SWAP1 DUP2 ADD DUP5 DUP11 ADD MSTORE SWAP1 SWAP6 POP SWAP4 POP PUSH2 0x53A9 DUP4 DUP7 PUSH2 0x3F97 JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP11 ADD MLOAD SWAP3 POP DUP4 DUP8 DUP7 SUB ADD DUP2 DUP9 ADD MSTORE POP POP PUSH2 0x53C7 DUP4 DUP3 PUSH2 0x3F97 JUMP JUMPDEST SWAP3 POP POP POP DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x53DD DUP2 DUP7 PUSH2 0x51A4 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x32E0 DUP2 DUP6 PUSH2 0x51E4 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x35A DUP3 DUP5 PUSH2 0x51D4 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x5A5 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3F97 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD3 GAS 0xE0 0xE3 DUP9 SLT SWAP2 0xD6 0xAB 0x21 0xB7 0xCF PUSH13 0xC4E94D03BC3BB9282E55F663FD EXTCODEHASH SWAP1 EXTCODEHASH AND 0xE3 DUP1 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "1157:26808:0:-:0;;;1586:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1639:17;;;;;;;;;1967:19:23;:17;:19::i;:::-;1760:226;;;;;;;;;;;;;;-1:-1:-1;1760:226:23;;;2087:13;2075:25;;;;-1:-1:-1;2761:187:23;;-1:-1:-1;2761:187:23;;;7454:25:45;;;;7495:18;;;7488:34;;;;-1:-1:-1;7538:18:45;;7531:34;;;;7581:18;;;7574:34;2929:4:23;7624:19:45;;;7617:61;2761:187:23;;;;;;;;;;7426:19:45;;2761:187:23;;;2738:220;;;;;2110:44;;-1:-1:-1;;;;;2213:67:23;;;;;;2420:42;;;-1:-1:-1;;;2420:42:23;;;;:40;;:42;;;;;;;;;;;;;2213:67;2420:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2372:100:23;;-1:-1:-1;;2287:1:24;657:16:36;:31;-1:-1:-1;1157:26808:0;;-1:-1:-1;;;;;;;1157:26808:0;4735:3021:23;4824:16;;;;;;5140:13;3927:22;;;;;;;;;;;;-1:-1:-1;;;3927:22:23;;;;;3804:152;5140:13;5124:31;;;;;;;5252:10;;;;;;;;;;;-1:-1:-1;;;5252:10:23;;;;5384:264;5124:31;;-1:-1:-1;5242:21:23;;-1:-1:-1;;;5384:264:23;;;-1:-1:-1;;;1486:25:45;;-1:-1:-1;;;1536:2:45;1527:12;;1520:39;-1:-1:-1;;;1584:2:45;1575:12;;1568:38;1636:31;1631:2;1622:12;;1615:53;1698:22;1693:2;1684:12;;1677:44;-1:-1:-1;;;1746:2:45;1737:12;;1730:41;-1:-1:-1;;;1796:3:45;1787:13;;1780:26;1831:3;1822:13;;678:1163;5384:264:23;;;;-1:-1:-1;;5384:264:23;;;;;;;;;-1:-1:-1;;;5384:264:23;5785:310;;2755:33:45;-1:-1:-1;;;2804:12:45;;;2797:39;-1:-1:-1;;;2852:12:45;;;2845:38;2913:31;2899:12;;;2892:53;2975:22;2961:12;;;2954:44;-1:-1:-1;;;3014:12:45;;;3007:42;-1:-1:-1;;;3065:13:45;;;3058:42;-1:-1:-1;;;3116:13:45;;;3109:26;;;5785:310:23;;;;;;;;;3151:13:45;;;5785:310:23;;;-1:-1:-1;;;6260:488:23;;;4854:31:45;-1:-1:-1;;;4901:12:45;;;4894:40;-1:-1:-1;;;4950:12:45;;;4943:37;-1:-1:-1;;;4996:12:45;;;4989:42;5061:34;5047:12;;;5040:56;-1:-1:-1;;;5112:12:45;;;5105:26;-1:-1:-1;;;5147:12:45;;;5140:40;-1:-1:-1;;;5196:13:45;;;5189:43;-1:-1:-1;;;5248:13:45;;;5241:41;-1:-1:-1;;;5298:13:45;;;5291:42;-1:-1:-1;;;5349:13:45;;;5342:38;3252:21;5481:13;;;3240:34;-1:-1:-1;;;3290:12:45;;;3373:28;3417:12;;;624:16;5384:264:23;-1:-1:-1;5785:310:23;-1:-1:-1;;656:11:45;;6260:488:23;;;-1:-1:-1;;6260:488:23;;;;;;;;;;-1:-1:-1;;;6260:488:23;6893:248;;6215:28:45;-1:-1:-1;;;6259:12:45;;;6252:36;-1:-1:-1;;;6304:12:45;;;6297:39;-1:-1:-1;;;6352:12:45;;;6345:40;6415:27;6401:12;;;6394:49;-1:-1:-1;;;6459:12:45;;;6452:25;6260:488:23;-1:-1:-1;6493:12:45;;6893:248:23;;;-1:-1:-1;;6893:248:23;;;;;;;;;;6870:281;;6893:248;6870:281;;;;7261:30;;;;;;7409:38;;;;;;6870:281;;-1:-1:-1;7261:30:23;-1:-1:-1;7409:38:23;-1:-1:-1;7577:162:23;;7611:32;;7419:27;;7271:19;;7577:162;;:::i;:::-;;;;;;;;;;;;;7554:195;;;;;;7538:211;;5051:2705;;;4735:3021;;;;;;:::o;14:290:45:-;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:45;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:45:o;309:245::-;388:6;396;449:2;437:9;428:7;424:23;420:32;417:52;;;465:1;462;455:12;417:52;-1:-1:-1;;488:16:45;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:45:o;6516:336::-;6557:3;6595:5;6589:12;6619:1;6629:128;6643:6;6640:1;6637:13;6629:128;;;6740:4;6725:13;;;6721:24;;6715:31;6702:11;;;6695:52;6658:12;6629:128;;;6775:6;6772:1;6769:13;6766:48;;;6810:1;6801:6;6796:3;6792:16;6785:27;6766:48;-1:-1:-1;6830:16:45;;;;;6516:336;-1:-1:-1;;6516:336:45:o;6857:333::-;7078:3;7103:81;7128:55;7153:29;7178:3;7170:6;7153:29;:::i;:::-;7145:6;7128:55;:::i;:::-;7120:6;7103:81;:::i;:::-;7096:88;6857:333;-1:-1:-1;;;;;6857:333:45:o;7195:489::-;1157:26808:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_aggregateAvailable_5290": {
                  "entryPoint": 13120,
                  "id": 5290,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_aggregateValidFulfillmentConsiderationItems_5324": {
                  "entryPoint": 14530,
                  "id": 5324,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_aggregateValidFulfillmentOfferItems_5307": {
                  "entryPoint": 14958,
                  "id": 5307,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_applyCriteriaResolvers_4415": {
                  "entryPoint": 6803,
                  "id": 4415,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_applyFraction_2490": {
                  "entryPoint": 12960,
                  "id": 2490,
                  "parameterSlots": 8,
                  "returnSlots": 1
                },
                "@_applyFractionsAndTransferEach_6943": {
                  "entryPoint": 7696,
                  "id": 6943,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@_applyFulfillment_5207": {
                  "entryPoint": 10722,
                  "id": 5207,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@_assertConsiderationLengthAndGetNoncedOrderHash_2545": {
                  "entryPoint": 5810,
                  "id": 2545,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_assertConsiderationLengthIsNotLessThanOriginalConsiderationLength_2562": {
                  "entryPoint": 12008,
                  "id": 2562,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_assertIsValidOrderStaticcallSuccess_8591": {
                  "entryPoint": 15568,
                  "id": 8591,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_assertNonReentrant_7767": {
                  "entryPoint": 5773,
                  "id": 7767,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_assertNonZeroAmount_2577": {
                  "entryPoint": 14461,
                  "id": 2577,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_assertRestrictedAdvancedOrderValidity_8560": {
                  "entryPoint": 12434,
                  "id": 8560,
                  "parameterSlots": 8,
                  "returnSlots": 0
                },
                "@_assertRestrictedBasicOrderValidity_8439": {
                  "entryPoint": 13340,
                  "id": 8439,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@_assertValidBasicOrderParameterOffsets_2593": {
                  "entryPoint": 13275,
                  "id": 2593,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_assertValidEIP1271Signature_7916": {
                  "entryPoint": 15352,
                  "id": 7916,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_assertValidSignature_7871": {
                  "entryPoint": 12041,
                  "id": 7871,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_callConduitUsingOffsets_4963": {
                  "entryPoint": 13582,
                  "id": 4963,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_callIsValidOrder_8473": {
                  "entryPoint": 15471,
                  "id": 8473,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_cancel_7564": {
                  "entryPoint": 4170,
                  "id": 7564,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_clearReentrancyGuard_7754": {
                  "entryPoint": null,
                  "id": 7754,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_convertOrderToAdvanced_7010": {
                  "entryPoint": 2934,
                  "id": 7010,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_convertOrdersToAdvanced_7062": {
                  "entryPoint": 2747,
                  "id": 7062,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_deriveConduit_5405": {
                  "entryPoint": null,
                  "id": 5405,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_deriveDomainSeparator_3247": {
                  "entryPoint": null,
                  "id": 3247,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_deriveEIP712Digest_5464": {
                  "entryPoint": null,
                  "id": 5464,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_deriveOrderHash_5384": {
                  "entryPoint": 1977,
                  "id": 5384,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_doesNotMatchMagic_5504": {
                  "entryPoint": 15989,
                  "id": 5504,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_doesNotSupportPartialFills_7713": {
                  "entryPoint": null,
                  "id": 7713,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_domainSeparator_5421": {
                  "entryPoint": 8789,
                  "id": 5421,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_emitOrderFulfilledEvent_6987": {
                  "entryPoint": 8212,
                  "id": 6987,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_executeAvailableFulfillments_6207": {
                  "entryPoint": 8313,
                  "id": 6207,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@_fulfillAdvancedOrders_6540": {
                  "entryPoint": 5474,
                  "id": 6540,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@_fulfillAvailableAdvancedOrders_5655": {
                  "entryPoint": 3346,
                  "id": 5655,
                  "parameterSlots": 8,
                  "returnSlots": 2
                },
                "@_getAccumulatorConduitKey_4973": {
                  "entryPoint": null,
                  "id": 4973,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_getFraction_2434": {
                  "entryPoint": 10551,
                  "id": 2434,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@_getNonce_5560": {
                  "entryPoint": null,
                  "id": 5560,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_getOrderStatus_7702": {
                  "entryPoint": null,
                  "id": 7702,
                  "parameterSlots": 1,
                  "returnSlots": 4
                },
                "@_incrementNonce_5545": {
                  "entryPoint": 1884,
                  "id": 5545,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_information_5452": {
                  "entryPoint": 3409,
                  "id": 5452,
                  "parameterSlots": 0,
                  "returnSlots": 3
                },
                "@_insert_5017": {
                  "entryPoint": 14274,
                  "id": 5017,
                  "parameterSlots": 8,
                  "returnSlots": 0
                },
                "@_isItemWithCriteria_4426": {
                  "entryPoint": null,
                  "id": 4426,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_locateCurrentAmount_2396": {
                  "entryPoint": 10631,
                  "id": 2396,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "@_matchAdvancedOrders_6438": {
                  "entryPoint": 1857,
                  "id": 6438,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_name_3255": {
                  "entryPoint": 1826,
                  "id": 3255,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_performERC1155Transfer_7970": {
                  "entryPoint": 14015,
                  "id": 7970,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@_performERC20Transfer_7940": {
                  "entryPoint": 15727,
                  "id": 7940,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_performERC721Transfer_7954": {
                  "entryPoint": 13822,
                  "id": 7954,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_performFinalChecksAndExecuteOrders_6404": {
                  "entryPoint": 11475,
                  "id": 6404,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_prepareBasicFulfillmentFromCalldata_2965": {
                  "entryPoint": 9035,
                  "id": 2965,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_revertWithReasonIfOneIsReturned_5487": {
                  "entryPoint": 15658,
                  "id": 5487,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_setReentrancyGuard_7745": {
                  "entryPoint": 6139,
                  "id": 7745,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_staticcall_5481": {
                  "entryPoint": 15547,
                  "id": 5481,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_transferERC1155_4843": {
                  "entryPoint": 10456,
                  "id": 4843,
                  "parameterSlots": 7,
                  "returnSlots": 0
                },
                "@_transferERC20AndFinalize_3151": {
                  "entryPoint": 10321,
                  "id": 3151,
                  "parameterSlots": 8,
                  "returnSlots": 0
                },
                "@_transferERC20_4722": {
                  "entryPoint": 14402,
                  "id": 4722,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_transferERC721_4784": {
                  "entryPoint": 10244,
                  "id": 4784,
                  "parameterSlots": 7,
                  "returnSlots": 0
                },
                "@_transferEthAndFinalize_3066": {
                  "entryPoint": 10047,
                  "id": 3066,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_transferEth_4663": {
                  "entryPoint": 13036,
                  "id": 4663,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_transferIndividual721Or1155Item_4634": {
                  "entryPoint": 9867,
                  "id": 4634,
                  "parameterSlots": 7,
                  "returnSlots": 0
                },
                "@_transfer_4565": {
                  "entryPoint": 12771,
                  "id": 4565,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_triggerIfArmedAndNotAccumulatable_4867": {
                  "entryPoint": 14243,
                  "id": 4867,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_triggerIfArmed_4892": {
                  "entryPoint": 10510,
                  "id": 4892,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_trigger_4915": {
                  "entryPoint": 14494,
                  "id": 4915,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_validateAndFulfillAdvancedOrder_6676": {
                  "entryPoint": 3105,
                  "id": 6676,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@_validateAndFulfillBasicOrder_2865": {
                  "entryPoint": 3504,
                  "id": 2865,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_validateBasicOrderAndUpdateStatus_7162": {
                  "entryPoint": 13420,
                  "id": 7162,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_validateOrderAndUpdateStatus_7441": {
                  "entryPoint": 6154,
                  "id": 7441,
                  "parameterSlots": 4,
                  "returnSlots": 3
                },
                "@_validateOrdersAndPrepareToFulfill_6016": {
                  "entryPoint": 4683,
                  "id": 6016,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_validate_7670": {
                  "entryPoint": 2303,
                  "id": 7670,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_verifyOrderStatus_8378": {
                  "entryPoint": 5869,
                  "id": 8378,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_verifyProof_4449": {
                  "entryPoint": 12659,
                  "id": 4449,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_verifySignature_8316": {
                  "entryPoint": 6054,
                  "id": 8316,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_verifyTime_8284": {
                  "entryPoint": 12364,
                  "id": 8284,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@cancel_269": {
                  "entryPoint": 1814,
                  "id": 269,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@fulfillAdvancedOrder_101": {
                  "entryPoint": 1566,
                  "id": 101,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@fulfillAvailableAdvancedOrders_192": {
                  "entryPoint": 1768,
                  "id": 192,
                  "parameterSlots": 9,
                  "returnSlots": 2
                },
                "@fulfillAvailableOrders_148": {
                  "entryPoint": 1596,
                  "id": 148,
                  "parameterSlots": 8,
                  "returnSlots": 2
                },
                "@fulfillBasicOrder_48": {
                  "entryPoint": 1757,
                  "id": 48,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@fulfillOrder_76": {
                  "entryPoint": 1453,
                  "id": 76,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getNonce_379": {
                  "entryPoint": 832,
                  "id": 379,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getOrderHash_343": {
                  "entryPoint": 907,
                  "id": 343,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getOrderStatus_363": {
                  "entryPoint": null,
                  "id": 363,
                  "parameterSlots": 1,
                  "returnSlots": 4
                },
                "@incrementNonce_300": {
                  "entryPoint": 897,
                  "id": 300,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@information_394": {
                  "entryPoint": 1733,
                  "id": 394,
                  "parameterSlots": 0,
                  "returnSlots": 3
                },
                "@matchAdvancedOrders_251": {
                  "entryPoint": 864,
                  "id": 251,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@matchOrders_223": {
                  "entryPoint": 1327,
                  "id": 223,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@name_407": {
                  "entryPoint": 817,
                  "id": 407,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@validate_287": {
                  "entryPoint": 1308,
                  "id": 287,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_address": {
                  "entryPoint": 16396,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_array_struct_AdvancedOrder_dyn": {
                  "entryPoint": 17678,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_array_struct_ConsiderationItem_dyn": {
                  "entryPoint": 17021,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata": {
                  "entryPoint": 17816,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_array_struct_OfferItem_dyn": {
                  "entryPoint": 16757,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_bytes": {
                  "entryPoint": 17386,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_enum_ItemType": {
                  "entryPoint": 16646,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_enum_OrderType": {
                  "entryPoint": 17120,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_struct_AdvancedOrder": {
                  "entryPoint": 17497,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_struct_ConsiderationItem": {
                  "entryPoint": 16874,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_struct_FulfillmentComponent": {
                  "entryPoint": 19958,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_struct_OfferItem": {
                  "entryPoint": 16661,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_struct_OrderParameters": {
                  "entryPoint": 17135,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 16412,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payable": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_bytes32t_uint256": {
                  "entryPoint": 19044,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 9
                },
                "abi_decode_tuple_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 17891,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_array$_t_struct$_OrderComponents_$3892_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 18323,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_bytes32t_uint256": {
                  "entryPoint": 18687,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 8
                },
                "abi_decode_tuple_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 18388,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 16441,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_enum$_OrderType_$3815": {
                  "entryPoint": 19760,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_AdvancedOrder_$4031_calldata_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_bytes32": {
                  "entryPoint": 18568,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_struct$_BasicOrderParameters_$3980_calldata_ptr": {
                  "entryPoint": 18985,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_ConsiderationItem_$3918_memory_ptr": {
                  "entryPoint": 19732,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_FulfillmentComponent_$4067_memory_ptr": {
                  "entryPoint": 20631,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_OfferItem_$3904_memory_ptr": {
                  "entryPoint": 19632,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_OrderComponents_$3892_calldata_ptr": {
                  "entryPoint": 18264,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_Order_$4019_calldata_ptrt_bytes32": {
                  "entryPoint": 18495,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_uint120": {
                  "entryPoint": 17363,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_array_bytes32_dyn": {
                  "entryPoint": 20900,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_struct_ConsiderationItem_dyn": {
                  "entryPoint": 20765,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_struct_CriteriaResolver_dyn": {
                  "entryPoint": 20964,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_struct_Execution_dyn": {
                  "entryPoint": 18148,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_struct_OfferItem_dyn": {
                  "entryPoint": 20659,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_struct_ReceivedItem_dyn": {
                  "entryPoint": 20419,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_enum_ItemType": {
                  "entryPoint": 18061,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_enum_OrderType": {
                  "entryPoint": 20884,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_enum_Side": {
                  "entryPoint": 20948,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_string": {
                  "entryPoint": 16279,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_struct_ReceivedItem": {
                  "entryPoint": 18081,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 18855,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 18245,
                  "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_bool_t_bool_t_uint256_t_uint256__to_t_bool_t_bool_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_address_t_bytes32__to_t_bytes32_t_address_t_address_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_array$_t_struct$_SpentItem_$3928_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_ReceivedItem_$3940_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_address_t_array$_t_struct$_SpentItem_$3928_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_ReceivedItem_$3940_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 20477,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_struct$_AdvancedOrder_$4031_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_address_t_struct$_AdvancedOrder_$4031_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 21099,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 21503,
                  "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_enum$_Side_$3857__to_t_uint8__fromStack_reversed": {
                  "entryPoint": 21489,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16356,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr_t_bytes32_t_address__to_t_string_memory_ptr_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": 18934,
                  "id": null,
                  "parameterSlots": 4,
                  "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_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_uint120": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "access_calldata_tail_t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 20246,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_t_array$_t_struct$_ConsiderationItem_$3918_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 19660,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_t_array$_t_struct$_OfferItem_$3904_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 19560,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_t_bytes_calldata_ptr": {
                  "entryPoint": 19888,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_t_struct$_Fulfillment_$4062_calldata_ptr": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "access_calldata_tail_t_struct$_OrderComponents_$3892_calldata_ptr": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "access_calldata_tail_t_struct$_OrderParameters_$4013_calldata_ptr": {
                  "entryPoint": 19853,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "access_calldata_tail_t_struct$_Order_$4019_calldata_ptr": {
                  "entryPoint": 19821,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 16563,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_memory_6027": {
                  "entryPoint": 16488,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "allocate_memory_6029": {
                  "entryPoint": 16528,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "array_allocation_size_array_struct_AdvancedOrder_dyn": {
                  "entryPoint": 16611,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 20372,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 20341,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 20396,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "convert_array_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr": {
                  "entryPoint": 20036,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "convert_array_t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr": {
                  "entryPoint": 19252,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "convert_t_struct$_AdvancedOrder_$4031_calldata_ptr_to_t_struct$_AdvancedOrder_$4031_memory_ptr": {
                  "entryPoint": 19787,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "convert_t_struct$_OrderParameters_$4013_calldata_ptr_to_t_struct$_OrderParameters_$4013_memory_ptr": {
                  "entryPoint": 19876,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 20319,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x21": {
                  "entryPoint": 18039,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 19799,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 16466,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x51": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 16375,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:45889:45",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:45",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "64:422:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "74:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "94:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "88:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "88:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "78:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "116:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "121:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "109:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "109:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "109:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "137:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "146:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "141:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "208:110:45",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "222:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "232:4:45",
                                      "type": "",
                                      "value": "0x20"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "226:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "264:3:45"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "269:1:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "260:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "260:11:45"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "273:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "256:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "256:20:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "292:5:45"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "299:1:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "288:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "288:13:45"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "303:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "284:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "284:22:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "278:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "278:29:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "249:59:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "249:59:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "167:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "170:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "164:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "164:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "178:21:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "180:17:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "189:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "192:4:45",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "185:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "185:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "180:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "160:3:45",
                                "statements": []
                              },
                              "src": "156:162:45"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "352:62:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "381:3:45"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "386:6:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "377:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "377:16:45"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "395:4:45",
                                              "type": "",
                                              "value": "0x20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "373:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "373:27:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "402:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "366:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "366:38:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "366:38:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "333:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "336:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "330:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "330:13:45"
                              },
                              "nodeType": "YulIf",
                              "src": "327:87:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "423:57:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "438:3:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "451:6:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "459:2:45",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "447:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "447:15:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "468:2:45",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "464:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "464:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "443:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "443:29:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "434:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "434:39:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "475:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "430:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "430:50:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "423:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "41:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "48:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "56:3:45",
                            "type": ""
                          }
                        ],
                        "src": "14:472:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "612:99:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "629:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "640:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "622:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "622:21:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "622:21:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "652:53:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "678:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "690:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "701:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "686:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "686:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "660:17:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "660:45:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "652:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "581:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "592:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "603:4:45",
                            "type": ""
                          }
                        ],
                        "src": "491:220:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "761:86:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "825:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "834:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "837:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "827:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "827:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "827:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "784:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "795:5:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "810:3:45",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "815:1:45",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "806:3:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "806:11:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "819:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "802:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "802:19:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "791:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "791:31:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "781:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "781:42:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "774:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "774:50:45"
                              },
                              "nodeType": "YulIf",
                              "src": "771:70:45"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "750:5:45",
                            "type": ""
                          }
                        ],
                        "src": "716:131:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "901:85:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "911:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "933:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "920:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "920:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "911:5:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "974:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "949:24:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "949:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "949:31:45"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "880:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "891:5:45",
                            "type": ""
                          }
                        ],
                        "src": "852:134:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1061:177:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1107:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1116:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1119:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1109:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1109:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1109:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1082:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1091:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1078:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1078:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1103:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1074:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1074:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "1071:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1132:36:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1158:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1145:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1145:23:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1136:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1202:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1177:24:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1177:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1177:31:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1217:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1227:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1217:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1027:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1038:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1050:6:45",
                            "type": ""
                          }
                        ],
                        "src": "991:247:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1344:76:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1354:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1366:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1377:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1362:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1362:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1354:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1396:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1407:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1389:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1389:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1389:25:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1313:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1324:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1335:4:45",
                            "type": ""
                          }
                        ],
                        "src": "1243:177:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1495:110:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1541:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1550:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1553:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1543:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1543:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1543:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1516:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1525:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1512:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1512:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1537:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1508:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1508:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "1505:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1566:33:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1589:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1576:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1576:23:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1566:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1461:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1472:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1484:6:45",
                            "type": ""
                          }
                        ],
                        "src": "1425:180:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1783:238:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1793:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1805:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1816:3:45",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1801:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1801:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1793:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1836:9:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1861:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1854:6:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1854:14:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1847:6:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1847:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1829:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1829:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1829:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1890:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1901:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1886:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1886:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1920:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1913:6:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1913:14:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1906:6:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1906:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1879:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1879:50:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1879:50:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1949:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1960:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1945:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1945:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1965:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1938:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1938:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1938:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1992:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2003:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1988:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1988:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2008:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1981:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1981:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1981:34:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool_t_bool_t_uint256_t_uint256__to_t_bool_t_bool_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1728:9:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1739:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1747:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1755:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1763:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1774:4:45",
                            "type": ""
                          }
                        ],
                        "src": "1610:411:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2058:95:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2075:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2082:3:45",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2087:10:45",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "2078:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2078:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2068:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2068:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2068:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2115:1:45",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2118:4:45",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2108:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2108:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2108:15:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2139:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2142:4:45",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2132:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2132:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2132:15:45"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2026:127:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2204:207:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2214:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2230:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2224:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2224:9:45"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2214:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2242:35:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2264:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2272:4:45",
                                    "type": "",
                                    "value": "0xa0"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2260:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2260:17:45"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2246:10:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2352:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2354:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2354:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2354:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2295:10:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2307:18:45",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2292:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2292:34:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2331:10:45"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2343:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2328:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2328:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2289:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2289:62:45"
                              },
                              "nodeType": "YulIf",
                              "src": "2286:88:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2390:2:45",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2394:10:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2383:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2383:22:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2383:22:45"
                            }
                          ]
                        },
                        "name": "allocate_memory_6027",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "2193:6:45",
                            "type": ""
                          }
                        ],
                        "src": "2158:253:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2462:209:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2472:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2488:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2482:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2482:9:45"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2472:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2500:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2522:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2530:6:45",
                                    "type": "",
                                    "value": "0x0160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2518:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2518:19:45"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2504:10:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2612:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2614:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2614:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2614:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2555:10:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2567:18:45",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2552:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2552:34:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2591:10:45"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2603:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2588:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2588:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2549:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2549:62:45"
                              },
                              "nodeType": "YulIf",
                              "src": "2546:88:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2650:2:45",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2654:10:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2643:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2643:22:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2643:22:45"
                            }
                          ]
                        },
                        "name": "allocate_memory_6029",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "2451:6:45",
                            "type": ""
                          }
                        ],
                        "src": "2416:255:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2721:230:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2731:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2747:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2741:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2741:9:45"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2731:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2759:58:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2781:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "2797:4:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2803:2:45",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2793:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2793:13:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2812:2:45",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "2808:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2808:7:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2789:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2789:27:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2777:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2777:40:45"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2763:10:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2892:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2894:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2894:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2894:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2835:10:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2847:18:45",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2832:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2832:34:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2871:10:45"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2883:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2868:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2868:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2829:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2829:62:45"
                              },
                              "nodeType": "YulIf",
                              "src": "2826:88:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2930:2:45",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2934:10:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2923:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2923:22:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2923:22:45"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "2701:4:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "2710:6:45",
                            "type": ""
                          }
                        ],
                        "src": "2676:275:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3038:114:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3082:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "3084:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3084:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3084:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3054:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3062:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3051:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3051:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "3048:56:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3113:33:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3129:1:45",
                                        "type": "",
                                        "value": "5"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "3132:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "3125:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3125:14:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3141:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3121:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3121:25:45"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "3113:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_array_struct_AdvancedOrder_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "3018:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "3029:4:45",
                            "type": ""
                          }
                        ],
                        "src": "2956:196:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3212:94:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3222:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3244:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3231:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3231:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "3222:5:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3284:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3293:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3296:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3286:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3286:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3286:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3273:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3280:1:45",
                                        "type": "",
                                        "value": "6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3270:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3270:12:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3263:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3263:20:45"
                              },
                              "nodeType": "YulIf",
                              "src": "3260:40:45"
                            }
                          ]
                        },
                        "name": "abi_decode_enum_ItemType",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "3191:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3202:5:45",
                            "type": ""
                          }
                        ],
                        "src": "3157:149:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3377:500:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3421:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3430:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3433:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3423:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3423:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3423:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "3398:3:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3403:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3394:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3394:19:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3415:4:45",
                                    "type": "",
                                    "value": "0xa0"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3390:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3390:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "3387:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3446:31:45",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "allocate_memory_6027",
                                  "nodeType": "YulIdentifier",
                                  "src": "3455:20:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3455:22:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "3446:5:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3493:5:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3525:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_enum_ItemType",
                                      "nodeType": "YulIdentifier",
                                      "src": "3500:24:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3500:35:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3486:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3486:50:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3486:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3545:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3577:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3588:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3573:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3573:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3560:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3560:32:45"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3549:7:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3626:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3601:24:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3601:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3601:33:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3654:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3661:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3650:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3650:14:45"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3666:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3643:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3643:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3643:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3694:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3701:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3690:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3690:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "3723:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3734:2:45",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3719:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3719:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3706:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3706:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3683:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3683:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3683:56:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3759:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3766:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3755:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3755:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "3788:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3799:2:45",
                                            "type": "",
                                            "value": "96"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3784:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3784:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3771:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3771:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3748:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3748:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3748:56:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3824:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3831:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3820:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3820:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "3854:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3865:3:45",
                                            "type": "",
                                            "value": "128"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3850:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3850:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3837:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3837:33:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3813:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3813:58:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3813:58:45"
                            }
                          ]
                        },
                        "name": "abi_decode_struct_OfferItem",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3348:9:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3359:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3367:5:45",
                            "type": ""
                          }
                        ],
                        "src": "3311:566:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3955:655:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4004:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4013:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4016:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4006:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4006:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4006:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "3983:6:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3991:4:45",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3979:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3979:17:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "3998:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3975:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3975:27:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3968:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3968:35:45"
                              },
                              "nodeType": "YulIf",
                              "src": "3965:55:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4029:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4052:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4039:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4039:20:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4033:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4068:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4078:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4072:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4091:84:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4171:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_struct_AdvancedOrder_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "4118:52:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4118:56:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "4102:15:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4102:73:45"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "4095:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4184:16:45",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "4197:3:45"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4188:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "4216:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4221:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4209:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4209:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4209:15:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4233:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "4244:3:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4249:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4240:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4240:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "4233:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4261:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4271:4:45",
                                "type": "",
                                "value": "0xa0"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "4265:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4284:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4306:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "4318:2:45"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "4322:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "4314:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4314:11:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4302:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4302:24:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4328:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4298:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4298:33:45"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "4288:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4359:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4368:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4371:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4361:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4361:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4361:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4346:6:45"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "4354:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4343:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4343:15:45"
                              },
                              "nodeType": "YulIf",
                              "src": "4340:35:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4384:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4399:6:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4407:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4395:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4395:15:45"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "4388:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4475:106:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "4496:3:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "4529:3:45"
                                            },
                                            {
                                              "name": "end",
                                              "nodeType": "YulIdentifier",
                                              "src": "4534:3:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_struct_OfferItem",
                                            "nodeType": "YulIdentifier",
                                            "src": "4501:27:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4501:37:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4489:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4489:50:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4489:50:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4552:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "4563:3:45"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4568:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4559:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4559:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "4552:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "4430:3:45"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4435:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4427:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4427:15:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4443:23:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4445:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "4456:3:45"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "4461:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4452:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4452:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "4445:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4423:3:45",
                                "statements": []
                              },
                              "src": "4419:162:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4590:14:45",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "4599:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "4590:5:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_struct_OfferItem_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "3929:6:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3937:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "3945:5:45",
                            "type": ""
                          }
                        ],
                        "src": "3882:728:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4689:834:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4733:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4742:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4745:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4735:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4735:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4735:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "4710:3:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4715:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4706:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4706:19:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4727:4:45",
                                    "type": "",
                                    "value": "0xc0"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4702:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4702:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "4699:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4758:23:45",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4778:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4772:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4772:9:45"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4762:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4790:35:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4812:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4820:4:45",
                                    "type": "",
                                    "value": "0xc0"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4808:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4808:17:45"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4794:10:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4900:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "4902:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4902:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4902:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4843:10:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4855:18:45",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4840:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4840:34:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4879:10:45"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4891:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4876:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4876:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "4837:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4837:62:45"
                              },
                              "nodeType": "YulIf",
                              "src": "4834:88:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4938:2:45",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4942:10:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4931:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4931:22:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4931:22:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4962:15:45",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "4971:6:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "4962:5:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4993:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5026:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_enum_ItemType",
                                      "nodeType": "YulIdentifier",
                                      "src": "5001:24:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5001:35:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4986:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4986:51:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4986:51:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5046:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5078:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5089:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5074:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5074:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5061:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5061:32:45"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5050:7:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5127:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5102:24:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5102:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5102:33:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5155:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5163:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5151:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5151:15:45"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5168:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5144:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5144:32:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5144:32:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5196:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5204:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5192:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5192:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "5226:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5237:2:45",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5222:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5222:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "5209:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5209:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5185:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5185:57:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5185:57:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5262:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5270:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5258:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5258:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "5292:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5303:2:45",
                                            "type": "",
                                            "value": "96"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5288:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5288:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "5275:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5275:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5251:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5251:57:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5251:57:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5328:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5336:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5324:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5324:16:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "5359:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5370:3:45",
                                            "type": "",
                                            "value": "128"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5355:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5355:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "5342:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5342:33:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5317:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5317:59:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5317:59:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5385:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5417:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5428:3:45",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5413:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5413:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5400:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5400:33:45"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5389:7:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5467:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5442:24:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5442:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5442:33:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5495:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5503:3:45",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5491:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5491:16:45"
                                  },
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5509:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5484:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5484:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5484:33:45"
                            }
                          ]
                        },
                        "name": "abi_decode_struct_ConsiderationItem",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4660:9:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4671:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "4679:5:45",
                            "type": ""
                          }
                        ],
                        "src": "4615:908:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5609:663:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5658:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5667:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5670:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5660:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5660:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5660:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "5637:6:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5645:4:45",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5633:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5633:17:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "5652:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5629:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5629:27:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5622:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5622:35:45"
                              },
                              "nodeType": "YulIf",
                              "src": "5619:55:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5683:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5706:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5693:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5693:20:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5687:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5722:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5732:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5726:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5745:84:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5825:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_struct_AdvancedOrder_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "5772:52:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5772:56:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "5756:15:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5756:73:45"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "5749:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5838:16:45",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "5851:3:45"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5842:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "5870:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5875:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5863:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5863:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5863:15:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5887:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "5898:3:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5903:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5894:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5894:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "5887:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5915:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5925:4:45",
                                "type": "",
                                "value": "0xc0"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "5919:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5938:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "5960:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "5972:2:45"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "5976:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "5968:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5968:11:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5956:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5956:24:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5982:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5952:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5952:33:45"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "5942:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6013:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6022:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6025:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6015:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6015:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6015:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6000:6:45"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "6008:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5997:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5997:15:45"
                              },
                              "nodeType": "YulIf",
                              "src": "5994:35:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6038:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6053:6:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6061:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6049:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6049:15:45"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "6042:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6129:114:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "6150:3:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "6191:3:45"
                                            },
                                            {
                                              "name": "end",
                                              "nodeType": "YulIdentifier",
                                              "src": "6196:3:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_struct_ConsiderationItem",
                                            "nodeType": "YulIdentifier",
                                            "src": "6155:35:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6155:45:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6143:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6143:58:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6143:58:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6214:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "6225:3:45"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6230:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6221:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6221:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "6214:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "6084:3:45"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6089:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6081:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6081:15:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6097:23:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6099:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "6110:3:45"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "6115:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6106:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6106:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "6099:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6077:3:45",
                                "statements": []
                              },
                              "src": "6073:170:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6252:14:45",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "6261:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "6252:5:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_struct_ConsiderationItem_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "5583:6:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "5591:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "5599:5:45",
                            "type": ""
                          }
                        ],
                        "src": "5528:744:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6333:94:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6343:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6365:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6352:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6352:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "6343:5:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6405:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6414:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6417:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6407:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6407:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6407:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6394:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6401:1:45",
                                        "type": "",
                                        "value": "4"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6391:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6391:12:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6384:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6384:20:45"
                              },
                              "nodeType": "YulIf",
                              "src": "6381:40:45"
                            }
                          ]
                        },
                        "name": "abi_decode_enum_OrderType",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "6312:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6323:5:45",
                            "type": ""
                          }
                        ],
                        "src": "6277:150:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6504:1219:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6550:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6559:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6562:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6552:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6552:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6552:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "6525:3:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6530:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6521:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6521:19:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6542:6:45",
                                    "type": "",
                                    "value": "0x0160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6517:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6517:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "6514:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6575:31:45",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "allocate_memory_6029",
                                  "nodeType": "YulIdentifier",
                                  "src": "6584:20:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6584:22:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "6575:5:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6622:5:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6648:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_address",
                                      "nodeType": "YulIdentifier",
                                      "src": "6629:18:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6629:29:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6615:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6615:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6615:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6679:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6686:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6675:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6675:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6714:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6725:2:45",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6710:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6710:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_address",
                                      "nodeType": "YulIdentifier",
                                      "src": "6691:18:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6691:38:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6668:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6668:62:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6668:62:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6739:46:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6770:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6781:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6766:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6766:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6753:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6753:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6743:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6794:28:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6804:18:45",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6798:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6849:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6858:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6861:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6851:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6851:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6851:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6837:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6845:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6834:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6834:14:45"
                              },
                              "nodeType": "YulIf",
                              "src": "6831:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6885:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6892:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6881:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6881:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6939:9:45"
                                          },
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "6950:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6935:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6935:22:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "6959:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_array_struct_OfferItem_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "6897:37:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6897:66:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6874:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6874:90:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6874:90:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6973:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7006:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7017:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7002:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7002:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6989:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6989:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6977:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7050:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7059:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7062:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7052:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7052:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7052:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7036:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7046:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7033:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7033:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "7030:36:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7086:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7093:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7082:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7082:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7148:9:45"
                                          },
                                          {
                                            "name": "offset_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "7159:8:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7144:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7144:24:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "7170:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_array_struct_ConsiderationItem_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "7098:45:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7098:76:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7075:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7075:100:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7075:100:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7195:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7202:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7191:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7191:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7238:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7249:3:45",
                                            "type": "",
                                            "value": "128"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7234:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7234:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_enum_OrderType",
                                      "nodeType": "YulIdentifier",
                                      "src": "7208:25:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7208:46:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7184:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7184:71:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7184:71:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7275:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7282:3:45",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7271:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7271:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7305:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7316:3:45",
                                            "type": "",
                                            "value": "160"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7301:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7301:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "7288:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7288:33:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7264:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7264:58:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7264:58:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7342:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7349:3:45",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7338:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7338:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7372:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7383:3:45",
                                            "type": "",
                                            "value": "192"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7368:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7368:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "7355:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7355:33:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7331:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7331:58:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7331:58:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7409:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7416:3:45",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7405:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7405:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7439:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7450:3:45",
                                            "type": "",
                                            "value": "224"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7435:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7435:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "7422:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7422:33:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7398:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7398:58:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7398:58:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7465:13:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7475:3:45",
                                "type": "",
                                "value": "256"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "7469:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7498:5:45"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "7505:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7494:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7494:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7527:9:45"
                                          },
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7538:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7523:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7523:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "7510:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7510:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7487:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7487:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7487:56:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7552:13:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7562:3:45",
                                "type": "",
                                "value": "288"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "7556:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7585:5:45"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "7592:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7581:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7581:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7614:9:45"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "7625:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7610:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7610:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "7597:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7597:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7574:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7574:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7574:56:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7639:13:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7649:3:45",
                                "type": "",
                                "value": "320"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "7643:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7672:5:45"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7679:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7668:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7668:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7701:9:45"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "7712:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7697:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7697:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "7684:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7684:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7661:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7661:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7661:56:45"
                            }
                          ]
                        },
                        "name": "abi_decode_struct_OrderParameters",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6475:9:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6486:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6494:5:45",
                            "type": ""
                          }
                        ],
                        "src": "6432:1291:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7777:137:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7787:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7809:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7796:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7796:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "7787:5:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7892:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7901:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7904:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7894:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7894:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7894:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7838:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "7849:5:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7856:32:45",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "7845:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7845:44:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "7835:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7835:55:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7828:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7828:63:45"
                              },
                              "nodeType": "YulIf",
                              "src": "7825:83:45"
                            }
                          ]
                        },
                        "name": "abi_decode_uint120",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "7756:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "7767:5:45",
                            "type": ""
                          }
                        ],
                        "src": "7728:186:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7971:478:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8020:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8029:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8032:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8022:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8022:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8022:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "7999:6:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8007:4:45",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7995:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7995:17:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "8014:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7991:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7991:27:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7984:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7984:35:45"
                              },
                              "nodeType": "YulIf",
                              "src": "7981:55:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8045:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8068:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8055:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8055:20:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8049:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8114:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "8116:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8116:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8116:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8090:2:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8094:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8087:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8087:26:45"
                              },
                              "nodeType": "YulIf",
                              "src": "8084:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8145:70:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "8188:2:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8192:4:45",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "8184:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8184:13:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8203:2:45",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "8199:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8199:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "8180:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8180:27:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8209:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8176:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8176:38:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "8160:15:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8160:55:45"
                              },
                              "variables": [
                                {
                                  "name": "array_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8149:7:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8231:7:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8240:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8224:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8224:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8224:19:45"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8291:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8300:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8303:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8293:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8293:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8293:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "8266:6:45"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "8274:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8262:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8262:15:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8279:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8258:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8258:26:45"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "8286:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8255:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8255:35:45"
                              },
                              "nodeType": "YulIf",
                              "src": "8252:55:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8333:7:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8342:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8329:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8329:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "8353:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8361:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8349:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8349:17:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8368:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "8316:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8316:55:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8316:55:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "8395:7:45"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "8404:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8391:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8391:16:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8409:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8387:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8387:27:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8416:1:45",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8380:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8380:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8380:38:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8427:16:45",
                              "value": {
                                "name": "array_1",
                                "nodeType": "YulIdentifier",
                                "src": "8436:7:45"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "8427:5:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "7945:6:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7953:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "7961:5:45",
                            "type": ""
                          }
                        ],
                        "src": "7919:530:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8524:826:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8568:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8577:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8580:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8570:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8570:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8570:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "8545:3:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8550:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8541:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8541:19:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8562:4:45",
                                    "type": "",
                                    "value": "0xa0"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8537:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8537:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "8534:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8593:31:45",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "allocate_memory_6027",
                                  "nodeType": "YulIdentifier",
                                  "src": "8602:20:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8602:22:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "8593:5:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8633:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8660:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8647:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8647:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "8637:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8679:28:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8689:18:45",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8683:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8734:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8743:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8746:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8736:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8736:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8736:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8722:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8730:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8719:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8719:14:45"
                              },
                              "nodeType": "YulIf",
                              "src": "8716:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8766:5:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "8811:9:45"
                                          },
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "8822:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8807:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8807:22:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "8831:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_struct_OrderParameters",
                                      "nodeType": "YulIdentifier",
                                      "src": "8773:33:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8773:62:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8759:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8759:77:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8759:77:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "8856:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8863:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8852:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8852:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "8891:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8902:2:45",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8887:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8887:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint120",
                                      "nodeType": "YulIdentifier",
                                      "src": "8868:18:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8868:38:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8845:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8845:62:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8845:62:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "8927:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8934:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8923:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8923:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "8962:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8973:2:45",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8958:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8958:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint120",
                                      "nodeType": "YulIdentifier",
                                      "src": "8939:18:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8939:38:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8916:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8916:62:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8916:62:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8987:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9020:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9031:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9016:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9016:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9003:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9003:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8991:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9064:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9073:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9076:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9066:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9066:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9066:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9050:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9060:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9047:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9047:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "9044:36:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "9100:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9107:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9096:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9096:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "9133:9:45"
                                          },
                                          {
                                            "name": "offset_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "9144:8:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9129:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9129:24:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "9155:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "9112:16:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9112:47:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9089:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9089:71:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9089:71:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9169:49:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9202:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9213:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9198:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9198:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9185:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9185:33:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "9173:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9247:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9256:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9259:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9249:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9249:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9249:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9233:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9243:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9230:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9230:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "9227:36:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "9283:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9290:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9279:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9279:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "9317:9:45"
                                          },
                                          {
                                            "name": "offset_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "9328:8:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9313:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9313:24:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "9339:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "9296:16:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9296:47:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9272:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9272:72:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9272:72:45"
                            }
                          ]
                        },
                        "name": "abi_decode_struct_AdvancedOrder",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8495:9:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "8506:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "8514:5:45",
                            "type": ""
                          }
                        ],
                        "src": "8454:896:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9432:852:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9481:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9490:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9493:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9483:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9483:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9483:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "9460:6:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9468:4:45",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9456:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9456:17:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "9475:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "9452:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9452:27:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "9445:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9445:35:45"
                              },
                              "nodeType": "YulIf",
                              "src": "9442:55:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9506:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9529:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9516:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9516:20:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9510:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9545:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9555:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "9549:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9568:84:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9648:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_struct_AdvancedOrder_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "9595:52:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9595:56:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "9579:15:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9579:73:45"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "9572:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9661:16:45",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "9674:3:45"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9665:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "9693:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9698:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9686:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9686:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9686:15:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9710:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "9721:3:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9726:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9717:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9717:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "9710:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9738:46:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9760:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9772:1:45",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "9775:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "9768:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9768:10:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9756:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9756:23:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9781:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9752:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9752:32:45"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "9742:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9812:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9821:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9824:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9814:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9814:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9814:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9799:6:45"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "9807:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9796:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9796:15:45"
                              },
                              "nodeType": "YulIf",
                              "src": "9793:35:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9837:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9852:6:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9860:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9848:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9848:15:45"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "9841:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9928:327:45",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "9942:36:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "9974:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "9961:12:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9961:17:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "innerOffset",
                                        "nodeType": "YulTypedName",
                                        "src": "9946:11:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "10042:74:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "10060:11:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10070:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_3",
                                              "nodeType": "YulTypedName",
                                              "src": "10064:2:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "10095:2:45"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "10099:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "10088:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "10088:14:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "10088:14:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "9997:11:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10010:18:45",
                                          "type": "",
                                          "value": "0xffffffffffffffff"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "9994:2:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9994:35:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "9991:125:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "10136:3:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "offset",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "10181:6:45"
                                                    },
                                                    {
                                                      "name": "innerOffset",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "10189:11:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10177:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "10177:24:45"
                                                },
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10203:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "10173:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10173:33:45"
                                            },
                                            {
                                              "name": "end",
                                              "nodeType": "YulIdentifier",
                                              "src": "10208:3:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_struct_AdvancedOrder",
                                            "nodeType": "YulIdentifier",
                                            "src": "10141:31:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10141:71:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10129:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10129:84:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10129:84:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10226:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "10237:3:45"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "10242:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10233:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10233:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "10226:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "9883:3:45"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9888:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9880:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9880:15:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "9896:23:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9898:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "9909:3:45"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9914:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9905:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9905:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "9898:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "9876:3:45",
                                "statements": []
                              },
                              "src": "9872:383:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10264:14:45",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "10273:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "10264:5:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_struct_AdvancedOrder_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "9406:6:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "9414:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "9422:5:45",
                            "type": ""
                          }
                        ],
                        "src": "9355:929:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10398:283:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10447:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10456:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10459:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10449:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10449:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10449:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "10426:6:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10434:4:45",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10422:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10422:17:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "10441:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10418:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10418:27:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "10411:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10411:35:45"
                              },
                              "nodeType": "YulIf",
                              "src": "10408:55:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10472:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10495:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10482:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10482:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "10472:6:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10545:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10554:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10557:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10547:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10547:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10547:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10517:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10525:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10514:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10514:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "10511:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10570:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10586:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10594:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10582:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10582:17:45"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "10570:8:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10659:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10668:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10671:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10661:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10661:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10661:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "10622:6:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10634:1:45",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "10637:6:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "10630:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "10630:14:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10618:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10618:27:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10647:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10614:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10614:38:45"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "10654:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10611:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10611:47:45"
                              },
                              "nodeType": "YulIf",
                              "src": "10608:67:45"
                            }
                          ]
                        },
                        "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "10361:6:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "10369:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "10377:8:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "10387:6:45",
                            "type": ""
                          }
                        ],
                        "src": "10289:392:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10983:863:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11029:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11038:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11041:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11031:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11031:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11031:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11004:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11013:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11000:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11000:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11025:2:45",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10996:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10996:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "10993:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11054:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11081:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11068:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11068:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "11058:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11100:28:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11110:18:45",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11104:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11155:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11164:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11167:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11157:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11157:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11157:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11143:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11151:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11140:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11140:14:45"
                              },
                              "nodeType": "YulIf",
                              "src": "11137:34:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11180:84:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11236:9:45"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "11247:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11232:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11232:22:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11256:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_AdvancedOrder_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "11190:41:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11190:74:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11180:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11273:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11306:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11317:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11302:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11302:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11289:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11289:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11277:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11350:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11359:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11362:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11352:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11352:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11352:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11336:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11346:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11333:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11333:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "11330:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11375:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11468:9:45"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11479:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11464:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11464:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11490:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "11401:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11401:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11379:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11389:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11507:18:45",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "11517:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11507:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11534:18:45",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "11544:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "11534:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11561:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11594:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11605:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11590:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11590:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11577:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11577:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "11565:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11638:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11647:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11650:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11640:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11640:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11640:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11624:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11634:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11621:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11621:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "11618:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11663:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11756:9:45"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "11767:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11752:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11752:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11778:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "11689:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11689:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11667:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11677:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11795:18:45",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "11805:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "11795:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11822:18:45",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "11832:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "11822:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10917:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10928:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10940:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10948:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10956:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "10964:6:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "10972:6:45",
                            "type": ""
                          }
                        ],
                        "src": "10686:1160:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11883:95:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11900:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11907:3:45",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11912:10:45",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "11903:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11903:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11893:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11893:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11893:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11940:1:45",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11943:4:45",
                                    "type": "",
                                    "value": "0x21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11933:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11933:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11933:15:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11964:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11967:4:45",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "11957:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11957:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11957:15:45"
                            }
                          ]
                        },
                        "name": "panic_error_0x21",
                        "nodeType": "YulFunctionDefinition",
                        "src": "11851:127:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12033:89:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12067:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x21",
                                        "nodeType": "YulIdentifier",
                                        "src": "12069:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12069:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12069:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "12056:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12063:1:45",
                                        "type": "",
                                        "value": "6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "12053:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12053:12:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "12046:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12046:20:45"
                              },
                              "nodeType": "YulIf",
                              "src": "12043:46:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12105:3:45"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12110:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12098:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12098:18:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12098:18:45"
                            }
                          ]
                        },
                        "name": "abi_encode_enum_ItemType",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "12017:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "12024:3:45",
                            "type": ""
                          }
                        ],
                        "src": "11983:139:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12171:60:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12188:3:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "12197:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12212:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12217:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "12208:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12208:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "12221:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "12204:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12204:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12193:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12193:31:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12181:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12181:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12181:44:45"
                            }
                          ]
                        },
                        "name": "abi_encode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "12155:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "12162:3:45",
                            "type": ""
                          }
                        ],
                        "src": "12127:104:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12292:380:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "12333:5:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "12327:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12327:12:45"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12341:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_enum_ItemType",
                                  "nodeType": "YulIdentifier",
                                  "src": "12302:24:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12302:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12302:43:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12354:43:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "12384:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12391:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12380:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12380:16:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12374:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12374:23:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0",
                                  "nodeType": "YulTypedName",
                                  "src": "12358:12:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12406:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12424:3:45",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12429:1:45",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "12420:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12420:11:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12433:1:45",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "12416:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12416:19:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12410:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12455:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12460:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12451:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12451:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulIdentifier",
                                        "src": "12471:12:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12485:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12467:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12467:21:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12444:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12444:45:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12444:45:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12509:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12514:4:45",
                                        "type": "",
                                        "value": "0x40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12505:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12505:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "12531:5:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "12538:4:45",
                                            "type": "",
                                            "value": "0x40"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "12527:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12527:16:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "12521:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12521:23:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12498:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12498:47:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12498:47:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12565:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12570:4:45",
                                        "type": "",
                                        "value": "0x60"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12561:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12561:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "12587:5:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "12594:4:45",
                                            "type": "",
                                            "value": "0x60"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "12583:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12583:16:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "12577:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12577:23:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12554:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12554:47:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12554:47:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12621:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12626:4:45",
                                        "type": "",
                                        "value": "0x80"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12617:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12617:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "12647:5:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12654:4:45",
                                                "type": "",
                                                "value": "0x80"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "12643:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12643:16:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "12637:5:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12637:23:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12662:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12633:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12633:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12610:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12610:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12610:56:45"
                            }
                          ]
                        },
                        "name": "abi_encode_struct_ReceivedItem",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "12276:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "12283:3:45",
                            "type": ""
                          }
                        ],
                        "src": "12236:436:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12747:570:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12757:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12777:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12771:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12771:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "12761:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12799:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12804:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12792:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12792:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12792:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12820:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12830:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12824:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12843:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12854:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12859:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12850:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12850:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "12843:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12871:28:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12889:5:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12896:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12885:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12885:14:45"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "12875:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12908:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12917:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "12912:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12976:316:45",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "12990:23:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "13006:6:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "13000:5:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13000:13:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "12994:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "13063:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "13057:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "13057:9:45"
                                        },
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "13068:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_struct_ReceivedItem",
                                        "nodeType": "YulIdentifier",
                                        "src": "13026:30:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13026:46:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13026:46:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "13096:3:45"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "13101:4:45",
                                              "type": "",
                                              "value": "0xa0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "13092:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "13092:14:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_2",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "13122:2:45"
                                                    },
                                                    {
                                                      "name": "_1",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "13126:2:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13118:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "13118:11:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "13112:5:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "13112:18:45"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "13140:3:45",
                                                      "type": "",
                                                      "value": "160"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "13145:1:45",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13136:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "13136:11:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "13149:1:45",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "13132:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "13132:19:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "13108:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "13108:44:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "13085:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13085:68:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13085:68:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "13177:3:45"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "13182:4:45",
                                              "type": "",
                                              "value": "0xc0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "13173:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "13173:14:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "13199:2:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "13203:4:45",
                                                  "type": "",
                                                  "value": "0x40"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "13195:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "13195:13:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "13189:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "13189:20:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "13166:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13166:44:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13166:44:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13223:21:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "13234:3:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13239:4:45",
                                          "type": "",
                                          "value": "0xe0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13230:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13230:14:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "13223:3:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13257:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "13271:6:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13279:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13267:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13267:15:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "13257:6:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "12938:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12941:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12935:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12935:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "12949:18:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12951:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "12960:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12963:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12956:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12956:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "12951:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "12931:3:45",
                                "statements": []
                              },
                              "src": "12927:365:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13301:10:45",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "13308:3:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "13301:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_struct_Execution_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "12724:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "12731:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "12739:3:45",
                            "type": ""
                          }
                        ],
                        "src": "12677:640:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13527:119:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13544:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13555:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13537:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13537:21:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13537:21:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13567:73:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13613:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13625:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13636:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13621:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13621:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_struct_Execution_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "13575:37:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13575:65:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13567:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13496:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13507:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13518:4:45",
                            "type": ""
                          }
                        ],
                        "src": "13322:324:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13756:290:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13802:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13811:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13814:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13804:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13804:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13804:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13777:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13786:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13773:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13773:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13798:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13769:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13769:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "13766:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13827:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13854:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13841:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13841:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "13831:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13907:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13916:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13919:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13909:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13909:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13909:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13879:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13887:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13876:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13876:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "13873:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13932:32:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13946:9:45"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13957:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13942:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13942:22:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13936:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14003:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14012:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14015:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14005:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14005:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14005:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13984:7:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13993:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13980:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13980:16:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13998:3:45",
                                    "type": "",
                                    "value": "352"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13976:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13976:26:45"
                              },
                              "nodeType": "YulIf",
                              "src": "13973:46:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14028:12:45",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "14038:2:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14028:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_OrderComponents_$3892_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13722:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13733:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13745:6:45",
                            "type": ""
                          }
                        ],
                        "src": "13651:395:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14152:76:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14162:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14174:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14185:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14170:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14170:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14162:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14204:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14215:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14197:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14197:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14197:25:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14121:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14132:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14143:4:45",
                            "type": ""
                          }
                        ],
                        "src": "14051:177:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14363:357:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14409:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14418:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14421:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14411:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14411:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14411:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "14384:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14393:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14380:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14380:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14405:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14376:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14376:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "14373:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14434:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14461:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14448:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14448:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "14438:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14514:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14523:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14526:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14516:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14516:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14516:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "14486:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14494:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14483:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14483:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "14480:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14539:121:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14632:9:45"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "14643:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14628:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14628:22:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "14652:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "14565:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14565:95:45"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14543:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14553:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14669:18:45",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "14679:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14669:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14696:18:45",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "14706:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "14696:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14321:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "14332:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14344:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14352:6:45",
                            "type": ""
                          }
                        ],
                        "src": "14233:487:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14820:92:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14830:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14842:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14853:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14838:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14838:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14830:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14872:9:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "14897:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "14890:6:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14890:14:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "14883:6:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14883:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14865:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14865:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14865:41:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14789:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14800:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14811:4:45",
                            "type": ""
                          }
                        ],
                        "src": "14725:187:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15130:666:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15176:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15185:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15188:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15178:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15178:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15178:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "15151:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15160:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15147:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15147:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15172:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15143:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15143:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "15140:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15201:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15228:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15215:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15215:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "15205:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15247:28:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15257:18:45",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15251:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15302:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15311:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15314:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15304:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15304:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15304:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "15290:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15298:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15287:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15287:14:45"
                              },
                              "nodeType": "YulIf",
                              "src": "15284:34:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15327:121:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15420:9:45"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "15431:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15416:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15416:22:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "15440:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "15353:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15353:95:45"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15331:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15341:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15457:18:45",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "15467:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "15457:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15484:18:45",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "15494:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "15484:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15511:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15544:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15555:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15540:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15540:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15527:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15527:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15515:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15588:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15597:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15600:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15590:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15590:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15590:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15574:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15584:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15571:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15571:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "15568:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15613:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15706:9:45"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15717:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15702:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15702:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "15728:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "15639:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15639:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15617:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15627:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15745:18:45",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "15755:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "15745:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15772:18:45",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "15782:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "15772:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15072:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "15083:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15095:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15103:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "15111:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "15119:6:45",
                            "type": ""
                          }
                        ],
                        "src": "14917:879:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15913:340:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15959:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15968:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15971:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15961:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15961:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15961:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "15934:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15943:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15930:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15930:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15955:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15926:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15926:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "15923:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15984:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16011:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15998:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15998:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "15988:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16064:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16073:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16076:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16066:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16066:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16066:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "16036:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16044:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16033:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16033:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "16030:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16089:32:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16103:9:45"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "16114:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16099:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16099:22:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16093:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16159:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16168:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16171:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16161:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16161:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16161:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "16141:7:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16150:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16137:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16137:16:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16155:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16133:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16133:25:45"
                              },
                              "nodeType": "YulIf",
                              "src": "16130:45:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16184:12:45",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "16194:2:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "16184:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16205:42:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16232:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16243:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16228:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16228:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16215:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16215:32:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "16205:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_Order_$4019_calldata_ptrt_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15871:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "15882:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15894:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15902:6:45",
                            "type": ""
                          }
                        ],
                        "src": "15801:452:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16466:650:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16512:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16521:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16524:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16514:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16514:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16514:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "16487:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16496:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16483:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16483:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16508:2:45",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16479:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16479:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "16476:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16537:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16564:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16551:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16551:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "16541:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16583:28:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16593:18:45",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16587:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16638:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16647:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16650:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16640:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16640:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16640:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "16626:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16634:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16623:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16623:14:45"
                              },
                              "nodeType": "YulIf",
                              "src": "16620:34:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16663:32:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16677:9:45"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "16688:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16673:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16673:22:45"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "16667:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16734:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16743:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16746:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16736:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16736:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16736:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "16715:7:45"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "16724:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16711:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16711:16:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16729:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16707:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16707:26:45"
                              },
                              "nodeType": "YulIf",
                              "src": "16704:46:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16759:12:45",
                              "value": {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "16769:2:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "16759:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16780:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16813:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16824:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16809:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16809:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16796:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16796:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16784:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16857:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16866:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16869:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16859:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16859:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16859:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16843:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16853:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16840:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16840:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "16837:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16882:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16975:9:45"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16986:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16971:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16971:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "16997:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "16908:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16908:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16886:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16896:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17014:18:45",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "17024:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "17014:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17041:18:45",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "17051:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "17041:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17068:42:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17095:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17106:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17091:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17091:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "17078:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17078:32:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "17068:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_AdvancedOrder_$4031_calldata_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16408:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "16419:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16431:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16439:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "16447:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "16455:6:45",
                            "type": ""
                          }
                        ],
                        "src": "16258:858:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17523:1058:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17570:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17579:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17582:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "17572:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17572:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17572:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "17544:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17553:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "17540:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17540:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17565:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17536:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17536:33:45"
                              },
                              "nodeType": "YulIf",
                              "src": "17533:53:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17595:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17622:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "17609:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17609:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "17599:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17641:28:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17651:18:45",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17645:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17696:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17705:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17708:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "17698:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17698:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17698:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "17684:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17692:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17681:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17681:14:45"
                              },
                              "nodeType": "YulIf",
                              "src": "17678:34:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17721:121:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17814:9:45"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "17825:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17810:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17810:22:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "17834:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "17747:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17747:95:45"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17725:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17735:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17851:18:45",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "17861:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "17851:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17878:18:45",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "17888:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "17878:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17905:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17938:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17949:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17934:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17934:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "17921:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17921:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17909:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17982:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17991:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17994:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "17984:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17984:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17984:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17968:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17978:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17965:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17965:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "17962:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18007:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18100:9:45"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18111:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18096:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18096:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "18122:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "18033:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18033:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18011:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18021:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18139:18:45",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "18149:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "18139:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18166:18:45",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "18176:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "18166:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18193:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18226:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18237:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18222:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18222:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18209:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18209:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "18197:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18270:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18279:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18282:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "18272:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18272:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18272:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "18256:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18266:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "18253:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18253:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "18250:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18295:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18388:9:45"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18399:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18384:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18384:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "18410:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "18321:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18321:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18299:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value5_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18309:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18427:18:45",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "18437:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "18427:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18454:18:45",
                              "value": {
                                "name": "value5_1",
                                "nodeType": "YulIdentifier",
                                "src": "18464:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "18454:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18481:42:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18508:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18519:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18504:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18504:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18491:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18491:32:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "18481:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18532:43:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18559:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18570:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18555:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18555:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18542:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18542:33:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value7",
                                  "nodeType": "YulIdentifier",
                                  "src": "18532:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_bytes32t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17433:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "17444:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17456:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17464:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17472:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "17480:6:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "17488:6:45",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "17496:6:45",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "17504:6:45",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "17512:6:45",
                            "type": ""
                          }
                        ],
                        "src": "17121:1460:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18863:602:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18873:32:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18891:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18902:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18887:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18887:18:45"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18877:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18921:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18932:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18914:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18914:21:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18914:21:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18944:17:45",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "18955:6:45"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "18948:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18970:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18990:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18984:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18984:13:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "18974:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19013:6:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "19021:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19006:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19006:22:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19006:22:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19037:25:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19048:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19059:2:45",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19044:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19044:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "19037:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19071:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19081:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19075:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19094:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "19112:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19120:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19108:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19108:15:45"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "19098:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19132:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19141:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "19136:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19200:136:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "19221:3:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "srcPtr",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "19246:6:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "19240:5:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "19240:13:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "iszero",
                                                "nodeType": "YulIdentifier",
                                                "src": "19233:6:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "19233:21:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "19226:6:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "19226:29:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "19214:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19214:42:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19214:42:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "19269:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "19280:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "19285:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "19276:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19276:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "19269:3:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "19301:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "19315:6:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "19323:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "19311:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19311:15:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "19301:6:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "19162:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "19165:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19159:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19159:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "19173:18:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "19175:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "19184:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19187:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "19180:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19180:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "19175:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "19155:3:45",
                                "statements": []
                              },
                              "src": "19151:185:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19356:9:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19367:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19352:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19352:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "19376:3:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19381:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "19372:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19372:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19345:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19345:47:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19345:47:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19401:58:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19447:6:45"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "19455:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_struct_Execution_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "19409:37:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19409:50:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19401:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18824:9:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18835:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18843:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18854:4:45",
                            "type": ""
                          }
                        ],
                        "src": "18586:879:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19647:211:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19664:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19675:2:45",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19657:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19657:21:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19657:21:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19687:53:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "19713:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19725:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19736:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19721:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19721:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "19695:17:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19695:45:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19687:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19760:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19771:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19756:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19756:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19776:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19749:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19749:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19749:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19803:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19814:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19799:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19799:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "19823:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "19839:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "19844:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "19835:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "19835:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "19848:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "19831:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19831:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19819:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19819:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19792:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19792:60:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19792:60:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr_t_bytes32_t_address__to_t_string_memory_ptr_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19600:9:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "19611:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19619:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19627:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19638:4:45",
                            "type": ""
                          }
                        ],
                        "src": "19470:388:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19973:290:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20019:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20028:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20031:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20021:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20021:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20021:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "19994:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20003:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "19990:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19990:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20015:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19986:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19986:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "19983:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20044:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20071:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "20058:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20058:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "20048:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20124:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20133:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20136:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20126:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20126:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20126:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "20096:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20104:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20093:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20093:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "20090:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20149:32:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20163:9:45"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "20174:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20159:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20159:22:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20153:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20220:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20229:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20232:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20222:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20222:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20222:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "20201:7:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20210:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "20197:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20197:16:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20215:3:45",
                                    "type": "",
                                    "value": "576"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20193:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20193:26:45"
                              },
                              "nodeType": "YulIf",
                              "src": "20190:46:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20245:12:45",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "20255:2:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "20245:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19939:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "19950:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19962:6:45",
                            "type": ""
                          }
                        ],
                        "src": "19863:400:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20754:1256:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20801:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20810:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20813:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20803:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20803:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20803:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "20775:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20784:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "20771:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20771:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20796:3:45",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20767:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20767:33:45"
                              },
                              "nodeType": "YulIf",
                              "src": "20764:53:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20826:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20853:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "20840:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20840:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "20830:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20872:28:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "20882:18:45",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20876:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20927:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20936:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20939:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20929:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20929:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20929:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "20915:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20923:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20912:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20912:14:45"
                              },
                              "nodeType": "YulIf",
                              "src": "20909:34:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20952:84:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21008:9:45"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "21019:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21004:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21004:22:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "21028:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_AdvancedOrder_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "20962:41:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20962:74:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "20952:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21045:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21078:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21089:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21074:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21074:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21061:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21061:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21049:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21122:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21131:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21134:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21124:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21124:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21124:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21108:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21118:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21105:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21105:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "21102:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21147:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21240:9:45"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "21251:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21236:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21236:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "21262:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "21173:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21173:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21151:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21161:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21279:18:45",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "21289:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "21279:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21306:18:45",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "21316:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "21306:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21333:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21366:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21377:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21362:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21362:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21349:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21349:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "21337:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21410:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21419:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21422:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21412:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21412:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21412:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "21396:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21406:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21393:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21393:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "21390:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21435:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21528:9:45"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "21539:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21524:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21524:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "21550:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "21461:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21461:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21439:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21449:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21567:18:45",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "21577:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "21567:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21594:18:45",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "21604:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "21594:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21621:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21654:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21665:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21650:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21650:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21637:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21637:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_3",
                                  "nodeType": "YulTypedName",
                                  "src": "21625:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21698:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21707:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21710:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21700:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21700:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21700:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "21684:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21694:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21681:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21681:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "21678:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21723:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21816:9:45"
                                      },
                                      {
                                        "name": "offset_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "21827:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21812:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21812:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "21838:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "21749:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21749:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value5_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21727:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value6_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21737:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21855:18:45",
                              "value": {
                                "name": "value5_1",
                                "nodeType": "YulIdentifier",
                                "src": "21865:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "21855:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21882:18:45",
                              "value": {
                                "name": "value6_1",
                                "nodeType": "YulIdentifier",
                                "src": "21892:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "21882:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21909:43:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21936:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21947:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21932:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21932:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21919:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21919:33:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value7",
                                  "nodeType": "YulIdentifier",
                                  "src": "21909:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21961:43:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21988:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21999:3:45",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21984:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21984:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21971:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21971:33:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value8",
                                  "nodeType": "YulIdentifier",
                                  "src": "21961:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_bytes32t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20656:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "20667:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20679:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20687:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "20695:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "20703:6:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "20711:6:45",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "20719:6:45",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "20727:6:45",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "20735:6:45",
                            "type": ""
                          },
                          {
                            "name": "value8",
                            "nodeType": "YulTypedName",
                            "src": "20743:6:45",
                            "type": ""
                          }
                        ],
                        "src": "20268:1742:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22155:357:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22201:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22210:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22213:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22203:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22203:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22203:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "22176:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22185:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "22172:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22172:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22197:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "22168:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22168:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "22165:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22226:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22253:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22240:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22240:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "22230:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22306:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22315:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22318:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22308:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22308:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22308:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "22278:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22286:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "22275:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22275:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "22272:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22331:121:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22424:9:45"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "22435:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22420:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22420:22:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "22444:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "22357:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22357:95:45"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22335:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22345:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22461:18:45",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "22471:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "22461:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22488:18:45",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "22498:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "22488:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_OrderComponents_$3892_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22113:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "22124:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "22136:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "22144:6:45",
                            "type": ""
                          }
                        ],
                        "src": "22015:497:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22717:2510:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22727:88:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "22807:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_struct_AdvancedOrder_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "22754:52:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22754:60:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "22738:15:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22738:77:45"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "22731:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22824:16:45",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "22837:3:45"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22828:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "22856:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "22861:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22849:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22849:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22849:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22877:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22887:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22881:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22900:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "22911:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22916:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22907:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22907:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "22900:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22928:11:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22938:1:45",
                                "type": "",
                                "value": "5"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "22932:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22948:41:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "22966:5:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "22977:2:45"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "22981:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "22973:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22973:15:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22962:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22962:27:45"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "22952:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "23028:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23037:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23040:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "23030:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23030:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23030:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "23004:6:45"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "23012:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23012:14:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "23001:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23001:26:45"
                              },
                              "nodeType": "YulIf",
                              "src": "22998:46:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23053:16:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "23064:5:45"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "23057:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "23134:2060:45",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "23148:36:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "23180:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "23167:12:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23167:17:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "innerOffset",
                                        "nodeType": "YulTypedName",
                                        "src": "23152:11:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "23197:28:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "23207:18:45",
                                      "type": "",
                                      "value": "0xffffffffffffffff"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "23201:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "23273:74:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "23291:11:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "23301:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_4",
                                              "nodeType": "YulTypedName",
                                              "src": "23295:2:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "23326:2:45"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "23330:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "23319:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "23319:14:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "23319:14:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "23244:11:45"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "23257:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "23241:2:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23241:19:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "23238:109:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "23360:33:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "23374:5:45"
                                        },
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "23381:11:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "23370:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23370:23:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulTypedName",
                                        "src": "23364:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "23456:74:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "23474:11:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "23484:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_6",
                                              "nodeType": "YulTypedName",
                                              "src": "23478:2:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_6",
                                                "nodeType": "YulIdentifier",
                                                "src": "23509:2:45"
                                              },
                                              {
                                                "name": "_6",
                                                "nodeType": "YulIdentifier",
                                                "src": "23513:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "23502:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "23502:14:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "23502:14:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "calldatasize",
                                                "nodeType": "YulIdentifier",
                                                "src": "23417:12:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "23417:14:45"
                                            },
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "23433:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "23413:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23413:23:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23438:4:45",
                                          "type": "",
                                          "value": "0xa0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "slt",
                                        "nodeType": "YulIdentifier",
                                        "src": "23409:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23409:34:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "23406:124:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "23543:37:45",
                                    "value": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "allocate_memory_6027",
                                        "nodeType": "YulIdentifier",
                                        "src": "23558:20:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23558:22:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulTypedName",
                                        "src": "23547:7:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "23600:7:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "23622:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "23609:12:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23609:16:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "23593:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23593:33:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23593:33:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "23639:40:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "23671:2:45"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "23675:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "23667:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23667:11:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "23654:12:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23654:25:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "value_2",
                                        "nodeType": "YulTypedName",
                                        "src": "23643:7:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "23730:74:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "23748:11:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "23758:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_7",
                                              "nodeType": "YulTypedName",
                                              "src": "23752:2:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_7",
                                                "nodeType": "YulIdentifier",
                                                "src": "23783:2:45"
                                              },
                                              {
                                                "name": "_7",
                                                "nodeType": "YulIdentifier",
                                                "src": "23787:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "23776:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "23776:14:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "23776:14:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "23705:7:45"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "23714:1:45",
                                              "type": "",
                                              "value": "2"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "23702:2:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23702:14:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "23695:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23695:22:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "23692:112:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "23828:7:45"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "23837:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "23824:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23824:16:45"
                                        },
                                        {
                                          "name": "value_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "23842:7:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "23817:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23817:33:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23817:33:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "23863:12:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "23873:2:45",
                                      "type": "",
                                      "value": "64"
                                    },
                                    "variables": [
                                      {
                                        "name": "_8",
                                        "nodeType": "YulTypedName",
                                        "src": "23867:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "23899:7:45"
                                            },
                                            {
                                              "name": "_8",
                                              "nodeType": "YulIdentifier",
                                              "src": "23908:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "23895:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23895:16:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "23930:2:45"
                                                },
                                                {
                                                  "name": "_8",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "23934:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "23926:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "23926:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "23913:12:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23913:25:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "23888:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23888:51:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23888:51:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "23952:12:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "23962:2:45",
                                      "type": "",
                                      "value": "96"
                                    },
                                    "variables": [
                                      {
                                        "name": "_9",
                                        "nodeType": "YulTypedName",
                                        "src": "23956:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "23988:7:45"
                                            },
                                            {
                                              "name": "_9",
                                              "nodeType": "YulIdentifier",
                                              "src": "23997:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "23984:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23984:16:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24019:2:45"
                                                },
                                                {
                                                  "name": "_9",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24023:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "24015:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "24015:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "24002:12:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24002:25:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "23977:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23977:51:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23977:51:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24041:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "24052:3:45",
                                      "type": "",
                                      "value": "128"
                                    },
                                    "variables": [
                                      {
                                        "name": "_10",
                                        "nodeType": "YulTypedName",
                                        "src": "24045:3:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24068:40:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "24099:2:45"
                                            },
                                            {
                                              "name": "_10",
                                              "nodeType": "YulIdentifier",
                                              "src": "24103:3:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "24095:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24095:12:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "24082:12:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24082:26:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulTypedName",
                                        "src": "24072:6:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "24151:77:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "24169:12:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "24180:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_11",
                                              "nodeType": "YulTypedName",
                                              "src": "24173:3:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_11",
                                                "nodeType": "YulIdentifier",
                                                "src": "24205:3:45"
                                              },
                                              {
                                                "name": "_11",
                                                "nodeType": "YulIdentifier",
                                                "src": "24210:3:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "24198:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "24198:16:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "24198:16:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "offset",
                                          "nodeType": "YulIdentifier",
                                          "src": "24127:6:45"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "24135:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "24124:2:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24124:14:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "24121:107:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24241:26:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_5",
                                          "nodeType": "YulIdentifier",
                                          "src": "24256:2:45"
                                        },
                                        {
                                          "name": "offset",
                                          "nodeType": "YulIdentifier",
                                          "src": "24260:6:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "24252:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24252:15:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_12",
                                        "nodeType": "YulTypedName",
                                        "src": "24245:3:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "24339:77:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "24357:12:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "24368:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_13",
                                              "nodeType": "YulTypedName",
                                              "src": "24361:3:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_13",
                                                "nodeType": "YulIdentifier",
                                                "src": "24393:3:45"
                                              },
                                              {
                                                "name": "_13",
                                                "nodeType": "YulIdentifier",
                                                "src": "24398:3:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "24386:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "24386:16:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "24386:16:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_12",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24298:3:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "24303:4:45",
                                                  "type": "",
                                                  "value": "0x1f"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "24294:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "24294:14:45"
                                            },
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "calldatasize",
                                                "nodeType": "YulIdentifier",
                                                "src": "24310:12:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "24310:14:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "24290:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24290:35:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "24283:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24283:43:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "24280:136:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24429:28:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_12",
                                          "nodeType": "YulIdentifier",
                                          "src": "24453:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "24440:12:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24440:17:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_14",
                                        "nodeType": "YulTypedName",
                                        "src": "24433:3:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24470:87:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_14",
                                              "nodeType": "YulIdentifier",
                                              "src": "24552:3:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_allocation_size_array_struct_AdvancedOrder_dyn",
                                            "nodeType": "YulIdentifier",
                                            "src": "24499:52:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24499:57:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "allocate_memory",
                                        "nodeType": "YulIdentifier",
                                        "src": "24483:15:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24483:74:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "dst_2",
                                        "nodeType": "YulTypedName",
                                        "src": "24474:5:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24570:18:45",
                                    "value": {
                                      "name": "dst_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "24583:5:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "dst_3",
                                        "nodeType": "YulTypedName",
                                        "src": "24574:5:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "24608:5:45"
                                        },
                                        {
                                          "name": "_14",
                                          "nodeType": "YulIdentifier",
                                          "src": "24615:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "24601:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24601:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24601:18:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "24632:23:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "24645:5:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "24652:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "24641:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24641:14:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "24632:5:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24668:47:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_12",
                                              "nodeType": "YulIdentifier",
                                              "src": "24692:3:45"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24701:2:45"
                                                },
                                                {
                                                  "name": "_14",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24705:3:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "shl",
                                                "nodeType": "YulIdentifier",
                                                "src": "24697:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "24697:12:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "24688:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24688:22:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "24712:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "24684:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24684:31:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "srcEnd_1",
                                        "nodeType": "YulTypedName",
                                        "src": "24672:8:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "24772:77:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "24790:12:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "24801:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_15",
                                              "nodeType": "YulTypedName",
                                              "src": "24794:3:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_15",
                                                "nodeType": "YulIdentifier",
                                                "src": "24826:3:45"
                                              },
                                              {
                                                "name": "_15",
                                                "nodeType": "YulIdentifier",
                                                "src": "24831:3:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "24819:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "24819:16:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "24819:16:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "srcEnd_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "24734:8:45"
                                        },
                                        {
                                          "arguments": [],
                                          "functionName": {
                                            "name": "calldatasize",
                                            "nodeType": "YulIdentifier",
                                            "src": "24744:12:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24744:14:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "24731:2:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24731:28:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "24728:121:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24862:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_12",
                                          "nodeType": "YulIdentifier",
                                          "src": "24879:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "24884:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "24875:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24875:12:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "src_1",
                                        "nodeType": "YulTypedName",
                                        "src": "24866:5:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "24968:106:45",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "dst_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "24993:5:45"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "src_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "25013:5:45"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "calldataload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "25000:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "25000:19:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "24986:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "24986:34:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "24986:34:45"
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "25037:23:45",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "dst_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "25050:5:45"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "25057:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "25046:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "25046:14:45"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "dst_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "25037:5:45"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "src_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "24911:5:45"
                                        },
                                        {
                                          "name": "srcEnd_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "24918:8:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "24908:2:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24908:19:45"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "24928:27:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "24930:23:45",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "src_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "24943:5:45"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "24950:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "24939:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "24939:14:45"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "src_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "24930:5:45"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "24904:3:45",
                                      "statements": []
                                    },
                                    "src": "24900:174:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "25098:7:45"
                                            },
                                            {
                                              "name": "_10",
                                              "nodeType": "YulIdentifier",
                                              "src": "25107:3:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "25094:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "25094:17:45"
                                        },
                                        {
                                          "name": "dst_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "25113:5:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "25087:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25087:32:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25087:32:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "25139:3:45"
                                        },
                                        {
                                          "name": "value_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "25144:7:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "25132:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25132:20:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25132:20:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "25165:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "25176:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "25181:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "25172:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25172:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "25165:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "23089:3:45"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "23094:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "23086:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23086:15:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "23102:23:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "23104:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "23115:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "23120:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "23111:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23111:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "23104:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "23082:3:45",
                                "statements": []
                              },
                              "src": "23078:2116:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25203:18:45",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "25216:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "converted",
                                  "nodeType": "YulIdentifier",
                                  "src": "25203:9:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "convert_array_t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "22685:5:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "22692:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "converted",
                            "nodeType": "YulTypedName",
                            "src": "22703:9:45",
                            "type": ""
                          }
                        ],
                        "src": "22517:2710:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25371:438:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25381:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "25420:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25407:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25407:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "25385:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "25521:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25530:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25533:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "25523:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25523:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25523:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "25455:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "25483:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "25483:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "25499:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "25479:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "25479:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "25514:2:45",
                                                "type": "",
                                                "value": "30"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "25510:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "25510:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "25475:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25475:43:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "25451:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25451:68:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "25444:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25444:76:45"
                              },
                              "nodeType": "YulIf",
                              "src": "25441:96:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25546:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "25564:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "25574:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25560:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25560:33:45"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25550:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25602:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25625:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25612:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25612:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "25602:6:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "25675:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25684:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25687:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "25677:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25677:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25677:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25647:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25655:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "25644:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25644:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "25641:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25700:25:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25712:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25720:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25708:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25708:17:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "25700:4:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "25787:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25796:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25799:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "25789:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25789:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25789:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "25741:4:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "25751:12:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25751:14:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "25771:6:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "25779:4:45",
                                            "type": "",
                                            "value": "0xa0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "25767:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25767:17:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "25747:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25747:38:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "25737:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25737:49:45"
                              },
                              "nodeType": "YulIf",
                              "src": "25734:69:45"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_array$_t_struct$_OfferItem_$3904_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "25328:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "25338:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "25354:4:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "25360:6:45",
                            "type": ""
                          }
                        ],
                        "src": "25232:577:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25911:135:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "25958:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25967:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25970:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "25960:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25960:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25960:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "25932:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25941:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "25928:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25928:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25953:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "25924:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25924:33:45"
                              },
                              "nodeType": "YulIf",
                              "src": "25921:53:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25983:57:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26021:9:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "26032:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_struct_OfferItem",
                                  "nodeType": "YulIdentifier",
                                  "src": "25993:27:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25993:47:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "25983:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_OfferItem_$3904_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25877:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "25888:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "25900:6:45",
                            "type": ""
                          }
                        ],
                        "src": "25814:232:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26198:438:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "26208:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "26247:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "26234:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26234:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "26212:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "26348:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26357:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26360:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "26350:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "26350:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "26350:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "26282:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "26310:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "26310:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "26326:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "26306:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "26306:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "26341:2:45",
                                                "type": "",
                                                "value": "30"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "26337:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "26337:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "26302:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "26302:43:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "26278:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26278:68:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "26271:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26271:76:45"
                              },
                              "nodeType": "YulIf",
                              "src": "26268:96:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "26373:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "26391:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "26401:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26387:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26387:33:45"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "26377:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26429:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26452:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "26439:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26439:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "26429:6:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "26502:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26511:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26514:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "26504:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "26504:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "26504:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "26474:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26482:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "26471:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26471:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "26468:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26527:25:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26539:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26547:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26535:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26535:17:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "26527:4:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "26614:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26623:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26626:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "26616:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "26616:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "26616:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "26568:4:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "26578:12:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "26578:14:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "26598:6:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "26606:4:45",
                                            "type": "",
                                            "value": "0xc0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "26594:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "26594:17:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "26574:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26574:38:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "26564:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26564:49:45"
                              },
                              "nodeType": "YulIf",
                              "src": "26561:69:45"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_array$_t_struct$_ConsiderationItem_$3918_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "26155:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "26165:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "26181:4:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "26187:6:45",
                            "type": ""
                          }
                        ],
                        "src": "26051:585:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26746:143:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "26793:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26802:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26805:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "26795:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "26795:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "26795:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "26767:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26776:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "26763:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26763:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26788:3:45",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "26759:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26759:33:45"
                              },
                              "nodeType": "YulIf",
                              "src": "26756:53:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26818:65:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26864:9:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "26875:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_struct_ConsiderationItem",
                                  "nodeType": "YulIdentifier",
                                  "src": "26828:35:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26828:55:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "26818:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_ConsiderationItem_$3918_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26712:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "26723:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "26735:6:45",
                            "type": ""
                          }
                        ],
                        "src": "26641:248:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26978:123:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27024:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27033:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27036:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "27026:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27026:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27026:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "26999:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27008:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "26995:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26995:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27020:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "26991:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26991:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "26988:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27049:46:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27085:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_enum_OrderType",
                                  "nodeType": "YulIdentifier",
                                  "src": "27059:25:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27059:36:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "27049:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_enum$_OrderType_$3815",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26944:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "26955:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "26967:6:45",
                            "type": ""
                          }
                        ],
                        "src": "26894:207:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27234:83:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "27244:67:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "27289:5:45"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "27296:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27296:14:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_struct_AdvancedOrder",
                                  "nodeType": "YulIdentifier",
                                  "src": "27257:31:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27257:54:45"
                              },
                              "variableNames": [
                                {
                                  "name": "converted",
                                  "nodeType": "YulIdentifier",
                                  "src": "27244:9:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "convert_t_struct$_AdvancedOrder_$4031_calldata_ptr_to_t_struct$_AdvancedOrder_$4031_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "27210:5:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "converted",
                            "nodeType": "YulTypedName",
                            "src": "27220:9:45",
                            "type": ""
                          }
                        ],
                        "src": "27106:211:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27354:95:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27371:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27378:3:45",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27383:10:45",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "27374:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27374:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27364:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27364:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27364:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27411:1:45",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27414:4:45",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27404:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27404:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27404:15:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27435:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27438:4:45",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "27428:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27428:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27428:15:45"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "27322:127:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27554:222:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "27564:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "27603:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "27590:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27590:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "27568:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27704:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27713:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27716:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "27706:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27706:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27706:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "27638:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "27666:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "27666:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "27682:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "27662:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "27662:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "27697:2:45",
                                                "type": "",
                                                "value": "62"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "27693:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "27693:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "27658:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "27658:43:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "27634:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27634:68:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "27627:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27627:76:45"
                              },
                              "nodeType": "YulIf",
                              "src": "27624:96:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27729:41:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "27741:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "27751:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27737:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27737:33:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "27729:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_struct$_Order_$4019_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "27519:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "27529:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "27545:4:45",
                            "type": ""
                          }
                        ],
                        "src": "27454:322:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27891:223:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "27901:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "27940:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "27927:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27927:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "27905:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28042:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28051:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28054:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "28044:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28044:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28044:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "27975:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "28003:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "28003:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "28019:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "27999:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "27999:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "28034:3:45",
                                                "type": "",
                                                "value": "350"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "28030:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "28030:8:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "27995:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "27995:44:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "27971:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27971:69:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "27964:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27964:77:45"
                              },
                              "nodeType": "YulIf",
                              "src": "27961:97:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28067:41:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "28079:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "28089:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28075:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28075:33:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "28067:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_struct$_OrderParameters_$4013_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "27856:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "27866:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "27882:4:45",
                            "type": ""
                          }
                        ],
                        "src": "27781:333:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28251:85:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "28261:69:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "28308:5:45"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "28315:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28315:14:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_struct_OrderParameters",
                                  "nodeType": "YulIdentifier",
                                  "src": "28274:33:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28274:56:45"
                              },
                              "variableNames": [
                                {
                                  "name": "converted",
                                  "nodeType": "YulIdentifier",
                                  "src": "28261:9:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "convert_t_struct$_OrderParameters_$4013_calldata_ptr_to_t_struct$_OrderParameters_$4013_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "28227:5:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "converted",
                            "nodeType": "YulTypedName",
                            "src": "28237:9:45",
                            "type": ""
                          }
                        ],
                        "src": "28119:217:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28435:427:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "28445:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "28484:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "28471:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28471:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "28449:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28585:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28594:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28597:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "28587:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28587:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28587:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "28519:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "28547:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "28547:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "28563:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "28543:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "28543:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "28578:2:45",
                                                "type": "",
                                                "value": "30"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "28574:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "28574:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "28539:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "28539:43:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "28515:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28515:68:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "28508:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28508:76:45"
                              },
                              "nodeType": "YulIf",
                              "src": "28505:96:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "28610:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "28628:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "28638:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28624:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28624:33:45"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "28614:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28666:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "28689:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "28676:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28676:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "28666:6:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28739:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28748:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28751:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "28741:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28741:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28741:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "28711:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28719:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "28708:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28708:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "28705:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28764:25:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "28776:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28784:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28772:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28772:17:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "28764:4:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28840:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28849:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28852:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "28842:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28842:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28842:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "28805:4:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "28815:12:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "28815:14:45"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "28831:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "28811:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28811:27:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "28801:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28801:38:45"
                              },
                              "nodeType": "YulIf",
                              "src": "28798:58:45"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "28392:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "28402:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "28418:4:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "28424:6:45",
                            "type": ""
                          }
                        ],
                        "src": "28341:521:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28944:412:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28988:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28997:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29000:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "28990:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28990:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28990:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "28965:3:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28970:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "28961:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28961:19:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28982:4:45",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "28957:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28957:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "28954:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29013:25:45",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29033:4:45",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "29027:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29027:11:45"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "29017:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29047:35:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "29069:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29077:4:45",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29065:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29065:17:45"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "29051:10:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29157:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "29159:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29159:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29159:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29100:10:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29112:18:45",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "29097:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29097:34:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29136:10:45"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29148:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "29133:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29133:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "29094:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29094:62:45"
                              },
                              "nodeType": "YulIf",
                              "src": "29091:88:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29195:4:45",
                                    "type": "",
                                    "value": "0x40"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "29201:10:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29188:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29188:24:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29188:24:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29221:15:45",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "29230:6:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "29221:5:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "29252:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29273:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "29260:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29260:23:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29245:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29245:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29245:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29304:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29312:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29300:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29300:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "29334:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "29345:2:45",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "29330:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29330:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "29317:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29317:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29293:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29293:57:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29293:57:45"
                            }
                          ]
                        },
                        "name": "abi_decode_struct_FulfillmentComponent",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28915:9:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "28926:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "28934:5:45",
                            "type": ""
                          }
                        ],
                        "src": "28867:489:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29621:1572:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29631:88:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "29711:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_struct_AdvancedOrder_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "29658:52:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29658:60:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "29642:15:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29642:77:45"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "29635:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29728:16:45",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "29741:3:45"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "29732:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "29760:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "29765:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29753:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29753:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29753:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29781:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "29791:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "29785:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29804:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "29815:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29820:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29811:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29811:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "29804:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29832:40:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "29850:5:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29861:1:45",
                                        "type": "",
                                        "value": "5"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "29864:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "29857:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29857:14:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29846:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29846:26:45"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "29836:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29911:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29920:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29923:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "29913:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29913:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29913:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "29887:6:45"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "29895:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29895:14:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "29884:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29884:26:45"
                              },
                              "nodeType": "YulIf",
                              "src": "29881:46:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29936:16:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "29947:5:45"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "29940:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30017:1143:45",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "30031:36:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "30063:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "30050:12:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30050:17:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "innerOffset",
                                        "nodeType": "YulTypedName",
                                        "src": "30035:11:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "30131:74:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "30149:11:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "30159:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_2",
                                              "nodeType": "YulTypedName",
                                              "src": "30153:2:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "30184:2:45"
                                              },
                                              {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "30188:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "30177:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "30177:14:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "30177:14:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "30086:11:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30099:18:45",
                                          "type": "",
                                          "value": "0xffffffffffffffff"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "30083:2:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30083:35:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "30080:125:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "30218:33:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "30232:5:45"
                                        },
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "30239:11:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "30228:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30228:23:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "30222:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "30322:74:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "30340:11:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "30350:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_4",
                                              "nodeType": "YulTypedName",
                                              "src": "30344:2:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "30375:2:45"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "30379:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "30368:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "30368:14:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "30368:14:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "30282:2:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "30286:4:45",
                                                  "type": "",
                                                  "value": "0x1f"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "30278:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "30278:13:45"
                                            },
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "calldatasize",
                                                "nodeType": "YulIdentifier",
                                                "src": "30293:12:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "30293:14:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "30274:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "30274:34:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "30267:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30267:42:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "30264:132:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "30409:26:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "30432:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "30419:12:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30419:16:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulTypedName",
                                        "src": "30413:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "30448:86:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "30530:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_allocation_size_array_struct_AdvancedOrder_dyn",
                                            "nodeType": "YulIdentifier",
                                            "src": "30477:52:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "30477:56:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "allocate_memory",
                                        "nodeType": "YulIdentifier",
                                        "src": "30461:15:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30461:73:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "dst_2",
                                        "nodeType": "YulTypedName",
                                        "src": "30452:5:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "30547:18:45",
                                    "value": {
                                      "name": "dst_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "30560:5:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "dst_3",
                                        "nodeType": "YulTypedName",
                                        "src": "30551:5:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "30585:5:45"
                                        },
                                        {
                                          "name": "_5",
                                          "nodeType": "YulIdentifier",
                                          "src": "30592:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "30578:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30578:17:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30578:17:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "30608:23:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "30621:5:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "30628:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "30617:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30617:14:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "30608:5:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "30644:44:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "30668:2:45"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "30676:1:45",
                                                  "type": "",
                                                  "value": "6"
                                                },
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "30679:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "shl",
                                                "nodeType": "YulIdentifier",
                                                "src": "30672:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "30672:10:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "30664:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "30664:19:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "30685:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "30660:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30660:28:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "srcEnd_1",
                                        "nodeType": "YulTypedName",
                                        "src": "30648:8:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "30745:74:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "30763:11:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "30773:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_6",
                                              "nodeType": "YulTypedName",
                                              "src": "30767:2:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_6",
                                                "nodeType": "YulIdentifier",
                                                "src": "30798:2:45"
                                              },
                                              {
                                                "name": "_6",
                                                "nodeType": "YulIdentifier",
                                                "src": "30802:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "30791:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "30791:14:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "30791:14:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "srcEnd_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "30707:8:45"
                                        },
                                        {
                                          "arguments": [],
                                          "functionName": {
                                            "name": "calldatasize",
                                            "nodeType": "YulIdentifier",
                                            "src": "30717:12:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "30717:14:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "30704:2:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30704:28:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "30701:118:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "30832:24:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "30849:2:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "30853:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "30845:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30845:11:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "src_1",
                                        "nodeType": "YulTypedName",
                                        "src": "30836:5:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "30939:148:45",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "dst_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "30964:5:45"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "src_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "31010:5:45"
                                                  },
                                                  {
                                                    "arguments": [],
                                                    "functionName": {
                                                      "name": "calldatasize",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "31017:12:45"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "31017:14:45"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "abi_decode_struct_FulfillmentComponent",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "30971:38:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "30971:61:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "30957:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "30957:76:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "30957:76:45"
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "31050:23:45",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "dst_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "31063:5:45"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "31070:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "31059:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31059:14:45"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "dst_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "31050:5:45"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "src_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "30880:5:45"
                                        },
                                        {
                                          "name": "srcEnd_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "30887:8:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "30877:2:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30877:19:45"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "30897:29:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "30899:25:45",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "src_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "30912:5:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "30919:4:45",
                                                "type": "",
                                                "value": "0x40"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "30908:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "30908:16:45"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "src_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "30899:5:45"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "30873:3:45",
                                      "statements": []
                                    },
                                    "src": "30869:218:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "31107:3:45"
                                        },
                                        {
                                          "name": "dst_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "31112:5:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "31100:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31100:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31100:18:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "31131:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "31142:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "31147:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "31138:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31138:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "31131:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "29972:3:45"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "29977:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "29969:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29969:15:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "29985:23:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "29987:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "29998:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "30003:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "29994:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29994:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "29987:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "29965:3:45",
                                "statements": []
                              },
                              "src": "29961:1199:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31169:18:45",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "31182:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "converted",
                                  "nodeType": "YulIdentifier",
                                  "src": "31169:9:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "convert_array_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "29589:5:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "29596:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "converted",
                            "nodeType": "YulTypedName",
                            "src": "29607:9:45",
                            "type": ""
                          }
                        ],
                        "src": "29361:1832:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31276:177:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31322:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31331:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31334:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31324:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31324:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31324:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "31297:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31306:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "31293:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31293:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31318:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31289:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31289:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "31286:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31347:36:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31373:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "31360:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31360:23:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "31351:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "31417:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "31392:24:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31392:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31392:31:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31432:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "31442:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "31432:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payable",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31242:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "31253:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "31265:6:45",
                            "type": ""
                          }
                        ],
                        "src": "31198:255:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31607:435:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31617:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "31656:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "31643:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31643:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "31621:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31757:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31766:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31769:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31759:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31759:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31759:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "31691:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "31719:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "31719:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "31735:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "31715:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31715:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "31750:2:45",
                                                "type": "",
                                                "value": "30"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "31746:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31746:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "31711:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31711:43:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "31687:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31687:68:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "31680:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31680:76:45"
                              },
                              "nodeType": "YulIf",
                              "src": "31677:96:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31782:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "31800:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "31810:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31796:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31796:33:45"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "31786:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31838:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "31861:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "31848:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31848:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "31838:6:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31911:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31920:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31923:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31913:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31913:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31913:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "31883:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31891:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31880:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31880:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "31877:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31936:25:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "31948:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31956:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31944:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31944:17:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "31936:4:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32020:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32029:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32032:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32022:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32022:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32022:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "31977:4:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "31987:12:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31987:14:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "32007:1:45",
                                            "type": "",
                                            "value": "6"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "32010:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "32003:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32003:14:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "31983:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31983:35:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31973:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31973:46:45"
                              },
                              "nodeType": "YulIf",
                              "src": "31970:66:45"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "31564:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "31574:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "31590:4:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "31596:6:45",
                            "type": ""
                          }
                        ],
                        "src": "31458:584:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32157:223:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32167:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "32206:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32193:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32193:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "32171:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32308:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32317:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32320:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32310:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32310:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32310:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "32241:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "32269:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "32269:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "32285:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "32265:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "32265:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "32300:3:45",
                                                "type": "",
                                                "value": "350"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "32296:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "32296:8:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "32261:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32261:44:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "32237:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32237:69:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "32230:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32230:77:45"
                              },
                              "nodeType": "YulIf",
                              "src": "32227:97:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32333:41:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "32345:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "32355:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32341:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32341:33:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "32333:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_struct$_OrderComponents_$3892_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "32122:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "32132:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "32148:4:45",
                            "type": ""
                          }
                        ],
                        "src": "32047:333:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32491:222:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32501:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "32540:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32527:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32527:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "32505:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32641:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32650:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32653:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32643:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32643:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32643:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "32575:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "32603:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "32603:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "32619:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "32599:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "32599:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "32634:2:45",
                                                "type": "",
                                                "value": "62"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "32630:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "32630:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "32595:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32595:43:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "32571:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32571:68:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "32564:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32564:76:45"
                              },
                              "nodeType": "YulIf",
                              "src": "32561:96:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32666:41:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "32678:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "32688:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32674:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32674:33:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "32666:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_struct$_Fulfillment_$4062_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "32456:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "32466:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "32482:4:45",
                            "type": ""
                          }
                        ],
                        "src": "32385:328:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32868:435:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32878:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "32917:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32904:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32904:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "32882:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33018:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33027:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33030:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "33020:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33020:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33020:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "32952:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "32980:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "32980:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "32996:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "32976:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "32976:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "33011:2:45",
                                                "type": "",
                                                "value": "30"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "33007:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "33007:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "32972:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32972:43:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "32948:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32948:68:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "32941:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32941:76:45"
                              },
                              "nodeType": "YulIf",
                              "src": "32938:96:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33043:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "33061:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "33071:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33057:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33057:33:45"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "33047:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33099:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33122:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "33109:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33109:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "33099:6:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33172:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33181:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33184:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "33174:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33174:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33174:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "33144:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33152:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "33141:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33141:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "33138:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33197:25:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33209:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33217:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33205:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33205:17:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "33197:4:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33281:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33290:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33293:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "33283:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33283:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33283:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "33238:4:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "33248:12:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "33248:14:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "33268:1:45",
                                            "type": "",
                                            "value": "6"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "33271:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "33264:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "33264:14:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "33244:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33244:35:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "33234:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33234:46:45"
                              },
                              "nodeType": "YulIf",
                              "src": "33231:66:45"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "32825:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "32835:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "32851:4:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "32857:6:45",
                            "type": ""
                          }
                        ],
                        "src": "32718:585:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33340:95:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33357:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33364:3:45",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33369:10:45",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "33360:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33360:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33350:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33350:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33350:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33397:1:45",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33400:4:45",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33390:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33390:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33390:15:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33421:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33424:4:45",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "33414:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33414:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33414:15:45"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "33308:127:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33492:116:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33551:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "33553:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33553:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33553:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "33523:1:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "33516:6:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "33516:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "33509:6:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33509:17:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "33531:1:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "33542:1:45",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "33538:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "33538:6:45"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "33546:1:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "33534:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "33534:14:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "33528:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33528:21:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "33505:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33505:45:45"
                              },
                              "nodeType": "YulIf",
                              "src": "33502:71:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33582:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "33597:1:45"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "33600:1:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "33593:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33593:9:45"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "33582:7:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "33471:1:45",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "33474:1:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "33480:7:45",
                            "type": ""
                          }
                        ],
                        "src": "33440:168:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33661:80:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33688:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "33690:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33690:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33690:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "33677:1:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "33684:1:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "33680:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33680:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "33674:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33674:13:45"
                              },
                              "nodeType": "YulIf",
                              "src": "33671:39:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33719:16:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "33730:1:45"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "33733:1:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33726:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33726:9:45"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "33719:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "33644:1:45",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "33647:1:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "33653:3:45",
                            "type": ""
                          }
                        ],
                        "src": "33613:128:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33795:76:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33817:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "33819:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33819:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33819:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "33811:1:45"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "33814:1:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "33808:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33808:8:45"
                              },
                              "nodeType": "YulIf",
                              "src": "33805:34:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33848:17:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "33860:1:45"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "33863:1:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "33856:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33856:9:45"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "33848:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "33777:1:45",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "33780:1:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "33786:4:45",
                            "type": ""
                          }
                        ],
                        "src": "33746:125:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33949:400:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33959:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "33979:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "33973:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33973:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "33963:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "34001:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "34006:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33994:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33994:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33994:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34022:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "34032:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "34026:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34045:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "34056:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34061:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34052:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34052:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "34045:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34073:28:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "34091:5:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34098:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34087:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34087:14:45"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "34077:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34110:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "34119:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "34114:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "34178:146:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "34229:6:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "34223:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34223:13:45"
                                        },
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "34238:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_struct_ReceivedItem",
                                        "nodeType": "YulIdentifier",
                                        "src": "34192:30:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34192:50:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34192:50:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "34255:21:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "34266:3:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34271:4:45",
                                          "type": "",
                                          "value": "0xa0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "34262:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34262:14:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "34255:3:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "34289:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "34303:6:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "34311:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "34299:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34299:15:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "34289:6:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "34140:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "34143:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "34137:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34137:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "34151:18:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "34153:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "34162:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34165:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "34158:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34158:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "34153:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "34133:3:45",
                                "statements": []
                              },
                              "src": "34129:195:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34333:10:45",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "34340:3:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "34333:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_struct_ReceivedItem_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "33926:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "33933:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "33941:3:45",
                            "type": ""
                          }
                        ],
                        "src": "33876:473:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "34753:1011:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34763:13:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "34773:3:45",
                                "type": "",
                                "value": "128"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "34767:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34785:32:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34803:9:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34814:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34799:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34799:18:45"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "34789:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34833:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "34844:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34826:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34826:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34826:25:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34860:12:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "34870:2:45",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "34864:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34881:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34899:3:45",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34904:1:45",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "34895:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34895:11:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34908:1:45",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "34891:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34891:19:45"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "34885:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34930:9:45"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "34941:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34926:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34926:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "34950:6:45"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "34958:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "34946:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34946:15:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34919:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34919:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34919:43:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34971:12:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "34981:2:45",
                                "type": "",
                                "value": "64"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "34975:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35003:9:45"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "35014:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34999:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34999:18:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "35019:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34992:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34992:30:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34992:30:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "35031:17:45",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "35042:6:45"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "35035:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "35057:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "35077:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "35071:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35071:13:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "35061:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "35100:6:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "35108:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35093:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35093:22:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35093:22:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35124:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35135:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35146:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35131:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35131:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "35124:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "35159:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "35177:6:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "35185:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35173:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35173:15:45"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "35163:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "35197:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "35206:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "35201:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "35265:365:45",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "35279:23:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "35295:6:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "35289:5:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35289:13:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulTypedName",
                                        "src": "35283:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "35346:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "35340:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "35340:9:45"
                                        },
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "35351:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_enum_ItemType",
                                        "nodeType": "YulIdentifier",
                                        "src": "35315:24:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35315:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "35315:40:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "35379:3:45"
                                            },
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "35384:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "35375:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "35375:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_5",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "35403:2:45"
                                                    },
                                                    {
                                                      "name": "_2",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "35407:2:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "35399:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "35399:11:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "35393:5:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "35393:18:45"
                                            },
                                            {
                                              "name": "_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "35413:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "35389:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "35389:27:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "35368:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35368:49:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "35368:49:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "35441:3:45"
                                            },
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "35446:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "35437:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "35437:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "35461:2:45"
                                                },
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "35465:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "35457:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "35457:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "35451:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "35451:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "35430:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35430:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "35430:40:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "35483:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "35493:4:45",
                                      "type": "",
                                      "value": "0x60"
                                    },
                                    "variables": [
                                      {
                                        "name": "_6",
                                        "nodeType": "YulTypedName",
                                        "src": "35487:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "35521:3:45"
                                            },
                                            {
                                              "name": "_6",
                                              "nodeType": "YulIdentifier",
                                              "src": "35526:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "35517:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "35517:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "35541:2:45"
                                                },
                                                {
                                                  "name": "_6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "35545:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "35537:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "35537:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "35531:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "35531:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "35510:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35510:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "35510:40:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "35563:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "35574:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "35579:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "35570:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35570:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "35563:3:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "35595:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "35609:6:45"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "35617:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "35605:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35605:15:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "35595:6:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "35227:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "35230:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "35224:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35224:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "35238:18:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "35240:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "35249:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "35252:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "35245:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35245:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "35240:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "35220:3:45",
                                "statements": []
                              },
                              "src": "35216:414:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35650:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35661:4:45",
                                        "type": "",
                                        "value": "0x60"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35646:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35646:20:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "35672:3:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35677:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "35668:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35668:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35639:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35639:49:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35639:49:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35697:61:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "35746:6:45"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "35754:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_struct_ReceivedItem_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "35705:40:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35705:53:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35697:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_array$_t_struct$_SpentItem_$3928_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_ReceivedItem_$3940_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_address_t_array$_t_struct$_SpentItem_$3928_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_ReceivedItem_$3940_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "34698:9:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "34709:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "34717:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "34725:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "34733:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "34744:4:45",
                            "type": ""
                          }
                        ],
                        "src": "34354:1410:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35877:145:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "35923:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "35932:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "35935:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "35925:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35925:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "35925:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "35898:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35907:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "35894:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35894:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35919:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "35890:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35890:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "35887:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35948:68:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35997:9:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "36008:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_struct_FulfillmentComponent",
                                  "nodeType": "YulIdentifier",
                                  "src": "35958:38:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35958:58:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "35948:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_FulfillmentComponent_$4067_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35843:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "35854:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "35866:6:45",
                            "type": ""
                          }
                        ],
                        "src": "35769:253:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36184:162:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "36194:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36206:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36217:2:45",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36202:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36202:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "36194:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36236:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "36247:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36229:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36229:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36229:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36274:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36285:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36270:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36270:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "36290:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36263:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36263:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36263:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36317:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36328:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36313:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36313:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "36333:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36306:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36306:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36306:34:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "36137:9:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "36148:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "36156:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "36164:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "36175:4:45",
                            "type": ""
                          }
                        ],
                        "src": "36027:319:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36448:87:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "36458:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36470:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36481:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36466:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36466:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "36458:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36500:9:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "36515:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36523:4:45",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "36511:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36511:17:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36493:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36493:36:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36493:36:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "36417:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "36428:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "36439:4:45",
                            "type": ""
                          }
                        ],
                        "src": "36351:184:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36721:217:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "36731:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36743:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36754:3:45",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36739:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36739:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "36731:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36774:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "36785:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36767:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36767:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36767:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36812:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36823:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36808:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36808:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "36832:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36840:4:45",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "36828:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36828:17:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36801:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36801:45:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36801:45:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36866:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36877:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36862:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36862:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "36882:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36855:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36855:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36855:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36909:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36920:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36905:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36905:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "36925:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36898:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36898:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36898:34:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "36666:9:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "36677:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "36685:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "36693:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "36701:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "36712:4:45",
                            "type": ""
                          }
                        ],
                        "src": "36540:398:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37013:745:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37023:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "37043:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "37037:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37037:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "37027:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "37065:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "37070:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37058:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37058:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37058:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37086:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "37096:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "37090:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37109:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "37120:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "37125:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37116:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37116:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "37109:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37137:28:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "37155:5:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "37162:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37151:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37151:14:45"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "37141:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37174:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "37183:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "37178:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "37242:491:45",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "37256:23:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "37272:6:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "37266:5:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37266:13:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "37260:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "37323:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "37317:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37317:9:45"
                                        },
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "37328:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_enum_ItemType",
                                        "nodeType": "YulIdentifier",
                                        "src": "37292:24:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37292:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "37292:40:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "37356:3:45"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "37361:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "37352:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37352:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_2",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "37380:2:45"
                                                    },
                                                    {
                                                      "name": "_1",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "37384:2:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "37376:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "37376:11:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "37370:5:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "37370:18:45"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "37398:3:45",
                                                      "type": "",
                                                      "value": "160"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "37403:1:45",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "37394:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "37394:11:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "37407:1:45",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "37390:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "37390:19:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "37366:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37366:44:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "37345:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37345:66:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "37345:66:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "37424:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "37434:4:45",
                                      "type": "",
                                      "value": "0x40"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "37428:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "37462:3:45"
                                            },
                                            {
                                              "name": "_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "37467:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "37458:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37458:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "37482:2:45"
                                                },
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "37486:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "37478:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "37478:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "37472:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37472:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "37451:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37451:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "37451:40:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "37504:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "37514:4:45",
                                      "type": "",
                                      "value": "0x60"
                                    },
                                    "variables": [
                                      {
                                        "name": "_4",
                                        "nodeType": "YulTypedName",
                                        "src": "37508:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "37542:3:45"
                                            },
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "37547:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "37538:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37538:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "37562:2:45"
                                                },
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "37566:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "37558:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "37558:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "37552:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37552:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "37531:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37531:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "37531:40:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "37584:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "37594:4:45",
                                      "type": "",
                                      "value": "0x80"
                                    },
                                    "variables": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulTypedName",
                                        "src": "37588:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "37622:3:45"
                                            },
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "37627:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "37618:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37618:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "37642:2:45"
                                                },
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "37646:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "37638:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "37638:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "37632:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37632:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "37611:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37611:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "37611:40:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "37664:21:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "37675:3:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "37680:4:45",
                                          "type": "",
                                          "value": "0xa0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "37671:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37671:14:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "37664:3:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "37698:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "37712:6:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "37720:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "37708:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37708:15:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "37698:6:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "37204:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "37207:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "37201:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37201:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "37215:18:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "37217:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "37226:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "37229:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "37222:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37222:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "37217:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "37197:3:45",
                                "statements": []
                              },
                              "src": "37193:540:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37742:10:45",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "37749:3:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "37742:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_struct_OfferItem_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "36990:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "36997:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "37005:3:45",
                            "type": ""
                          }
                        ],
                        "src": "36943:815:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37841:904:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37851:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "37871:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "37865:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37865:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "37855:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "37893:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "37898:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37886:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37886:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37886:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37914:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "37924:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "37918:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37937:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "37948:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "37953:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37944:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37944:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "37937:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37965:28:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "37983:5:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "37990:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37979:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37979:14:45"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "37969:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "38002:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "38011:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "38006:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "38070:650:45",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38084:23:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "38100:6:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "38094:5:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38094:13:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "38088:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "38151:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "38145:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38145:9:45"
                                        },
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "38156:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_enum_ItemType",
                                        "nodeType": "YulIdentifier",
                                        "src": "38120:24:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38120:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38120:40:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38173:38:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "38203:2:45"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "38207:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38199:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38199:11:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "38193:5:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38193:18:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulTypedName",
                                        "src": "38177:12:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38224:29:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "38242:3:45",
                                              "type": "",
                                              "value": "160"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "38247:1:45",
                                              "type": "",
                                              "value": "1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "38238:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38238:11:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "38251:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "sub",
                                        "nodeType": "YulIdentifier",
                                        "src": "38234:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38234:19:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "38228:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "38277:3:45"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "38282:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38273:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38273:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "memberValue0",
                                              "nodeType": "YulIdentifier",
                                              "src": "38291:12:45"
                                            },
                                            {
                                              "name": "_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "38305:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "38287:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38287:21:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38266:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38266:43:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38266:43:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38322:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "38332:4:45",
                                      "type": "",
                                      "value": "0x40"
                                    },
                                    "variables": [
                                      {
                                        "name": "_4",
                                        "nodeType": "YulTypedName",
                                        "src": "38326:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "38360:3:45"
                                            },
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "38365:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38356:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38356:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38380:2:45"
                                                },
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38384:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "38376:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38376:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "38370:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38370:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38349:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38349:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38349:40:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38402:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "38412:4:45",
                                      "type": "",
                                      "value": "0x60"
                                    },
                                    "variables": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulTypedName",
                                        "src": "38406:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "38440:3:45"
                                            },
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "38445:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38436:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38436:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38460:2:45"
                                                },
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38464:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "38456:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38456:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "38450:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38450:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38429:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38429:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38429:40:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38482:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "38492:4:45",
                                      "type": "",
                                      "value": "0x80"
                                    },
                                    "variables": [
                                      {
                                        "name": "_6",
                                        "nodeType": "YulTypedName",
                                        "src": "38486:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "38520:3:45"
                                            },
                                            {
                                              "name": "_6",
                                              "nodeType": "YulIdentifier",
                                              "src": "38525:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38516:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38516:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38540:2:45"
                                                },
                                                {
                                                  "name": "_6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38544:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "38536:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38536:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "38530:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38530:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38509:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38509:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38509:40:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38562:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "38572:4:45",
                                      "type": "",
                                      "value": "0xa0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_7",
                                        "nodeType": "YulTypedName",
                                        "src": "38566:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "38600:3:45"
                                            },
                                            {
                                              "name": "_7",
                                              "nodeType": "YulIdentifier",
                                              "src": "38605:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38596:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38596:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_2",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "38624:2:45"
                                                    },
                                                    {
                                                      "name": "_7",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "38628:2:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "38620:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "38620:11:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "38614:5:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38614:18:45"
                                            },
                                            {
                                              "name": "_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "38634:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "38610:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38610:27:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38589:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38589:49:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38589:49:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "38651:21:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "38662:3:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "38667:4:45",
                                          "type": "",
                                          "value": "0xc0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "38658:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38658:14:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "38651:3:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "38685:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "38699:6:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "38707:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "38695:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38695:15:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "38685:6:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "38032:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "38035:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "38029:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38029:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "38043:18:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "38045:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "38054:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "38057:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "38050:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38050:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "38045:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "38025:3:45",
                                "statements": []
                              },
                              "src": "38021:699:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38729:10:45",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "38736:3:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "38729:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_struct_ConsiderationItem_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "37818:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "37825:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "37833:3:45",
                            "type": ""
                          }
                        ],
                        "src": "37763:982:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "38801:89:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "38835:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x21",
                                        "nodeType": "YulIdentifier",
                                        "src": "38837:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38837:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38837:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "38824:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38831:1:45",
                                        "type": "",
                                        "value": "4"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "38821:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38821:12:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "38814:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38814:20:45"
                              },
                              "nodeType": "YulIf",
                              "src": "38811:46:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "38873:3:45"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "38878:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38866:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38866:18:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38866:18:45"
                            }
                          ]
                        },
                        "name": "abi_encode_enum_OrderType",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "38785:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "38792:3:45",
                            "type": ""
                          }
                        ],
                        "src": "38750:140:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "38939:73:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "38956:3:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "38965:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38972:32:45",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "38961:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38961:44:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38949:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38949:57:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38949:57:45"
                            }
                          ]
                        },
                        "name": "abi_encode_uint120",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "38923:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "38930:3:45",
                            "type": ""
                          }
                        ],
                        "src": "38895:117:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39078:374:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39088:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "39108:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "39102:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39102:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "39092:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "39130:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "39135:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39123:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39123:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39123:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39151:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "39161:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "39155:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "39174:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "39185:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39190:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39181:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39181:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "39174:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39202:28:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "39220:5:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39227:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39216:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39216:14:45"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "39206:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39239:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "39248:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "39243:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "39307:120:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "39328:3:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "39339:6:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "39333:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "39333:13:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "39321:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39321:26:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "39321:26:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "39360:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "39371:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "39376:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "39367:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39367:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "39360:3:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "39392:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "39406:6:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "39414:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "39402:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39402:15:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "39392:6:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "39269:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "39272:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "39266:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39266:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "39280:18:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "39282:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "39291:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "39294:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "39287:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39287:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "39282:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "39262:3:45",
                                "statements": []
                              },
                              "src": "39258:169:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "39436:10:45",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "39443:3:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "39436:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_bytes32_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "39055:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "39062:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "39070:3:45",
                            "type": ""
                          }
                        ],
                        "src": "39017:435:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39503:89:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "39537:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x21",
                                        "nodeType": "YulIdentifier",
                                        "src": "39539:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39539:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "39539:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "39526:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39533:1:45",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "39523:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39523:12:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "39516:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39516:20:45"
                              },
                              "nodeType": "YulIf",
                              "src": "39513:46:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "39575:3:45"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "39580:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39568:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39568:18:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39568:18:45"
                            }
                          ]
                        },
                        "name": "abi_encode_enum_Side",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "39487:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "39494:3:45",
                            "type": ""
                          }
                        ],
                        "src": "39457:135:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39674:1045:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39684:16:45",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "39697:3:45"
                              },
                              "variables": [
                                {
                                  "name": "pos_1",
                                  "nodeType": "YulTypedName",
                                  "src": "39688:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39709:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "39729:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "39723:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39723:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "39713:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "39751:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "39756:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39744:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39744:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39744:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39772:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "39782:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "39776:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "39795:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "39806:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39811:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39802:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39802:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "39795:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39823:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "39843:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "39854:1:45",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "39857:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "39850:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "39850:14:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39839:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39839:26:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39867:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39835:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39835:35:45"
                              },
                              "variables": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulTypedName",
                                  "src": "39827:4:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39879:28:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "39897:5:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39904:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39893:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39893:14:45"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "39883:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39916:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "39925:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "39920:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "39984:709:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "40005:3:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "tail",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40018:4:45"
                                                },
                                                {
                                                  "name": "pos_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40024:5:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "40014:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40014:16:45"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "40036:2:45",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "not",
                                                "nodeType": "YulIdentifier",
                                                "src": "40032:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40032:7:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40010:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40010:30:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "39998:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39998:43:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "39998:43:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40054:23:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "40070:6:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "40064:5:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40064:13:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "40058:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40090:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "40100:4:45",
                                      "type": "",
                                      "value": "0xa0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "40094:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "tail",
                                          "nodeType": "YulIdentifier",
                                          "src": "40124:4:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "40136:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "40130:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40130:9:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "40117:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40117:23:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40117:23:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40153:38:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "40183:2:45"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "40187:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40179:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40179:11:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "40173:5:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40173:18:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulTypedName",
                                        "src": "40157:12:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "memberValue0",
                                          "nodeType": "YulIdentifier",
                                          "src": "40225:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail",
                                              "nodeType": "YulIdentifier",
                                              "src": "40243:4:45"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "40249:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40239:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40239:13:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_enum_Side",
                                        "nodeType": "YulIdentifier",
                                        "src": "40204:20:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40204:49:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40204:49:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40266:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "40276:4:45",
                                      "type": "",
                                      "value": "0x40"
                                    },
                                    "variables": [
                                      {
                                        "name": "_4",
                                        "nodeType": "YulTypedName",
                                        "src": "40270:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail",
                                              "nodeType": "YulIdentifier",
                                              "src": "40304:4:45"
                                            },
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "40310:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40300:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40300:13:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40325:2:45"
                                                },
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40329:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "40321:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40321:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "40315:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40315:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "40293:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40293:41:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40293:41:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40347:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "40357:4:45",
                                      "type": "",
                                      "value": "0x60"
                                    },
                                    "variables": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulTypedName",
                                        "src": "40351:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail",
                                              "nodeType": "YulIdentifier",
                                              "src": "40385:4:45"
                                            },
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "40391:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40381:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40381:13:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40406:2:45"
                                                },
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40410:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "40402:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40402:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "40396:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40396:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "40374:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40374:41:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40374:41:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40428:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "40438:4:45",
                                      "type": "",
                                      "value": "0x80"
                                    },
                                    "variables": [
                                      {
                                        "name": "_6",
                                        "nodeType": "YulTypedName",
                                        "src": "40432:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40455:40:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "40487:2:45"
                                            },
                                            {
                                              "name": "_6",
                                              "nodeType": "YulIdentifier",
                                              "src": "40491:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40483:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40483:11:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "40477:5:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40477:18:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "memberValue0_1",
                                        "nodeType": "YulTypedName",
                                        "src": "40459:14:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail",
                                              "nodeType": "YulIdentifier",
                                              "src": "40519:4:45"
                                            },
                                            {
                                              "name": "_6",
                                              "nodeType": "YulIdentifier",
                                              "src": "40525:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40515:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40515:13:45"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "40530:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "40508:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40508:25:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40508:25:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "40546:67:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "memberValue0_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "40583:14:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail",
                                              "nodeType": "YulIdentifier",
                                              "src": "40603:4:45"
                                            },
                                            {
                                              "name": "_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "40609:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40599:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40599:13:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_array_bytes32_dyn",
                                        "nodeType": "YulIdentifier",
                                        "src": "40554:28:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40554:59:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "40546:4:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "40626:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "40640:6:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "40648:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "40636:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40636:15:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "40626:6:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "40664:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "40675:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "40680:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "40671:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40671:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "40664:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "39946:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "39949:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "39943:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39943:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "39957:18:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "39959:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "39968:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "39971:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "39964:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39964:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "39959:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "39939:3:45",
                                "statements": []
                              },
                              "src": "39935:758:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "40702:11:45",
                              "value": {
                                "name": "tail",
                                "nodeType": "YulIdentifier",
                                "src": "40709:4:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "40702:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_struct_CriteriaResolver_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "39651:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "39658:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "39666:3:45",
                            "type": ""
                          }
                        ],
                        "src": "39597:1122:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "41167:2371:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "41184:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "41195:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41177:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41177:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41177:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41222:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41233:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41218:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41218:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "41242:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "41258:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "41263:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "41254:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "41254:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "41267:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "41250:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "41250:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "41238:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41238:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41211:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41211:60:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41211:60:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41291:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41302:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41287:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41287:18:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41307:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41280:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41280:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41280:31:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41320:13:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "41330:3:45",
                                "type": "",
                                "value": "320"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "41324:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41342:33:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "41368:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "41362:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41362:13:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0",
                                  "nodeType": "YulTypedName",
                                  "src": "41346:12:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41395:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41406:3:45",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41391:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41391:19:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41412:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41384:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41384:32:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41384:32:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulIdentifier",
                                        "src": "41450:12:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "41444:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41444:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41469:9:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "41480:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41465:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41465:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "41425:18:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41425:59:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41425:59:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41493:50:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulIdentifier",
                                        "src": "41525:12:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41539:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41521:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41521:21:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "41515:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41515:28:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "41497:14:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41552:16:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "41562:6:45",
                                "type": "",
                                "value": "0x0160"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "41556:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memberValue0_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "41596:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41616:9:45"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "41627:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41612:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41612:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "41577:18:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41577:54:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41577:54:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41640:50:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulIdentifier",
                                        "src": "41672:12:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41686:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41668:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41668:21:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "41662:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41662:28:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0_2",
                                  "nodeType": "YulTypedName",
                                  "src": "41644:14:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41710:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41721:3:45",
                                        "type": "",
                                        "value": "384"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41706:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41706:19:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "41727:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41699:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41699:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41699:31:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41739:88:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memberValue0_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "41791:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41811:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41822:3:45",
                                        "type": "",
                                        "value": "672"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41807:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41807:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_struct_OfferItem_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "41753:37:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41753:74:45"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "41743:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41836:52:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulIdentifier",
                                        "src": "41868:12:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41882:4:45",
                                        "type": "",
                                        "value": "0x60"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41864:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41864:23:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "41858:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41858:30:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0_3",
                                  "nodeType": "YulTypedName",
                                  "src": "41840:14:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41908:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41919:3:45",
                                        "type": "",
                                        "value": "416"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41904:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41904:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "tail_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "41933:6:45"
                                          },
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "41941:9:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "41929:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "41929:22:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "41957:3:45",
                                            "type": "",
                                            "value": "319"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "41953:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "41953:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41925:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41925:37:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41897:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41897:66:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41897:66:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41972:83:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memberValue0_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "42032:14:45"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "42048:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_struct_ConsiderationItem_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "41986:45:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41986:69:45"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "41976:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42064:52:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulIdentifier",
                                        "src": "42096:12:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42110:4:45",
                                        "type": "",
                                        "value": "0x80"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42092:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42092:23:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "42086:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42086:30:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0_4",
                                  "nodeType": "YulTypedName",
                                  "src": "42068:14:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memberValue0_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "42151:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42171:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42182:3:45",
                                        "type": "",
                                        "value": "448"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42167:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42167:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_enum_OrderType",
                                  "nodeType": "YulIdentifier",
                                  "src": "42125:25:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42125:62:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42125:62:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42207:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42218:3:45",
                                        "type": "",
                                        "value": "480"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42203:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42203:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memberValue0",
                                            "nodeType": "YulIdentifier",
                                            "src": "42234:12:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "42248:3:45",
                                            "type": "",
                                            "value": "160"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "42230:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42230:22:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "42224:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42224:29:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42196:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42196:58:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42196:58:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42274:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42285:3:45",
                                        "type": "",
                                        "value": "512"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42270:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42270:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memberValue0",
                                            "nodeType": "YulIdentifier",
                                            "src": "42301:12:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "42315:4:45",
                                            "type": "",
                                            "value": "0xc0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "42297:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42297:23:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "42291:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42291:30:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42263:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42263:59:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42263:59:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42342:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42353:3:45",
                                        "type": "",
                                        "value": "544"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42338:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42338:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memberValue0",
                                            "nodeType": "YulIdentifier",
                                            "src": "42369:12:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "42383:4:45",
                                            "type": "",
                                            "value": "0xe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "42365:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42365:23:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "42359:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42359:30:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42331:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42331:59:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42331:59:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42399:16:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "42409:6:45",
                                "type": "",
                                "value": "0x0100"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "42403:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42435:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42446:3:45",
                                        "type": "",
                                        "value": "576"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42431:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42431:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memberValue0",
                                            "nodeType": "YulIdentifier",
                                            "src": "42462:12:45"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "42476:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "42458:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42458:21:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "42452:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42452:28:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42424:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42424:57:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42424:57:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42490:16:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "42500:6:45",
                                "type": "",
                                "value": "0x0120"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "42494:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42526:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42537:3:45",
                                        "type": "",
                                        "value": "608"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42522:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42522:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memberValue0",
                                            "nodeType": "YulIdentifier",
                                            "src": "42553:12:45"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "42567:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "42549:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42549:21:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "42543:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42543:28:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42515:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42515:57:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42515:57:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42592:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42603:3:45",
                                        "type": "",
                                        "value": "640"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42588:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42588:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memberValue0",
                                            "nodeType": "YulIdentifier",
                                            "src": "42619:12:45"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "42633:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "42615:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42615:21:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "42609:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42609:28:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42581:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42581:57:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42581:57:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42647:44:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "42679:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42687:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42675:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42675:15:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "42669:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42669:22:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0_5",
                                  "nodeType": "YulTypedName",
                                  "src": "42651:14:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memberValue0_5",
                                    "nodeType": "YulIdentifier",
                                    "src": "42719:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42739:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42750:4:45",
                                        "type": "",
                                        "value": "0xc0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42735:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42735:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_uint120",
                                  "nodeType": "YulIdentifier",
                                  "src": "42700:18:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42700:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42700:56:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42765:44:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "42797:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42805:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42793:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42793:15:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "42787:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42787:22:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0_6",
                                  "nodeType": "YulTypedName",
                                  "src": "42769:14:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memberValue0_6",
                                    "nodeType": "YulIdentifier",
                                    "src": "42837:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42857:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42868:4:45",
                                        "type": "",
                                        "value": "0xe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42853:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42853:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_uint120",
                                  "nodeType": "YulIdentifier",
                                  "src": "42818:18:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42818:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42818:56:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42883:46:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "42915:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42923:4:45",
                                        "type": "",
                                        "value": "0x60"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42911:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42911:17:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "42905:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42905:24:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0_7",
                                  "nodeType": "YulTypedName",
                                  "src": "42887:14:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42938:18:45",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "42952:3:45",
                                    "type": "",
                                    "value": "159"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "42948:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42948:8:45"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "42942:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42976:9:45"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "42987:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42972:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42972:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "tail_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "43000:6:45"
                                          },
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "43008:9:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "42996:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42996:22:45"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "43020:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42992:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42992:31:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42965:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42965:59:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42965:59:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "43033:55:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memberValue0_7",
                                    "nodeType": "YulIdentifier",
                                    "src": "43065:14:45"
                                  },
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "43081:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "43047:17:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43047:41:45"
                              },
                              "variables": [
                                {
                                  "name": "tail_3",
                                  "nodeType": "YulTypedName",
                                  "src": "43037:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "43097:46:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "43129:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43137:4:45",
                                        "type": "",
                                        "value": "0x80"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43125:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43125:17:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "43119:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43119:24:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0_8",
                                  "nodeType": "YulTypedName",
                                  "src": "43101:14:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43163:9:45"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "43174:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43159:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43159:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "tail_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "43187:6:45"
                                          },
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "43195:9:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "43183:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "43183:22:45"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "43207:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43179:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43179:31:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43152:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43152:59:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43152:59:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "43220:52:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memberValue0_8",
                                    "nodeType": "YulIdentifier",
                                    "src": "43249:14:45"
                                  },
                                  {
                                    "name": "tail_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "43265:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "43231:17:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43231:41:45"
                              },
                              "variables": [
                                {
                                  "name": "end",
                                  "nodeType": "YulTypedName",
                                  "src": "43224:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43292:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43303:4:45",
                                        "type": "",
                                        "value": "0x60"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43288:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43288:20:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "43314:3:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43319:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "43310:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43310:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43281:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43281:49:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43281:49:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "43339:55:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "43382:6:45"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "43390:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_bytes32_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "43353:28:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43353:41:45"
                              },
                              "variables": [
                                {
                                  "name": "tail_4",
                                  "nodeType": "YulTypedName",
                                  "src": "43343:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43414:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43425:4:45",
                                        "type": "",
                                        "value": "0x80"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43410:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43410:20:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "43436:6:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43444:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "43432:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43432:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43403:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43403:52:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43403:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "43464:68:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "43517:6:45"
                                  },
                                  {
                                    "name": "tail_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "43525:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_struct_CriteriaResolver_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "43472:44:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43472:60:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "43464:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_struct$_AdvancedOrder_$4031_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_address_t_struct$_AdvancedOrder_$4031_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "41104:9:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "41115:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "41123:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "41131:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "41139:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "41147:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "41158:4:45",
                            "type": ""
                          }
                        ],
                        "src": "40724:2814:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "43680:145:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "43690:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "43702:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43713:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "43698:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43698:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "43690:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "43732:9:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "43747:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "43763:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "43768:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "43759:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "43759:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "43772:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "43755:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "43755:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "43743:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43743:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43725:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43725:51:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43725:51:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43796:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43807:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43792:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43792:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "43812:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43785:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43785:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43785:34:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "43641:9:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "43652:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "43660:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "43671:4:45",
                            "type": ""
                          }
                        ],
                        "src": "43543:282:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "43938:90:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "43948:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "43960:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43971:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "43956:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43956:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "43948:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "44004:6:45"
                                  },
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44012:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_enum_Side",
                                  "nodeType": "YulIdentifier",
                                  "src": "43983:20:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43983:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43983:39:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_enum$_Side_$3857__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "43907:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "43918:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "43929:4:45",
                            "type": ""
                          }
                        ],
                        "src": "43830:198:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "44246:276:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "44256:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44268:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44279:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "44264:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44264:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "44256:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44299:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "44310:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44292:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44292:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44292:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44337:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44348:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44333:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44333:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "44353:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44326:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44326:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44326:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44380:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44391:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44376:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44376:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "44396:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44369:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44369:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44369:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44423:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44434:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44419:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44419:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "44439:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44412:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44412:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44412:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44466:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44477:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44462:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44462:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "44487:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "44503:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "44508:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "44499:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "44499:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "44512:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "44495:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "44495:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "44483:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44483:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44455:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44455:61:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44455:61:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "44183:9:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "44194:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "44202:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "44210:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "44218:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "44226:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "44237:4:45",
                            "type": ""
                          }
                        ],
                        "src": "44033:489:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "44628:102:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "44638:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44650:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44661:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "44646:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44646:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "44638:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44680:9:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "44695:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "44711:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "44716:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "44707:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "44707:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "44720:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "44703:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "44703:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "44691:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44691:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44673:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44673:51:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44673:51:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "44597:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "44608:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "44619:4:45",
                            "type": ""
                          }
                        ],
                        "src": "44527:203:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "44864:145:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "44874:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44886:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44897:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "44882:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44882:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "44874:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44916:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "44927:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44909:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44909:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44909:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44954:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44965:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44950:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44950:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "44974:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "44990:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "44995:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "44986:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "44986:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "44999:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "44982:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "44982:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "44970:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44970:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44943:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44943:60:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44943:60:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "44825:9:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "44836:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "44844:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "44855:4:45",
                            "type": ""
                          }
                        ],
                        "src": "44735:274:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "45161:142:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45178:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "45189:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45171:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45171:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45171:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45216:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45227:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45212:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45212:18:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45232:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45205:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45205:30:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45205:30:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "45244:53:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "45270:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45282:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45293:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45278:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45278:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "45252:17:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45252:45:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "45244:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "45122:9:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "45133:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "45141:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "45152:4:45",
                            "type": ""
                          }
                        ],
                        "src": "45014:289:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "45493:262:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "45503:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45515:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45526:3:45",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "45511:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45511:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "45503:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45546:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "45557:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45539:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45539:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45539:25:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "45573:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45591:3:45",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45596:1:45",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "45587:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45587:11:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45600:1:45",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "45583:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45583:19:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "45577:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45622:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45633:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45618:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45618:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "45642:6:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "45650:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "45638:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45638:15:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45611:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45611:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45611:43:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45674:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45685:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45670:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45670:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "45694:6:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "45702:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "45690:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45690:15:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45663:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45663:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45663:43:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45726:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45737:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45722:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45722:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "45742:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45715:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45715:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45715:34:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_bytes32__to_t_bytes32_t_address_t_address_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "45438:9:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "45449:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "45457:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "45465:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "45473:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "45484:4:45",
                            "type": ""
                          }
                        ],
                        "src": "45308:447:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "45792:95:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45809:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45816:3:45",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45821:10:45",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "45812:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45812:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45802:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45802:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45802:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45849:1:45",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45852:4:45",
                                    "type": "",
                                    "value": "0x51"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45842:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45842:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45842:15:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45873:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45876:4:45",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "45866:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45866:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45866:15:45"
                            }
                          ]
                        },
                        "name": "panic_error_0x51",
                        "nodeType": "YulFunctionDefinition",
                        "src": "45760:127:45"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(pos, length), 0x20), 0)\n        }\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_address(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_address(value)\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_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_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_bool_t_bool_t_uint256_t_uint256__to_t_bool_t_bool_t_uint256_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, iszero(iszero(value0)))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory_6027() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0xa0)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function allocate_memory_6029() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x0160)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, 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_array_struct_AdvancedOrder_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function abi_decode_enum_ItemType(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(lt(value, 6)) { revert(0, 0) }\n    }\n    function abi_decode_struct_OfferItem(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0xa0) { revert(0, 0) }\n        value := allocate_memory_6027()\n        mstore(value, abi_decode_enum_ItemType(headStart))\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        mstore(add(value, 32), value_1)\n        mstore(add(value, 64), calldataload(add(headStart, 64)))\n        mstore(add(value, 96), calldataload(add(headStart, 96)))\n        mstore(add(value, 128), calldataload(add(headStart, 128)))\n    }\n    function abi_decode_array_struct_OfferItem_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_struct_AdvancedOrder_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let _3 := 0xa0\n        let srcEnd := add(add(offset, mul(_1, _3)), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _3) }\n        {\n            mstore(dst, abi_decode_struct_OfferItem(src, end))\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_struct_ConsiderationItem(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0xc0) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0xc0)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        value := memPtr\n        mstore(memPtr, abi_decode_enum_ItemType(headStart))\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        mstore(add(memPtr, 32), value_1)\n        mstore(add(memPtr, 64), calldataload(add(headStart, 64)))\n        mstore(add(memPtr, 96), calldataload(add(headStart, 96)))\n        mstore(add(memPtr, 128), calldataload(add(headStart, 128)))\n        let value_2 := calldataload(add(headStart, 160))\n        validator_revert_address(value_2)\n        mstore(add(memPtr, 160), value_2)\n    }\n    function abi_decode_array_struct_ConsiderationItem_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_struct_AdvancedOrder_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let _3 := 0xc0\n        let srcEnd := add(add(offset, mul(_1, _3)), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _3) }\n        {\n            mstore(dst, abi_decode_struct_ConsiderationItem(src, end))\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_enum_OrderType(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(lt(value, 4)) { revert(0, 0) }\n    }\n    function abi_decode_struct_OrderParameters(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0x0160) { revert(0, 0) }\n        value := allocate_memory_6029()\n        mstore(value, abi_decode_address(headStart))\n        mstore(add(value, 32), abi_decode_address(add(headStart, 32)))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        mstore(add(value, 64), abi_decode_array_struct_OfferItem_dyn(add(headStart, offset), end))\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        mstore(add(value, 96), abi_decode_array_struct_ConsiderationItem_dyn(add(headStart, offset_1), end))\n        mstore(add(value, 128), abi_decode_enum_OrderType(add(headStart, 128)))\n        mstore(add(value, 160), calldataload(add(headStart, 160)))\n        mstore(add(value, 192), calldataload(add(headStart, 192)))\n        mstore(add(value, 224), calldataload(add(headStart, 224)))\n        let _2 := 256\n        mstore(add(value, _2), calldataload(add(headStart, _2)))\n        let _3 := 288\n        mstore(add(value, _3), calldataload(add(headStart, _3)))\n        let _4 := 320\n        mstore(add(value, _4), calldataload(add(headStart, _4)))\n    }\n    function abi_decode_uint120(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n        let array_1 := allocate_memory(add(and(add(_1, 0x1f), not(31)), 0x20))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(array_1, _1), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_struct_AdvancedOrder(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0xa0) { revert(0, 0) }\n        value := allocate_memory_6027()\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        mstore(value, abi_decode_struct_OrderParameters(add(headStart, offset), end))\n        mstore(add(value, 32), abi_decode_uint120(add(headStart, 32)))\n        mstore(add(value, 64), abi_decode_uint120(add(headStart, 64)))\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        mstore(add(value, 96), abi_decode_bytes(add(headStart, offset_1), end))\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(0, 0) }\n        mstore(add(value, 128), abi_decode_bytes(add(headStart, offset_2), end))\n    }\n    function abi_decode_array_struct_AdvancedOrder_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_struct_AdvancedOrder_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let srcEnd := add(add(offset, shl(5, _1)), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _2) }\n        {\n            let innerOffset := calldataload(src)\n            if gt(innerOffset, 0xffffffffffffffff)\n            {\n                let _3 := 0\n                revert(_3, _3)\n            }\n            mstore(dst, abi_decode_struct_AdvancedOrder(add(add(offset, innerOffset), _2), end))\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_array_struct_CriteriaResolver_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$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_array_struct_AdvancedOrder_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_2), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\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_ItemType(value, pos)\n    {\n        if iszero(lt(value, 6)) { panic_error_0x21() }\n        mstore(pos, value)\n    }\n    function abi_encode_address(value, pos)\n    {\n        mstore(pos, and(value, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_struct_ReceivedItem(value, pos)\n    {\n        abi_encode_enum_ItemType(mload(value), pos)\n        let memberValue0 := mload(add(value, 0x20))\n        let _1 := sub(shl(160, 1), 1)\n        mstore(add(pos, 0x20), and(memberValue0, _1))\n        mstore(add(pos, 0x40), mload(add(value, 0x40)))\n        mstore(add(pos, 0x60), mload(add(value, 0x60)))\n        mstore(add(pos, 0x80), and(mload(add(value, 0x80)), _1))\n    }\n    function abi_encode_array_struct_Execution_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _2 := mload(srcPtr)\n            abi_encode_struct_ReceivedItem(mload(_2), pos)\n            mstore(add(pos, 0xa0), and(mload(add(_2, _1)), sub(shl(160, 1), 1)))\n            mstore(add(pos, 0xc0), mload(add(_2, 0x40)))\n            pos := add(pos, 0xe0)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_array_struct_Execution_dyn(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_struct$_OrderComponents_$3892_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        let _1 := add(headStart, offset)\n        if slt(sub(dataEnd, _1), 352) { revert(0, 0) }\n        value0 := _1\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_array$_t_struct$_Order_$4019_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_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_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_tuple_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_tuple_t_struct$_Order_$4019_calldata_ptrt_bytes32(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        let _1 := add(headStart, offset)\n        if slt(sub(dataEnd, _1), 64) { revert(0, 0) }\n        value0 := _1\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_struct$_AdvancedOrder_$4031_calldata_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_bytes32(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if slt(sub(dataEnd, _2), 160) { revert(0, 0) }\n        value0 := _2\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        value3 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_bytes32t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(0, 0) }\n        let value4_1, value5_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_2), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n        value6 := calldataload(add(headStart, 96))\n        value7 := calldataload(add(headStart, 128))\n    }\n    function abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        let tail_1 := add(headStart, 64)\n        mstore(headStart, 64)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 96)\n        let _1 := 0x20\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, iszero(iszero(mload(srcPtr))))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        mstore(add(headStart, _1), sub(pos, headStart))\n        tail := abi_encode_array_struct_Execution_dyn(value1, pos)\n    }\n    function abi_encode_tuple_t_string_memory_ptr_t_bytes32_t_address__to_t_string_memory_ptr_t_bytes32_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        tail := abi_encode_string(value0, add(headStart, 96))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_struct$_BasicOrderParameters_$3980_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        let _1 := add(headStart, offset)\n        if slt(sub(dataEnd, _1), 576) { revert(0, 0) }\n        value0 := _1\n    }\n    function abi_decode_tuple_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_bytes32t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_array_struct_AdvancedOrder_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_2), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n        let offset_3 := calldataload(add(headStart, 96))\n        if gt(offset_3, _1) { revert(0, 0) }\n        let value5_1, value6_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_3), dataEnd)\n        value5 := value5_1\n        value6 := value6_1\n        value7 := calldataload(add(headStart, 128))\n        value8 := calldataload(add(headStart, 160))\n    }\n    function abi_decode_tuple_t_array$_t_struct$_OrderComponents_$3892_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_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function convert_array_t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr(value, length) -> converted\n    {\n        let dst := allocate_memory(array_allocation_size_array_struct_AdvancedOrder_dyn(length))\n        let dst_1 := dst\n        mstore(dst, length)\n        let _1 := 0x20\n        dst := add(dst, _1)\n        let _2 := 5\n        let srcEnd := add(value, shl(_2, length))\n        if gt(srcEnd, calldatasize()) { revert(0, 0) }\n        let src := value\n        for { } lt(src, srcEnd) { src := add(src, _1) }\n        {\n            let innerOffset := calldataload(src)\n            let _3 := 0xffffffffffffffff\n            if gt(innerOffset, _3)\n            {\n                let _4 := 0\n                revert(_4, _4)\n            }\n            let _5 := add(value, innerOffset)\n            if slt(sub(calldatasize(), _5), 0xa0)\n            {\n                let _6 := 0\n                revert(_6, _6)\n            }\n            let value_1 := allocate_memory_6027()\n            mstore(value_1, calldataload(_5))\n            let value_2 := calldataload(add(_5, _1))\n            if iszero(lt(value_2, 2))\n            {\n                let _7 := 0\n                revert(_7, _7)\n            }\n            mstore(add(value_1, _1), value_2)\n            let _8 := 64\n            mstore(add(value_1, _8), calldataload(add(_5, _8)))\n            let _9 := 96\n            mstore(add(value_1, _9), calldataload(add(_5, _9)))\n            let _10 := 128\n            let offset := calldataload(add(_5, _10))\n            if gt(offset, _3)\n            {\n                let _11 := 0\n                revert(_11, _11)\n            }\n            let _12 := add(_5, offset)\n            if iszero(slt(add(_12, 0x1f), calldatasize()))\n            {\n                let _13 := 0\n                revert(_13, _13)\n            }\n            let _14 := calldataload(_12)\n            let dst_2 := allocate_memory(array_allocation_size_array_struct_AdvancedOrder_dyn(_14))\n            let dst_3 := dst_2\n            mstore(dst_2, _14)\n            dst_2 := add(dst_2, _1)\n            let srcEnd_1 := add(add(_12, shl(_2, _14)), _1)\n            if gt(srcEnd_1, calldatasize())\n            {\n                let _15 := 0\n                revert(_15, _15)\n            }\n            let src_1 := add(_12, _1)\n            for { } lt(src_1, srcEnd_1) { src_1 := add(src_1, _1) }\n            {\n                mstore(dst_2, calldataload(src_1))\n                dst_2 := add(dst_2, _1)\n            }\n            mstore(add(value_1, _10), dst_3)\n            mstore(dst, value_1)\n            dst := add(dst, _1)\n        }\n        converted := dst_1\n    }\n    function access_calldata_tail_t_array$_t_struct$_OfferItem_$3904_calldata_ptr_$dyn_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(), mul(length, 0xa0))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_struct$_OfferItem_$3904_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_struct_OfferItem(headStart, dataEnd)\n    }\n    function access_calldata_tail_t_array$_t_struct$_ConsiderationItem_$3918_calldata_ptr_$dyn_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(), mul(length, 0xc0))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_struct$_ConsiderationItem_$3918_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        value0 := abi_decode_struct_ConsiderationItem(headStart, dataEnd)\n    }\n    function abi_decode_tuple_t_enum$_OrderType_$3815(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_enum_OrderType(headStart)\n    }\n    function convert_t_struct$_AdvancedOrder_$4031_calldata_ptr_to_t_struct$_AdvancedOrder_$4031_memory_ptr(value) -> converted\n    {\n        converted := abi_decode_struct_AdvancedOrder(value, calldatasize())\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$_Order_$4019_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(62)))) { revert(0, 0) }\n        addr := add(base_ref, rel_offset_of_tail)\n    }\n    function access_calldata_tail_t_struct$_OrderParameters_$4013_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(350)))) { revert(0, 0) }\n        addr := add(base_ref, rel_offset_of_tail)\n    }\n    function convert_t_struct$_OrderParameters_$4013_calldata_ptr_to_t_struct$_OrderParameters_$4013_memory_ptr(value) -> converted\n    {\n        converted := abi_decode_struct_OrderParameters(value, calldatasize())\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 abi_decode_struct_FulfillmentComponent(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0x40) { revert(0, 0) }\n        let 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        value := memPtr\n        mstore(memPtr, calldataload(headStart))\n        mstore(add(memPtr, 32), calldataload(add(headStart, 32)))\n    }\n    function convert_array_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr(value, length) -> converted\n    {\n        let dst := allocate_memory(array_allocation_size_array_struct_AdvancedOrder_dyn(length))\n        let dst_1 := dst\n        mstore(dst, length)\n        let _1 := 0x20\n        dst := add(dst, _1)\n        let srcEnd := add(value, shl(5, length))\n        if gt(srcEnd, calldatasize()) { revert(0, 0) }\n        let src := value\n        for { } lt(src, srcEnd) { src := add(src, _1) }\n        {\n            let innerOffset := calldataload(src)\n            if gt(innerOffset, 0xffffffffffffffff)\n            {\n                let _2 := 0\n                revert(_2, _2)\n            }\n            let _3 := add(value, innerOffset)\n            if iszero(slt(add(_3, 0x1f), calldatasize()))\n            {\n                let _4 := 0\n                revert(_4, _4)\n            }\n            let _5 := calldataload(_3)\n            let dst_2 := allocate_memory(array_allocation_size_array_struct_AdvancedOrder_dyn(_5))\n            let dst_3 := dst_2\n            mstore(dst_2, _5)\n            dst_2 := add(dst_2, _1)\n            let srcEnd_1 := add(add(_3, shl(6, _5)), _1)\n            if gt(srcEnd_1, calldatasize())\n            {\n                let _6 := 0\n                revert(_6, _6)\n            }\n            let src_1 := add(_3, _1)\n            for { } lt(src_1, srcEnd_1) { src_1 := add(src_1, 0x40) }\n            {\n                mstore(dst_2, abi_decode_struct_FulfillmentComponent(src_1, calldatasize()))\n                dst_2 := add(dst_2, _1)\n            }\n            mstore(dst, dst_3)\n            dst := add(dst, _1)\n        }\n        converted := dst_1\n    }\n    function abi_decode_tuple_t_address_payable(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 access_calldata_tail_t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_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(), shl(6, length))) { revert(0, 0) }\n    }\n    function access_calldata_tail_t_struct$_OrderComponents_$3892_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(350)))) { revert(0, 0) }\n        addr := add(base_ref, rel_offset_of_tail)\n    }\n    function access_calldata_tail_t_struct$_Fulfillment_$4062_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(62)))) { revert(0, 0) }\n        addr := add(base_ref, rel_offset_of_tail)\n    }\n    function access_calldata_tail_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_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(), shl(6, length))) { revert(0, 0) }\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_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function abi_encode_array_struct_ReceivedItem_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            abi_encode_struct_ReceivedItem(mload(srcPtr), pos)\n            pos := add(pos, 0xa0)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_array$_t_struct$_SpentItem_$3928_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_ReceivedItem_$3940_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_address_t_array$_t_struct$_SpentItem_$3928_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_ReceivedItem_$3940_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 128\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, value0)\n        let _2 := 32\n        let _3 := sub(shl(160, 1), 1)\n        mstore(add(headStart, _2), and(value1, _3))\n        let _4 := 64\n        mstore(add(headStart, _4), _1)\n        let pos := tail_1\n        let length := mload(value2)\n        mstore(tail_1, length)\n        pos := add(headStart, 160)\n        let srcPtr := add(value2, _2)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _5 := mload(srcPtr)\n            abi_encode_enum_ItemType(mload(_5), pos)\n            mstore(add(pos, _2), and(mload(add(_5, _2)), _3))\n            mstore(add(pos, _4), mload(add(_5, _4)))\n            let _6 := 0x60\n            mstore(add(pos, _6), mload(add(_5, _6)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _2)\n        }\n        mstore(add(headStart, 0x60), sub(pos, headStart))\n        tail := abi_encode_array_struct_ReceivedItem_dyn(value3, pos)\n    }\n    function abi_decode_tuple_t_struct$_FulfillmentComponent_$4067_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_struct_FulfillmentComponent(headStart, dataEnd)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\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_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    function abi_encode_array_struct_OfferItem_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _2 := mload(srcPtr)\n            abi_encode_enum_ItemType(mload(_2), pos)\n            mstore(add(pos, _1), and(mload(add(_2, _1)), sub(shl(160, 1), 1)))\n            let _3 := 0x40\n            mstore(add(pos, _3), mload(add(_2, _3)))\n            let _4 := 0x60\n            mstore(add(pos, _4), mload(add(_2, _4)))\n            let _5 := 0x80\n            mstore(add(pos, _5), mload(add(_2, _5)))\n            pos := add(pos, 0xa0)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_array_struct_ConsiderationItem_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _2 := mload(srcPtr)\n            abi_encode_enum_ItemType(mload(_2), pos)\n            let memberValue0 := mload(add(_2, _1))\n            let _3 := sub(shl(160, 1), 1)\n            mstore(add(pos, _1), and(memberValue0, _3))\n            let _4 := 0x40\n            mstore(add(pos, _4), mload(add(_2, _4)))\n            let _5 := 0x60\n            mstore(add(pos, _5), mload(add(_2, _5)))\n            let _6 := 0x80\n            mstore(add(pos, _6), mload(add(_2, _6)))\n            let _7 := 0xa0\n            mstore(add(pos, _7), and(mload(add(_2, _7)), _3))\n            pos := add(pos, 0xc0)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_enum_OrderType(value, pos)\n    {\n        if iszero(lt(value, 4)) { panic_error_0x21() }\n        mstore(pos, value)\n    }\n    function abi_encode_uint120(value, pos)\n    {\n        mstore(pos, and(value, 0xffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_array_bytes32_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_enum_Side(value, pos)\n    {\n        if iszero(lt(value, 2)) { panic_error_0x21() }\n        mstore(pos, value)\n    }\n    function abi_encode_array_struct_CriteriaResolver_dyn(value, pos) -> end\n    {\n        let pos_1 := pos\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let tail := add(add(pos_1, shl(5, length)), _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail, pos_1), not(31)))\n            let _2 := mload(srcPtr)\n            let _3 := 0xa0\n            mstore(tail, mload(_2))\n            let memberValue0 := mload(add(_2, _1))\n            abi_encode_enum_Side(memberValue0, add(tail, _1))\n            let _4 := 0x40\n            mstore(add(tail, _4), mload(add(_2, _4)))\n            let _5 := 0x60\n            mstore(add(tail, _5), mload(add(_2, _5)))\n            let _6 := 0x80\n            let memberValue0_1 := mload(add(_2, _6))\n            mstore(add(tail, _6), _3)\n            tail := abi_encode_array_bytes32_dyn(memberValue0_1, add(tail, _3))\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        end := tail\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_struct$_AdvancedOrder_$4031_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_address_t_struct$_AdvancedOrder_$4031_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), 160)\n        let _1 := 320\n        let memberValue0 := mload(value2)\n        mstore(add(headStart, 160), 160)\n        abi_encode_address(mload(memberValue0), add(headStart, _1))\n        let memberValue0_1 := mload(add(memberValue0, 32))\n        let _2 := 0x0160\n        abi_encode_address(memberValue0_1, add(headStart, _2))\n        let memberValue0_2 := mload(add(memberValue0, 64))\n        mstore(add(headStart, 384), _2)\n        let tail_1 := abi_encode_array_struct_OfferItem_dyn(memberValue0_2, add(headStart, 672))\n        let memberValue0_3 := mload(add(memberValue0, 0x60))\n        mstore(add(headStart, 416), add(sub(tail_1, headStart), not(319)))\n        let tail_2 := abi_encode_array_struct_ConsiderationItem_dyn(memberValue0_3, tail_1)\n        let memberValue0_4 := mload(add(memberValue0, 0x80))\n        abi_encode_enum_OrderType(memberValue0_4, add(headStart, 448))\n        mstore(add(headStart, 480), mload(add(memberValue0, 160)))\n        mstore(add(headStart, 512), mload(add(memberValue0, 0xc0)))\n        mstore(add(headStart, 544), mload(add(memberValue0, 0xe0)))\n        let _3 := 0x0100\n        mstore(add(headStart, 576), mload(add(memberValue0, _3)))\n        let _4 := 0x0120\n        mstore(add(headStart, 608), mload(add(memberValue0, _4)))\n        mstore(add(headStart, 640), mload(add(memberValue0, _1)))\n        let memberValue0_5 := mload(add(value2, 32))\n        abi_encode_uint120(memberValue0_5, add(headStart, 0xc0))\n        let memberValue0_6 := mload(add(value2, 64))\n        abi_encode_uint120(memberValue0_6, add(headStart, 0xe0))\n        let memberValue0_7 := mload(add(value2, 0x60))\n        let _5 := not(159)\n        mstore(add(headStart, _3), add(sub(tail_2, headStart), _5))\n        let tail_3 := abi_encode_string(memberValue0_7, tail_2)\n        let memberValue0_8 := mload(add(value2, 0x80))\n        mstore(add(headStart, _4), add(sub(tail_3, headStart), _5))\n        let end := abi_encode_string(memberValue0_8, tail_3)\n        mstore(add(headStart, 0x60), sub(end, headStart))\n        let tail_4 := abi_encode_array_bytes32_dyn(value3, end)\n        mstore(add(headStart, 0x80), sub(tail_4, headStart))\n        tail := abi_encode_array_struct_CriteriaResolver_dyn(value4, tail_4)\n    }\n    function abi_encode_tuple_t_address_payable_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 abi_encode_tuple_t_enum$_Side_$3857__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        abi_encode_enum_Side(value0, headStart)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 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_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\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_string(value1, add(headStart, 64))\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_bytes32__to_t_bytes32_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function panic_error_0x51()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x51)\n        revert(0, 0x24)\n    }\n}",
                  "id": 45,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "3164": [
                  {
                    "length": 32,
                    "start": 8877
                  }
                ],
                "3166": [
                  {
                    "length": 32,
                    "start": 8917
                  }
                ],
                "3168": [
                  {
                    "length": 32,
                    "start": 8839
                  }
                ],
                "3170": [
                  {
                    "length": 32,
                    "start": 2001
                  },
                  {
                    "length": 32,
                    "start": 9402
                  }
                ],
                "3172": [
                  {
                    "length": 32,
                    "start": 2104
                  },
                  {
                    "length": 32,
                    "start": 9119
                  }
                ],
                "3174": [
                  {
                    "length": 32,
                    "start": 2217
                  },
                  {
                    "length": 32,
                    "start": 9537
                  }
                ],
                "3176": [
                  {
                    "length": 32,
                    "start": 8793
                  }
                ],
                "3178": [
                  {
                    "length": 32,
                    "start": 9001
                  }
                ],
                "3181": [
                  {
                    "length": 32,
                    "start": 3442
                  },
                  {
                    "length": 32,
                    "start": 13593
                  }
                ],
                "3183": [
                  {
                    "length": 32,
                    "start": 13637
                  }
                ]
              },
              "linkReferences": {},
              "object": "6080604052600436106100e85760003560e01c8063a81744041161008a578063f47b774011610059578063f47b7740146102c7578063fb0f3ee1146102eb578063fb4c2af9146102fe578063fd9f1e101461031157600080fd5b8063a81744041461026d578063b3a34c4c14610280578063df7b0dac14610293578063ed98a574146102a657600080fd5b806355944a42116100c657806355944a42146101e8578063627cdcb91461020857806379df72bd1461021d578063881477321461023d57600080fd5b806306fdde03146100ed5780632d0335ab1461011857806346423aa714610146575b600080fd5b3480156100f957600080fd5b50610102610331565b60405161010f9190613fe4565b60405180910390f35b34801561012457600080fd5b5061013861013336600461401c565b610340565b60405190815260200161010f565b34801561015257600080fd5b506101c6610161366004614039565b6000908152600260209081526040918290208251608081018452905460ff8082161515808452610100830490911615159383018490526001600160781b036201000083048116958401869052600160881b909204909116606090920182905293919291565b604080519415158552921515602085015291830152606082015260800161010f565b6101fb6101f63660046145e3565b610360565b60405161010f9190614745565b34801561021457600080fd5b50610138610381565b34801561022957600080fd5b50610138610238366004614758565b61038b565b34801561024957600080fd5b5061025d610258366004614793565b61051c565b604051901515815260200161010f565b6101fb61027b3660046147d4565b61052f565b61025d61028e36600461483f565b6105ad565b61025d6102a1366004614888565b61061e565b6102b96102b43660046148ff565b61063c565b60405161010f9291906149a7565b3480156102d357600080fd5b506102dc6106c5565b60405161010f939291906149f6565b61025d6102f9366004614a29565b6106dd565b6102b961030c366004614a64565b6106e8565b34801561031d57600080fd5b5061025d61032c366004614793565b610716565b606061033b610722565b905090565b6001600160a01b0381166000908152600160205260408120545b92915050565b6060610377866103708688614b34565b8585610741565b9695505050505050565b600061033b61075c565b60408051610160810190915260009061035a90806103ac602086018661401c565b6001600160a01b031681526020018460200160208101906103cd919061401c565b6001600160a01b031681526020016103e86040860186614c68565b808060200260200160405190810160405280939291908181526020016000905b828210156104345761042560a08302860136819003810190614cb0565b81526020019060010190610408565b505050918352505060200161044c6060860186614ccc565b808060200260200160405190810160405280939291908181526020016000905b828210156104985761048960c08302860136819003810190614d14565b8152602001906001019061046c565b50505091835250506020016104b360a0860160808701614d30565b60038111156104c4576104c4614677565b81526020018460a0013581526020018460c0013581526020018460e0013581526020018461010001358152602001846101200135815260200184806060019061050d9190614ccc565b909152506101408401356107b9565b600061052883836108ff565b9392505050565b60606105a261053e8686610abb565b604080516000808252602082019092529061059a565b6105876040805160a081019091526000808252602082019081526020016000815260200160008152602001606081525090565b8152602001906001900390816105545790505b508585610741565b90505b949350505050565b60006105286105bb84610b76565b6040805160008082526020820190925290610617565b6106046040805160a081019091526000808252602082019081526020016000815260200160008152602001606081525090565b8152602001906001900390816105d15790505b5084610c21565b60006105a261062c86614d4b565b6106368587614b34565b84610c21565b6060806106b461064c8b8b610abb565b60408051600080825260208201909252906106a8565b6106956040805160a081019091526000808252602082019081526020016000815260200160008152602001606081525090565b8152602001906001900390816106625790505b508a8a8a8a8a8a610d12565b915091509850989650505050505050565b60606000806106d2610d51565b925092509250909192565b600061035a82610db0565b6060806107048b6106f98b8d614b34565b8a8a8a8a8a8a610d12565b91509150995099975050505050505050565b6000610528838361104a565b606060206000526d0d436f6e73696465726174696f6e602d5260606000f35b606061075185856001885161124b565b6105a2858484611562565b600061076661168d565b503360008181526001602081815260409283902080549092019182905591518181529092917f7ab0fc7de8910a6100b24df423c3d0835534506dca9473d30c3e7df51241b2cf910160405180910390a290565b610140820151604080519084015180516000939284927f000000000000000000000000000000000000000000000000000000000000000092602090910190845b81811015610826578251601f1901805186825260c0822086529052602093840193909201916001016107f9565b506020810260405120945050505060007f00000000000000000000000000000000000000000000000000000000000000009150604051602060608901510160005b86811015610894578151601f1901805186825260e082208552905260209283019290910190600101610867565b505060408051602087029020601f198a0180517f00000000000000000000000000000000000000000000000000000000000000008252928b01805197815260608c018051938152610140909c019a8b5261018082209390915295909552939097525050925250919050565b600061090961168d565b60008083815b81811015610aae573687878381811061092a5761092a614d57565b905060200281019061093c9190614d6d565b9050366109498280614d8d565b9050610958602082018261401c565b945061096b61096682614da4565b6116b2565b60008181526002602090815260408083208151608081018352905460ff808216151583526101008204161515938201939093526001600160781b03620100008404811692820192909252600160881b9092041660608201529197506109d5908890839060016116ed565b508051610aa057610a2886886109ee6020870187614db0565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117a692505050565b600087815260026020908152604091829020805460ff19166001179055610a5391840190840161401c565b6001600160a01b0316866001600160a01b03167ffde361574a066b44b3b5fe98a87108b7565e327327954c4faeea56a4e6491a0a89604051610a9791815260200190565b60405180910390a35b83600101935050505061090f565b5060019695505050505050565b606081806001600160401b03811115610ad657610ad6614052565b604051908082528060200260200182016040528015610b0f57816020015b610afc613ea3565b815260200190600190039081610af45790505b50915060005b81811015610b6e57610b49858583818110610b3257610b32614d57565b9050602002810190610b449190614d6d565b610b76565b838281518110610b5b57610b5b614d57565b6020908102919091010152600101610b15565b505092915050565b610b7e613ea3565b6040805160a0810190915280610b948480614d8d565b610b9d90614da4565b815260200160016001600160781b0316815260200160016001600160781b03168152602001838060200190610bd29190614db0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050604080516020818101909252928352909201525092915050565b6000610c2b6117fb565b60606000806000610c3f888860018761180a565b604080516001808252818301909252939650919450925060009190816020015b610c67613ea3565b815260200190600190039081610c5f5790505090508881600081518110610c9057610c90614d57565b6020026020010181905250610ca58189611a93565b600081600081518110610cba57610cba614d57565b6020026020010151600001519050610cda8185858461012001518c611e10565b610cf885826000015183602001513385604001518660600151612014565b610d026001600055565b5060019998505050505050505050565b606080610d228a8a60008661124b565b610d408a610d30898b614e44565b610d3a888a614e44565b87612079565b909b909a5098505050505050505050565b6060600080610d5e612255565b6040805160018082528183019092529193507f000000000000000000000000000000000000000000000000000000000000000092506020820181803683375050603160f81b6020830152509391925090565b600060046101243590810490600316600182113415811480610dec57604051630a61be9f60e41b81523460048201526024015b60405180910390fd5b5060008060006003861160a08102602401359350600287146002881160028903020192506001830181026002861502880103915050610e2f88868487878661234b565b6000610e4160808a0160608b0161401c565b90506101c46003881160200201356000866005811115610e6357610e63614677565b03610eaf57610e8e83610e7c60c08d0160a08e0161401c565b84338e60c001358f60e001358761268b565b610eaa60408b013583610ea56102008e018e614f16565b61273f565b610d02565b6040805160208082528183019092526000916020820181803683370190505090506002896005811115610ee457610ee4614677565b03610f4457610f0f610efc60c08d0160a08e0161401c565b84338e60c001358f60e001358787612804565b610f3f3384610f2160208f018f61401c565b8e604001358f806102000190610f379190614f16565b600088612851565b611030565b6003896005811115610f5857610f58614677565b03610f8357610f0f610f7060c08d0160a08e0161401c565b84338e60c001358f60e0013587876128d8565b6004896005811115610f9757610f97614677565b03610ff557610fbf610fac60208d018d61401c565b33858e602001358f604001358787612804565b610f3f83338d60a0016020810190610fd7919061401c565b8e60e001358f806102000190610fed9190614f16565b600188612851565b61101861100560208d018d61401c565b33858e602001358f6040013587876128d8565b61103083338d60a0016020810190610fd7919061401c565b6110398161290e565b505060019998505050505050505050565b600061105461168d565b60008083815b81811015610aae573687878381811061107557611075614d57565b90506020028101906110879190614d8d565b9050611096602082018261401c565b94506110a8604082016020830161401c565b9350336001600160a01b038616148015906110cc5750336001600160a01b03851614155b156110ea5760405163203b1cdd60e21b815260040160405180910390fd5b60006111d9604051806101600160405280886001600160a01b03168152602001876001600160a01b031681526020018480604001906111299190614c68565b808060200260200160405190810160405280939291908181526020016000905b828210156111755761116660a08302860136819003810190614cb0565b81526020019060010190611149565b505050918352505060200161118d6060860186614ccc565b808060200260200160405190810160405280939291908181526020016000905b82821015610498576111ca60c08302860136819003810190614d14565b815260200190600101906111ad565b60008181526002602052604090819020805461ffff1916610100179055519091506001600160a01b0380871691908816907f6bacc01dbe442496068f7d234edd811f1a5f833243e0aec824f86ab861f3c90d906112399085815260200190565b60405180910390a3505060010161105a565b6112536117fb565b83516000816001600160401b0381111561126f5761126f614052565b604051908082528060200260200182016040528015611298578160200160208202803683370190505b5090506000815260005b828110156114b75760008782815181106112be576112be614d57565b60200260200101519050846000036112e35760006020909101526001810182526114af565b60008060006112f4848b8b8961180a565b9250925092506001850186528160000361131b5750506000602090920191909152506114af565b8286868151811061132e5761132e614d57565b6020908102919091010152835160a081015160c0820151604090920151600019909a019990918290039042839003908183039060005b81518110156113fb57600082828151811061138157611381614d57565b60200260200101519050600061139c8a8a8460800151612937565b905081608001518260600151036113b957606082018190526113ce565b6113c88a8a8460600151612937565b60608301525b6080820181905260608201516113e9908288888b6000612987565b60609092019190915250600101611364565b5088516060015160005b81518110156114a357600082828151811061142257611422614d57565b60200260200101519050600061143d8b8b8460800151612937565b9050816080015182606001510361145a576060820181905261146f565b6114698b8b8460600151612937565b60608301525b60808201819052606082015161148a908289898c6001612987565b60608301525060a0810151608090910152600101611405565b50505050505050505050505b6001016112a2565b506114c28686611a93565b8315330260005b83811015611558576000801b8382815181106114e7576114e7614d57565b6020026020010151031561155057600088828151811061150957611509614d57565b602002602001015160000151905061154e84838151811061152c5761152c614d57565b6020026020010151826000015183602001518685604001518660600151612014565b505b6001016114c9565b5050505050505050565b606081806001600160401b0381111561157d5761157d614052565b6040519080825280602002602001820160405280156115b657816020015b6115a3613ed7565b81526020019060019003908161159b5790505b5091506000805b8281101561166b57368686838181106115d8576115d8614d57565b90506020028101906115ea9190614d6d565b9050600061160e896115fc8480614f16565b6116096020870187614f16565b6129e2565b905080602001516001600160a01b03168160000151608001516001600160a01b03160361164057600184019350611661565b80868585038151811061165557611655614d57565b60200260200101819052505b50506001016115bd565b508015611679578083510383525b506116848583612cd3565b50509392505050565b6001600054146116b057604051637fa8a98760e01b815260040160405180910390fd5b565b60006116c8826060015151836101400151612ee8565b81516001600160a01b031660009081526001602052604090205461035a9083906107b9565b600083602001511561172357811561171b57604051630694555d60e21b815260048101869052602401610de3565b5060006105a5565b60408401516001600160781b03161561179b5782156117585760405163ee9e0e6360e01b815260048101869052602401610de3565b83606001516001600160781b031684604001516001600160781b03161061179b57811561171b576040516310fda3e160e01b815260048101869052602401610de3565b506001949350505050565b336001600160a01b038416036117bb57505050565b60006117e86117c8612255565b61190160f01b600090815260029190915260228581526042822091905290565b90506117f5848284612f09565b50505050565b61180361168d565b6002600055565b6000806000808760000151905061182a8160a001518260c001518861304c565b61183e575060009250829150819050611a89565b602088015160408901516001600160781b03918216911680821180611861575081155b1561187f57604051632d02959960e11b815260040160405180910390fd5b808210801561189357506080830151600116155b156118b15760405163a11b63ff60e01b815260040160405180910390fd5b6118ba836116b2565b95506118dc8a8a89898760e00151886080015189600001518a60200151613092565b60008681526002602090815260408083208151608081018352905460ff808216151583526101008204161515938201939093526001600160781b03620100008404811692820192909252600160881b9092041660608201529061194390889083908c6116ed565b611958575060009450849350611a8992505050565b8051611971576119718460000151888d606001516117a6565b604081015160608201516001600160781b0391821691168015611a3557836001036119a1578094508093506119cd565b8381146119cd576119b28483614f75565b91506119be8186614f75565b94506119ca8185614f75565b93505b836119d88684614f94565b11156119e45781840394505b600089815260026020526040902080546001600160781b03868116600160881b026001600160881b03868a019290921662010000026001600160881b03199093169290921760011716179055611a7e565b600089815260026020526040902080546001600160781b03868116600160881b026001600160881b0391891662010000026001600160881b031990931692909217600117161790555b509295509093505050505b9450945094915050565b8051825160005b82811015611cda576000848281518110611ab657611ab6614d57565b60200260200101519050600081600001519050838110611ae9576040516321a561b160e21b815260040160405180910390fd5b868181518110611afb57611afb614d57565b6020026020010151602001516001600160781b0316600003611b1e575050611cd2565b6000878281518110611b3257611b32614d57565b60209081029190910101515160408401519091506000808086602001516001811115611b6057611b60614677565b03611bfa57604084015180518410611b8b57604051635fd9fc6760e11b815260040160405180910390fd5b6000818581518110611b9f57611b9f614d57565b602090810291909101015180516040820151909550935090506004841460030381816005811115611bd257611bd2614677565b90816005811115611be557611be5614677565b90525050606088015160409091015250611c8b565b606084015180518410611c20576040516330446bef60e11b815260040160405180910390fd5b6000818581518110611c3457611c34614d57565b602090810291909101015180516040820151909550935090506004841460030381816005811115611c6757611c67614677565b90816005811115611c7a57611c7a614677565b905250506060880151604090910152505b611c958260031090565b611cb257604051634a75b57b60e11b815260040160405180910390fd5b8015611ccb57611ccb8660600151828860800151613173565b5050505050505b600101611a9a565b5060005b81811015611e09576000858281518110611cfa57611cfa614d57565b6020026020010151905080602001516001600160781b0316600003611d1f5750611e01565b6000868381518110611d3357611d33614d57565b60200260200101516000015190506000816060015151905060005b81811015611daa57611d8183606001518281518110611d6f57611d6f614d57565b60200260200101516000015160031090565b15611da25760405160016202297360e61b0319815260040160405180910390fd5b600101611d4e565b505060408101515160005b81811015611dfc57611dd683604001518281518110611d6f57611d6f614d57565b15611df45760405163a6cfc67360e01b815260040160405180910390fd5b600101611db5565b505050505b600101611cde565b5050505050565b60008560a001518660c00151611e269190614fac565b905060008660a0015142611e3a9190614fac565b90506000611e488284614fac565b60408051602080825281830190925291925034916000916020820181803683370190505090506131e360005b8b6040015151811015611f2c5760008c604001518281518110611e9957611e99614d57565b602002602001015190506000611ebe826060015183608001518f8f8c8c8f60006132a0565b606083018190523360808401529050600082516005811115611ee257611ee2614677565b03611f0e5785811115611f0857604051631a783b8d60e01b815260040160405180910390fd5b80860395505b611f22828f600001518d888863ffffffff16565b5050600101611e74565b506131e3905060005b8b6060015151811015611fed5760008c606001518281518110611f5a57611f5a614d57565b602002602001015190506000611f7f826060015183608001518f8f8c8c8f60016132a0565b6060830181905260a083015160808401529050600082516005811115611fa757611fa7614677565b03611fd35785811115611fcd57604051631a783b8d60e01b815260040160405180910390fd5b80860395505b611fe382338c888863ffffffff16565b5050600101611f35565b5050611ff88161290e565b81156120085761200833836132ec565b50505050505050505050565b60608290506060829050856001600160a01b0316876001600160a01b03167f9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f318a8886866040516120679493929190614ffd565b60405180910390a35050505050505050565b82518251606091829161208c8183614f94565b6001600160401b038111156120a3576120a3614052565b6040519080825280602002602001820160405280156120dc57816020015b6120c9613ed7565b8152602001906001900390816120c15790505b5092506000805b838110156121755760008982815181106120ff576120ff614d57565b6020026020010151905060006121188c6000848c613340565b905080602001516001600160a01b03168160000151608001516001600160a01b03160361214a5760018401935061216b565b80878585038151811061215f5761215f614d57565b60200260200101819052505b50506001016120e3565b5060005b8281101561220d57600088828151811061219557612195614d57565b6020026020010151905060006121ae8c6001848c613340565b905080602001516001600160a01b03168160000151608001516001600160a01b0316036121e057600184019350612203565b80878588860103815181106121f7576121f7614d57565b60200260200101819052505b5050600101612179565b50801561221b578084510384525b50825160000361223e5760405163d5da9a1b60e01b815260040160405180910390fd5b6122488884612cd3565b9350505094509492505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146123265761033b604080517f000000000000000000000000000000000000000000000000000000000000000060208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6123536117fb565b612369866101200135876101400135600161304c565b506123726133db565b61239a612383610200880188614f16565b61238f91506001614f94565b876101e00135612ee8565b6000807f00000000000000000000000000000000000000000000000000000000000000009050806080528560a0526060602460c037604060646101203760e06080206101605261026435602081026102a0016001610264350181526020810190508781526080602460208301376101608760a0528660c052600060e05261020435925060005b8381101561246b578060400261028401602081610100376040816101203760208301925060e0608020835260a084019350898452886020850152604081606086013750600101612420565b60206001850102610160206060526102643593505b838110156124b1578060400261028401915060a0830192508883528760208401526040826060850137600101612480565b505050505060007f00000000000000000000000000000000000000000000000000000000000000009050806080528260a052606060c460c03760206101046101203760c0608020600052602060002060e052602061026435026102000160018152836020820152606060c4604083013750506084356001600160a01b0381166000908152600160205260408120547f000000000000000000000000000000000000000000000000000000000000000060808190529091506040608460a03760605161010052886101205260a061014461014037816101e0526101806080209350505050602061026435026101800181815233602082015260806040820152610120606082015260a061026435026101e00160a4356084357f9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f318385a35050600060605261262681886101600135888a6060016020810190612611919061401c565b61262160a08d0160808e0161401c565b61341c565b6126828161263a60808a0160608b0161401c565b6126486102208b018b614db0565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061346c92505050565b50505050505050565b80156126e75760006040519050632671a55160e11b815260206004820152600160248201528760448201528660648201528560848201528460a48201528360c48201528260e48201526126e1828261010461350e565b50612682565b60028760058111156126fb576126fb614677565b0361273257816001146127215760405163efcc00b160e01b815260040160405180910390fd5b61272d868686866135fe565b612682565b61268286868686866136bf565b348160005b818110156127b2573685858381811061275f5761275f614d57565b6040029190910191505080358481111561278c57604051631a783b8d60e01b815260040160405180910390fd5b6127a561279f604084016020850161401c565b826132ec565b9093039250600101612744565b50818611156127d457604051631a783b8d60e01b815260040160405180910390fd5b6127de85876132ec565b858211156127f2576127f2338784036132ec565b6127fc6001600055565b505050505050565b61280e81836137a3565b8161284057826001146128345760405163efcc00b160e01b815260040160405180910390fd5b61272d878787876135fe565b612682828260028a8a8a8a8a6137c2565b602082026101e403358360005b818110156128bf573687878381811061287957612879614d57565b604002919091019150508035861561289857612895818b614fac565b99505b6128b58b8e6128ad604086016020870161401c565b84898b613842565b505060010161285e565b506128ce888b8b8a8688613842565b6120086001600055565b6128e18361387d565b6128eb81836137a3565b816128fd5761272d87878787876136bf565b612682828260038a8a8a8a8a6137c2565b805160401461291a5750565b6000612927826020015190565b9050612933818361389e565b5050565b6000828403612947575080610528565b6000838584091590508061296e5760405163c63cf08960e01b815260040160405180910390fd5b600061297a8685614f75565b9490940495945050505050565b60008587146129d7576000821561299f575060001983015b6000816129ac888a614f75565b6129b6888c614f75565b6129c09190614f94565b6129ca9190614f94565b8590049250610377915050565b509395945050505050565b6129ea613ed7565b8315806129f5575081155b15612a1357604051634c74edb760e11b815260040160405180910390fd5b612a1b613ed7565b612a78878585808060200260200160405190810160405280939291908181526020016000905b82821015612a6d57612a5e60408302860136819003810190615097565b81526020019060010190612a41565b5050505050836138c2565b805160408051602080890282018101909252878152612ad7918a91908a908a90819060009085015b82821015612acc57612abd60408302860136819003810190615097565b81526020019060010190612aa0565b505050505085613a6e565b80516005811115612aea57612aea614677565b8351516005811115612afe57612afe614677565b141580612b29575080602001516001600160a01b03168360000151602001516001600160a01b031614155b80612b405750806040015183600001516040015114155b15612b5e576040516309cfb45560e01b815260040160405180910390fd5b82600001516060015181606001511115612c1557600085856000818110612b8757612b87614d57565b905060400201803603810190612b9d9190615097565b90508360000151606001518260600151612bb79190614fac565b89826000015181518110612bcd57612bcd614d57565b60200260200101516000015160600151826020015181518110612bf257612bf2614d57565b602090810291909101015160609081019190915284518101519083015250612ca7565b600087876000818110612c2a57612c2a614d57565b905060400201803603810190612c409190615097565b90508160600151846000015160600151612c5a9190614fac565b89826000015181518110612c7057612c70614d57565b60200260200101516000015160400151826020015181518110612c9557612c95614d57565b60200260200101516060018181525050505b60608082015184519091015260809081015183516001600160a01b039091169101525095945050505050565b8151606090806001600160401b03811115612cf057612cf0614052565b604051908082528060200260200182016040528015612d19578160200160208202803683370190505b50915060005b81811015612dff576000858281518110612d3b57612d3b614d57565b6020026020010151905080602001516001600160781b0316600003612d605750612df7565b6001848381518110612d7457612d74614d57565b9115156020928302919091019091015280516060015160005b8151811015612df3576000828281518110612daa57612daa614d57565b602002602001015160600151905080600014612dea576040516314bea84160e31b8152600481018690526024810183905260448101829052606401610de3565b50600101612d8d565b5050505b600101612d1f565b5060408051602080825281830190925234916000919060208201818036833701905050905060005b8551811015612ebb576000868281518110612e4457612e44614d57565b60209081029190910101518051909150600081516005811115612e6957612e69614677565b03612e9d578481606001511115612e9357604051631a783b8d60e01b815260040160405180910390fd5b8060600151850394505b612eb18183602001518460400151876131e3565b5050600101612e27565b50612ec58161290e565b8115612ed557612ed533836132ec565b612edf6001600055565b50505092915050565b8082101561293357604051632335530b60e11b815260040160405180910390fd5b60008060008351604003612f3a57505050602081015160408201516001600160ff1b0381169060ff1c601b01612fa0565b8351604103612f955750505060208101516040820151606083015160001a601b8114801590612f6d57508060ff16601c14155b15612f9057604051630f801e8560e11b815260ff82166004820152602401610de3565b612fa0565b6127fc868686613bf8565b6040805160008082526020820180845288905260ff841692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015612ff4573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661302857604051638baa579f60e01b815260040160405180910390fd5b866001600160a01b0316816001600160a01b03161461268257612682878787613bf8565b60004284118061305c5750428311155b15613088578115613080576040516337bf561360e11b815260040160405180910390fd5b506000610528565b5060019392505050565b60018360038111156130a6576130a6614677565b1180156130bc5750336001600160a01b03821614155b80156130d15750336001600160a01b03831614155b15611558576080880151511580156130e857508651155b156130fe576130f981868487613c6f565b611558565b600061315c82633313157060e01b88338d8c8e60405160240161312595949392919061526b565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613cbb565b90506131688187613cd0565b505050505050505050565b60008360208301602084510281015b808210156131bf57815180841180156131a25781600052846020526131ab565b84600052816020525b505060406000209250602082019150613182565b505083149050806117f5576040516309bde33960e01b815260040160405180910390fd5b6000845160058111156131f8576131f8614677565b036132145761320f846080015185606001516132ec565b6117f5565b60018451600581111561322957613229614677565b036132485761320f846020015184866080015187606001518686613842565b60028451600581111561325d5761325d614677565b036132815761320f8460200151848660800151876040015188606001518787612804565b6117f584602001518486608001518760400151886060015187876128d8565b60008789036132bb576132b487878a612937565b90506132e0565b6132dd6132c988888c612937565b6132d489898c612937565b87878787612987565b90505b98975050505050505050565b6132f58161387d565b600080600080600085875af190508061333b57613310613d2a565b60405163470c7c1d60e01b81526001600160a01b038416600482015260248101839052604401610de3565b505050565b613348613ed7565b825160000361336c578360405163375c24c160e01b8152600401610de391906153f1565b600084600181111561338057613380614677565b0361339557613390858483613a6e565b6133ae565b6133a08584836138c2565b336020820152604081018290525b8051606001516000036105a557602081015181516001600160a01b03909116608090910152949350505050565b610244356102606102643560400201146004356020146102243561024014161680613419576040516339f3e3fd60e01b815260040160405180910390fd5b50565b600183600381111561343057613430614677565b1180156134465750336001600160a01b03821614155b801561345b5750336001600160a01b03831614155b15611e0957611e0981868487613c6f565b6000838152600260209081526040918290208251608081018452905460ff808216151583526101008204161515928201929092526001600160781b03620100008304811693820193909352600160881b90910490911660608201526134d484826001806116ed565b5080516134e6576134e68385846117a6565b5050506000908152600260205260409020710100000000000000000000000000000100019055565b6040805160ff60a01b7f000000000000000000000000000000000000000000000000000000000000000017600090815260208681527f000000000000000000000000000000000000000000000000000000000000000084526055600b20929093528080526001600160a01b039091169181848682865af19050806135b857613594613d2a565b60405163344f54f560e21b81526001600160a01b0383166004820152602401610de3565b6000516001600160e01b03198116632671a55160e11b146127fc57604051630e7ccd9360e11b8152600481018790526001600160a01b0384166024820152604401610de3565b833b61361957632f8aeb3960e11b6000528360045260246000fd5b6040516323b872dd60e01b6000528360045282602452816044526000806064600080895af1806136b0573d1561368a5760203d0460208304816003028183111561367157818303600302610200838002858002030401015b5a602082011015613686573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b6136da57632f8aeb3960e11b6000528460045260246000fd5b60405160805160a05160c051637921219560e11b6000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af180613787573d156137625760203d0460208604816003028183111561374957818303600302610200838002858002030401015b5a60208201101561375e573d6000803e3d6000fd5b5050505b63f486bc8760e01b600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b60006137b0836020015190565b905081811461333b5761333b8361290e565b600060208851036137fd5750604080885260208089018a9052632671a55160e11b91890191909152604488015260016064880181905261380c565b50606487018051600101908190525b603c60c082028901038781528660208201528560408201528460608201528360808201528260a082015250505050505050505050565b61384b8361387d565b61385581836137a3565b8161386b5761386686868686613d6f565b6127fc565b6127fc8282600189898960008a6137c2565b806000036134195760405163246cf94560e21b815260040160405180910390fd5b6064810151604082019060c0026044016138b984838361350e565b50506020905250565b6138ee565b637fda727960e01b60005260206000fd5b634e487b7160e01b600052601160045260246000fd5b6020820180515184518110613905576139056138c7565b602081026020860101516060815101516020845101518151811061392b5761392b6138c7565b60208102602083010151600080602086015115613952575050606081018051600090915280155b885183518152602084015160208201526040840151604082015260a084015160808201526060812060208c51028c015b808b1015613a295760208b019a508a515199508d518a106139a5576139a56138c7565b60208a0260208f010151985060208901511561398257606089510151975060208b5101519650875187106139db576139db6138c7565b602087026020890101519550606086018051860181511587821060011b1786179550809650506000815250606086208214608084015160a08801511416613a2457613a246138c7565b613982565b50506060018290528060018114613a475760028114613a5857613a60565b63246cf94560e21b60005260206000fd5b613a606138d8565b505050505050505050505050565b6020820180515184518110613a8557613a856138c7565b602081026020860101518051604081015160208551015181518110613aac57613aac6138c7565b60208102602083010151600080602087015115613ad3575050606081018051600090915280155b8951336080820152835181526020840151602082015260408401516040820152865160208c015261012087015160408c015260608120905060208c51028c015b808b1015613bc75760208b019a508a515199508d518a10613b3657613b366138c7565b60208a0260208f0101519850602089015115613b1357885197506040880151965060208b510151955086518610613b6f57613b6f6138c7565b602086026020880101519450606085018051850181511586821060011b178517945080955050600081525060608520821460408d01516101208a01511460208e01518a51141616613bc257613bc26138c7565b613b13565b50508160608b5101528060018114613a475760028103613be957613be96138d8565b50505050505050505050505050565b6000613c1984631626ba7e60e01b85856040516024016131259291906153ff565b905080613c4157613c28613d2a565b604051634f7fb80d60e01b815260040160405180910390fd5b613c51630b135d3f60e11b613e75565b156117f557604051632057875960e21b815260040160405180910390fd5b604051602481018490523360448201526001600160a01b038316606482015260848101829052600090613caf9086906303874c7760e21b9060a401613125565b9050611e098185613cd0565b6000806000835160208501865afa9392505050565b81613cf957613cdd613d2a565b604051633ed4053f60e21b815260048101829052602401610de3565b613d096303874c7760e21b613e75565b1561293357604051633ed4053f60e21b815260048101829052602401610de3565b3d156116b05760203d046020604051048160030281831115613d5a57818303600302610200838002858002030401015b5a60208201101561333b573d6000803e3d6000fd5b6040516323b872dd60e01b600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d15158116613e655780873b151516613e655780613e505781613e2f573d15613e095760203d04602084048160030281831115613df057818303600302610200838002858002030401015b5a602082011015613e05573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005286600452856024528460445260006064528360845260a46000fd5b639889192360e01b6000528660045285602452846044528360645260846000fd5b632f8aeb3960e11b6000528660045260246000fd5b5050604052505060006060525050565b60008060203d03613e8b5760206000803e506000515b6001600160e01b031990811692169190911415919050565b6040518060a00160405280613eb6613f1a565b81526000602082018190526040820152606080820181905260809091015290565b60408051610100810182526000606082018181526080830182905260a0830182905260c0830182905260e083018290528252602082018190529181019190915290565b60405180610160016040528060006001600160a01b0316815260200160006001600160a01b03168152602001606081526020016060815260200160006003811115613f6757613f67614677565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c09091015290565b6000815180845260005b81811015613fbd57602081850181015186830182015201613fa1565b81811115613fcf576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006105286020830184613f97565b6001600160a01b038116811461341957600080fd5b803561401781613ff7565b919050565b60006020828403121561402e57600080fd5b813561052881613ff7565b60006020828403121561404b57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b038111828210171561408a5761408a614052565b60405290565b60405161016081016001600160401b038111828210171561408a5761408a614052565b604051601f8201601f191681016001600160401b03811182821017156140db576140db614052565b604052919050565b60006001600160401b038211156140fc576140fc614052565b5060051b60200190565b80356006811061401757600080fd5b600060a0828403121561412757600080fd5b61412f614068565b905061413a82614106565b8152602082013561414a81613ff7565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b600082601f83011261418657600080fd5b8135602061419b614196836140e3565b6140b3565b82815260a092830285018201928282019190878511156141ba57600080fd5b8387015b858110156141dd576141d08982614115565b84529284019281016141be565b5090979650505050505050565b600060c082840312156141fc57600080fd5b60405160c081018181106001600160401b038211171561421e5761421e614052565b60405290508061422d83614106565b8152602083013561423d81613ff7565b8060208301525060408301356040820152606083013560608201526080830135608082015260a083013561427081613ff7565b60a0919091015292915050565b600082601f83011261428e57600080fd5b8135602061429e614196836140e3565b82815260c092830285018201928282019190878511156142bd57600080fd5b8387015b858110156141dd576142d389826141ea565b84529284019281016142c1565b80356004811061401757600080fd5b6000610160828403121561430257600080fd5b61430a614090565b90506143158261400c565b81526143236020830161400c565b602082015260408201356001600160401b038082111561434257600080fd5b61434e85838601614175565b6040840152606084013591508082111561436757600080fd5b506143748482850161427d565b606083015250614386608083016142e0565b608082015260a082013560a082015260c082013560c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525092915050565b80356001600160781b038116811461401757600080fd5b600082601f8301126143fb57600080fd5b81356001600160401b0381111561441457614414614052565b614427601f8201601f19166020016140b3565b81815284602083860101111561443c57600080fd5b816020850160208301376000918101602001919091529392505050565b600060a0828403121561446b57600080fd5b614473614068565b905081356001600160401b038082111561448c57600080fd5b614498858386016142ef565b83526144a6602085016143d3565b60208401526144b7604085016143d3565b604084015260608401359150808211156144d057600080fd5b6144dc858386016143ea565b606084015260808401359150808211156144f557600080fd5b50614502848285016143ea565b60808301525092915050565b600082601f83011261451f57600080fd5b8135602061452f614196836140e3565b82815260059290921b8401810191818101908684111561454e57600080fd5b8286015b8481101561458d5780356001600160401b038111156145715760008081fd5b61457f8986838b0101614459565b845250918301918301614552565b509695505050505050565b60008083601f8401126145aa57600080fd5b5081356001600160401b038111156145c157600080fd5b6020830191508360208260051b85010111156145dc57600080fd5b9250929050565b6000806000806000606086880312156145fb57600080fd5b85356001600160401b038082111561461257600080fd5b61461e89838a0161450e565b9650602088013591508082111561463457600080fd5b61464089838a01614598565b9096509450604088013591508082111561465957600080fd5b5061466688828901614598565b969995985093965092949392505050565b634e487b7160e01b600052602160045260246000fd5b6006811061469d5761469d614677565b9052565b6146ac82825161468d565b6020818101516001600160a01b0390811691840191909152604080830151908401526060808301519084015260809182015116910152565b600081518084526020808501945080840160005b8381101561473a57815161470d8882516146a1565b808401516001600160a01b031660a08901526040015160c088015260e090960195908201906001016146f8565b509495945050505050565b60208152600061052860208301846146e4565b60006020828403121561476a57600080fd5b81356001600160401b0381111561478057600080fd5b8201610160818503121561052857600080fd5b600080602083850312156147a657600080fd5b82356001600160401b038111156147bc57600080fd5b6147c885828601614598565b90969095509350505050565b600080600080604085870312156147ea57600080fd5b84356001600160401b038082111561480157600080fd5b61480d88838901614598565b9096509450602087013591508082111561482657600080fd5b5061483387828801614598565b95989497509550505050565b6000806040838503121561485257600080fd5b82356001600160401b0381111561486857600080fd5b83016040818603121561487a57600080fd5b946020939093013593505050565b6000806000806060858703121561489e57600080fd5b84356001600160401b03808211156148b557600080fd5b9086019060a082890312156148c957600080fd5b909450602086013590808211156148df57600080fd5b506148ec87828801614598565b9598909750949560400135949350505050565b60008060008060008060008060a0898b03121561491b57600080fd5b88356001600160401b038082111561493257600080fd5b61493e8c838d01614598565b909a50985060208b013591508082111561495757600080fd5b6149638c838d01614598565b909850965060408b013591508082111561497c57600080fd5b506149898b828c01614598565b999c989b509699959896976060870135966080013595509350505050565b604080825283519082018190526000906020906060840190828701845b828110156149e25781511515845292840192908401906001016149c4565b5050508381038285015261037781866146e4565b606081526000614a096060830186613f97565b6020830194909452506001600160a01b0391909116604090910152919050565b600060208284031215614a3b57600080fd5b81356001600160401b03811115614a5157600080fd5b8201610240818503121561052857600080fd5b600080600080600080600080600060c08a8c031215614a8257600080fd5b89356001600160401b0380821115614a9957600080fd5b614aa58d838e0161450e565b9a5060208c0135915080821115614abb57600080fd5b614ac78d838e01614598565b909a50985060408c0135915080821115614ae057600080fd5b614aec8d838e01614598565b909850965060608c0135915080821115614b0557600080fd5b50614b128c828d01614598565b9a9d999c50979a96999598959660808101359660a09091013595509350505050565b6000614b42614196846140e3565b83815260208082019190600586811b860136811115614b6057600080fd5b865b81811015614c5b5780356001600160401b0380821115614b825760008081fd5b818a01915060a08236031215614b985760008081fd5b614ba0614068565b823581528683013560028110614bb65760008081fd5b81880152604083810135908201526060808401359082015260808084013583811115614be25760008081fd5b939093019236601f850112614bf957600092508283fd5b83359250614c09614196846140e3565b83815292871b84018801928881019036851115614c265760008081fd5b948901945b84861015614c4457853582529489019490890190614c2b565b918301919091525088525050948301948301614b62565b5092979650505050505050565b6000808335601e19843603018112614c7f57600080fd5b8301803591506001600160401b03821115614c9957600080fd5b602001915060a0810236038213156145dc57600080fd5b600060a08284031215614cc257600080fd5b6105288383614115565b6000808335601e19843603018112614ce357600080fd5b8301803591506001600160401b03821115614cfd57600080fd5b602001915060c0810236038213156145dc57600080fd5b600060c08284031215614d2657600080fd5b61052883836141ea565b600060208284031215614d4257600080fd5b610528826142e0565b600061035a3683614459565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112614d8357600080fd5b9190910192915050565b6000823561015e19833603018112614d8357600080fd5b600061035a36836142ef565b6000808335601e19843603018112614dc757600080fd5b8301803591506001600160401b03821115614de157600080fd5b6020019150368190038213156145dc57600080fd5b600060408284031215614e0857600080fd5b604051604081018181106001600160401b0382111715614e2a57614e2a614052565b604052823581526020928301359281019290925250919050565b6000614e52614196846140e3565b80848252602080830192508560051b850136811115614e7057600080fd5b855b81811015614f0a5780356001600160401b03811115614e915760008081fd5b870136601f820112614ea35760008081fd5b8035614eb1614196826140e3565b81815260069190911b82018501908581019036831115614ed15760008081fd5b928601925b82841015614efa57614ee83685614df6565b82528682019150604084019350614ed6565b8852505050938201938201614e72565b50919695505050505050565b6000808335601e19843603018112614f2d57600080fd5b8301803591506001600160401b03821115614f4757600080fd5b6020019150600681901b36038213156145dc57600080fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615614f8f57614f8f614f5f565b500290565b60008219821115614fa757614fa7614f5f565b500190565b600082821015614fbe57614fbe614f5f565b500390565b600081518084526020808501945080840160005b8381101561473a57614fea8783516146a1565b60a0969096019590820190600101614fd7565b60006080808301878452602060018060a01b03808916828701526040848188015283895180865260a089019150848b01955060005b8181101561507357865161504784825161468d565b808701518616848801528481015185850152606090810151908401529585019591870191600101615032565b50508781036060890152615087818a614fc3565b9c9b505050505050505050505050565b6000604082840312156150a957600080fd5b6105288383614df6565b600081518084526020808501945080840160005b8381101561473a5781516150dc88825161468d565b838101516001600160a01b03168885015260408082015190890152606080820151908901526080908101519088015260a090960195908201906001016150c7565b600081518084526020808501945080840160005b8381101561473a57815161514688825161468d565b808401516001600160a01b0390811689860152604080830151908a0152606080830151908a0152608080830151908a015260a091820151169088015260c09096019590820190600101615131565b6004811061469d5761469d614677565b600081518084526020808501945080840160005b8381101561473a578151875295820195908201906001016151b8565b6002811061469d5761469d614677565b600082825180855260208086019550808260051b84010181860160005b848110156141dd57601f19868403018952815160a0815185528582015161522a878701826151d4565b506040828101519086015260608083015190860152608091820151918501819052615257818601836151a4565b9a86019a9450505090830190600101615201565b85815260018060a01b038516602082015260a060408201526000610140855160a0808501526152a582850182516001600160a01b03169052565b60208101516101606152c1818701836001600160a01b03169052565b6040830151915080610180870152506152de6102a08601826150b3565b9050606082015161013f19868303016101a08701526152fd828261511d565b91505060808201516153136101c0870182615194565b5060a08201516101e086015260c082015161020086015260e082015161022086015261010080830151610240870152610120808401516102608801528484015161028088015260208a0151945061537560c08801866001600160781b03169052565b60408a01516001600160781b031660e088015260608a0151878403609f19908101848a015290955093506153a98386613f97565b945060808a0151925083878603018188015250506153c78382613f97565b9250505082810360608401526153dd81866151a4565b905082810360808401526132e081856151e4565b6020810161035a82846151d4565b8281526040602082015260006105a56040830184613f9756fea2646970667358221220d35ae0e3881291d6ab21b7cf6cc4e94d03bc3bb9282e55f663fd3f903f16e38064736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA8174404 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xF47B7740 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xF47B7740 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xFB0F3EE1 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0xFB4C2AF9 EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0xFD9F1E10 EQ PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA8174404 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xB3A34C4C EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0xDF7B0DAC EQ PUSH2 0x293 JUMPI DUP1 PUSH4 0xED98A574 EQ PUSH2 0x2A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x55944A42 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x55944A42 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x627CDCB9 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x79DF72BD EQ PUSH2 0x21D JUMPI DUP1 PUSH4 0x88147732 EQ PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x2D0335AB EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x46423AA7 EQ PUSH2 0x146 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x331 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x3FE4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x401C JUMP JUMPDEST PUSH2 0x340 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x161 CALLDATASIZE PUSH1 0x4 PUSH2 0x4039 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x80 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP1 DUP5 MSTORE PUSH2 0x100 DUP4 DIV SWAP1 SWAP2 AND ISZERO ISZERO SWAP4 DUP4 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB PUSH3 0x10000 DUP4 DIV DUP2 AND SWAP6 DUP5 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x88 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND PUSH1 0x60 SWAP1 SWAP3 ADD DUP3 SWAP1 MSTORE SWAP4 SWAP2 SWAP3 SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 ISZERO ISZERO DUP6 MSTORE SWAP3 ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE SWAP2 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x1FB PUSH2 0x1F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x45E3 JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x4745 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x381 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x238 CALLDATASIZE PUSH1 0x4 PUSH2 0x4758 JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x249 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x258 CALLDATASIZE PUSH1 0x4 PUSH2 0x4793 JUMP JUMPDEST PUSH2 0x51C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x1FB PUSH2 0x27B CALLDATASIZE PUSH1 0x4 PUSH2 0x47D4 JUMP JUMPDEST PUSH2 0x52F JUMP JUMPDEST PUSH2 0x25D PUSH2 0x28E CALLDATASIZE PUSH1 0x4 PUSH2 0x483F JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST PUSH2 0x25D PUSH2 0x2A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4888 JUMP JUMPDEST PUSH2 0x61E JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x2B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x48FF JUMP JUMPDEST PUSH2 0x63C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP3 SWAP2 SWAP1 PUSH2 0x49A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DC PUSH2 0x6C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x49F6 JUMP JUMPDEST PUSH2 0x25D PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A29 JUMP JUMPDEST PUSH2 0x6DD JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x30C CALLDATASIZE PUSH1 0x4 PUSH2 0x4A64 JUMP JUMPDEST PUSH2 0x6E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x32C CALLDATASIZE PUSH1 0x4 PUSH2 0x4793 JUMP JUMPDEST PUSH2 0x716 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x33B PUSH2 0x722 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x377 DUP7 PUSH2 0x370 DUP7 DUP9 PUSH2 0x4B34 JUMP JUMPDEST DUP6 DUP6 PUSH2 0x741 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33B PUSH2 0x75C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x160 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x35A SWAP1 DUP1 PUSH2 0x3AC PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x401C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3CD SWAP2 SWAP1 PUSH2 0x401C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3E8 PUSH1 0x40 DUP7 ADD DUP7 PUSH2 0x4C68 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x434 JUMPI PUSH2 0x425 PUSH1 0xA0 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x4CB0 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x408 JUMP JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x20 ADD PUSH2 0x44C PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0x4CCC JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x498 JUMPI PUSH2 0x489 PUSH1 0xC0 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x4D14 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x46C JUMP JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x20 ADD PUSH2 0x4B3 PUSH1 0xA0 DUP7 ADD PUSH1 0x80 DUP8 ADD PUSH2 0x4D30 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4C4 JUMPI PUSH2 0x4C4 PUSH2 0x4677 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xA0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xC0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xE0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x100 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x120 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP1 PUSH1 0x60 ADD SWAP1 PUSH2 0x50D SWAP2 SWAP1 PUSH2 0x4CCC JUMP JUMPDEST SWAP1 SWAP2 MSTORE POP PUSH2 0x140 DUP5 ADD CALLDATALOAD PUSH2 0x7B9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 DUP4 DUP4 PUSH2 0x8FF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5A2 PUSH2 0x53E DUP7 DUP7 PUSH2 0xABB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH2 0x59A JUMP JUMPDEST PUSH2 0x587 PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x554 JUMPI SWAP1 POP JUMPDEST POP DUP6 DUP6 PUSH2 0x741 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 PUSH2 0x5BB DUP5 PUSH2 0xB76 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH2 0x617 JUMP JUMPDEST PUSH2 0x604 PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x5D1 JUMPI SWAP1 POP JUMPDEST POP DUP5 PUSH2 0xC21 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A2 PUSH2 0x62C DUP7 PUSH2 0x4D4B JUMP JUMPDEST PUSH2 0x636 DUP6 DUP8 PUSH2 0x4B34 JUMP JUMPDEST DUP5 PUSH2 0xC21 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x6B4 PUSH2 0x64C DUP12 DUP12 PUSH2 0xABB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH2 0x6A8 JUMP JUMPDEST PUSH2 0x695 PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x662 JUMPI SWAP1 POP JUMPDEST POP DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xD12 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x6D2 PUSH2 0xD51 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35A DUP3 PUSH2 0xDB0 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x704 DUP12 PUSH2 0x6F9 DUP12 DUP14 PUSH2 0x4B34 JUMP JUMPDEST DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xD12 JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 DUP4 DUP4 PUSH2 0x104A JUMP JUMPDEST PUSH1 0x60 PUSH1 0x20 PUSH1 0x0 MSTORE PUSH14 0xD436F6E73696465726174696F6E PUSH1 0x2D MSTORE PUSH1 0x60 PUSH1 0x0 RETURN JUMPDEST PUSH1 0x60 PUSH2 0x751 DUP6 DUP6 PUSH1 0x1 DUP9 MLOAD PUSH2 0x124B JUMP JUMPDEST PUSH2 0x5A2 DUP6 DUP5 DUP5 PUSH2 0x1562 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x766 PUSH2 0x168D JUMP JUMPDEST POP CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP2 DUP3 SWAP1 SSTORE SWAP2 MLOAD DUP2 DUP2 MSTORE SWAP1 SWAP3 SWAP2 PUSH32 0x7AB0FC7DE8910A6100B24DF423C3D0835534506DCA9473D30C3E7DF51241B2CF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 SWAP1 JUMP JUMPDEST PUSH2 0x140 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP1 DUP5 ADD MLOAD DUP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 PUSH32 0x0 SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x826 JUMPI DUP3 MLOAD PUSH1 0x1F NOT ADD DUP1 MLOAD DUP7 DUP3 MSTORE PUSH1 0xC0 DUP3 KECCAK256 DUP7 MSTORE SWAP1 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x7F9 JUMP JUMPDEST POP PUSH1 0x20 DUP2 MUL PUSH1 0x40 MLOAD KECCAK256 SWAP5 POP POP POP POP PUSH1 0x0 PUSH32 0x0 SWAP2 POP PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x60 DUP10 ADD MLOAD ADD PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x894 JUMPI DUP2 MLOAD PUSH1 0x1F NOT ADD DUP1 MLOAD DUP7 DUP3 MSTORE PUSH1 0xE0 DUP3 KECCAK256 DUP6 MSTORE SWAP1 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x867 JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP8 MUL SWAP1 KECCAK256 PUSH1 0x1F NOT DUP11 ADD DUP1 MLOAD PUSH32 0x0 DUP3 MSTORE SWAP3 DUP12 ADD DUP1 MLOAD SWAP8 DUP2 MSTORE PUSH1 0x60 DUP13 ADD DUP1 MLOAD SWAP4 DUP2 MSTORE PUSH2 0x140 SWAP1 SWAP13 ADD SWAP11 DUP12 MSTORE PUSH2 0x180 DUP3 KECCAK256 SWAP4 SWAP1 SWAP2 MSTORE SWAP6 SWAP1 SWAP6 MSTORE SWAP4 SWAP1 SWAP8 MSTORE POP POP SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x909 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xAAE JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x92A JUMPI PUSH2 0x92A PUSH2 0x4D57 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x93C SWAP2 SWAP1 PUSH2 0x4D6D JUMP JUMPDEST SWAP1 POP CALLDATASIZE PUSH2 0x949 DUP3 DUP1 PUSH2 0x4D8D JUMP JUMPDEST SWAP1 POP PUSH2 0x958 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x401C JUMP JUMPDEST SWAP5 POP PUSH2 0x96B PUSH2 0x966 DUP3 PUSH2 0x4DA4 JUMP JUMPDEST PUSH2 0x16B2 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x80 DUP2 ADD DUP4 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB PUSH3 0x10000 DUP5 DIV DUP2 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x88 SHL SWAP1 SWAP3 DIV AND PUSH1 0x60 DUP3 ADD MSTORE SWAP2 SWAP8 POP PUSH2 0x9D5 SWAP1 DUP9 SWAP1 DUP4 SWAP1 PUSH1 0x1 PUSH2 0x16ED JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0xAA0 JUMPI PUSH2 0xA28 DUP7 DUP9 PUSH2 0x9EE PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x4DB0 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 0x17A6 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0xA53 SWAP2 DUP5 ADD SWAP1 DUP5 ADD PUSH2 0x401C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFDE361574A066B44B3B5FE98A87108B7565E327327954C4FAEEA56A4E6491A0A DUP10 PUSH1 0x40 MLOAD PUSH2 0xA97 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP POP POP POP PUSH2 0x90F JUMP JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xAD6 JUMPI PUSH2 0xAD6 PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xB0F JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xAFC PUSH2 0x3EA3 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xAF4 JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB6E JUMPI PUSH2 0xB49 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xB32 JUMPI PUSH2 0xB32 PUSH2 0x4D57 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xB44 SWAP2 SWAP1 PUSH2 0x4D6D JUMP JUMPDEST PUSH2 0xB76 JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB5B JUMPI PUSH2 0xB5B PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xB15 JUMP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xB7E PUSH2 0x3EA3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH2 0xB94 DUP5 DUP1 PUSH2 0x4D8D JUMP JUMPDEST PUSH2 0xB9D SWAP1 PUSH2 0x4DA4 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xBD2 SWAP2 SWAP1 PUSH2 0x4DB0 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 DUP3 SWAP1 MSTORE POP SWAP4 DUP6 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP1 SWAP3 MSTORE SWAP3 DUP4 MSTORE SWAP1 SWAP3 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC2B PUSH2 0x17FB JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xC3F DUP9 DUP9 PUSH1 0x1 DUP8 PUSH2 0x180A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xC67 PUSH2 0x3EA3 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xC5F JUMPI SWAP1 POP POP SWAP1 POP DUP9 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC90 JUMPI PUSH2 0xC90 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH2 0xCA5 DUP2 DUP10 PUSH2 0x1A93 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xCBA JUMPI PUSH2 0xCBA PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH2 0xCDA DUP2 DUP6 DUP6 DUP5 PUSH2 0x120 ADD MLOAD DUP13 PUSH2 0x1E10 JUMP JUMPDEST PUSH2 0xCF8 DUP6 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD CALLER DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD PUSH2 0x2014 JUMP JUMPDEST PUSH2 0xD02 PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0xD22 DUP11 DUP11 PUSH1 0x0 DUP7 PUSH2 0x124B JUMP JUMPDEST PUSH2 0xD40 DUP11 PUSH2 0xD30 DUP10 DUP12 PUSH2 0x4E44 JUMP JUMPDEST PUSH2 0xD3A DUP9 DUP11 PUSH2 0x4E44 JUMP JUMPDEST DUP8 PUSH2 0x2079 JUMP JUMPDEST SWAP1 SWAP12 SWAP1 SWAP11 POP SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0xD5E PUSH2 0x2255 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP3 POP PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP4 ADD MSTORE POP SWAP4 SWAP2 SWAP3 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH2 0x124 CALLDATALOAD SWAP1 DUP2 DIV SWAP1 PUSH1 0x3 AND PUSH1 0x1 DUP3 GT CALLVALUE ISZERO DUP2 EQ DUP1 PUSH2 0xDEC JUMPI PUSH1 0x40 MLOAD PUSH4 0xA61BE9F PUSH1 0xE4 SHL DUP2 MSTORE CALLVALUE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x3 DUP7 GT PUSH1 0xA0 DUP2 MUL PUSH1 0x24 ADD CALLDATALOAD SWAP4 POP PUSH1 0x2 DUP8 EQ PUSH1 0x2 DUP9 GT PUSH1 0x2 DUP10 SUB MUL ADD SWAP3 POP PUSH1 0x1 DUP4 ADD DUP2 MUL PUSH1 0x2 DUP7 ISZERO MUL DUP9 ADD SUB SWAP2 POP POP PUSH2 0xE2F DUP9 DUP7 DUP5 DUP8 DUP8 DUP7 PUSH2 0x234B JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE41 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x401C JUMP JUMPDEST SWAP1 POP PUSH2 0x1C4 PUSH1 0x3 DUP9 GT PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x0 DUP7 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xE63 JUMPI PUSH2 0xE63 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0xEAF JUMPI PUSH2 0xE8E DUP4 PUSH2 0xE7C PUSH1 0xC0 DUP14 ADD PUSH1 0xA0 DUP15 ADD PUSH2 0x401C JUMP JUMPDEST DUP5 CALLER DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP16 PUSH1 0xE0 ADD CALLDATALOAD DUP8 PUSH2 0x268B JUMP JUMPDEST PUSH2 0xEAA PUSH1 0x40 DUP12 ADD CALLDATALOAD DUP4 PUSH2 0xEA5 PUSH2 0x200 DUP15 ADD DUP15 PUSH2 0x4F16 JUMP JUMPDEST PUSH2 0x273F JUMP JUMPDEST PUSH2 0xD02 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x2 DUP10 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xEE4 JUMPI PUSH2 0xEE4 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0xF44 JUMPI PUSH2 0xF0F PUSH2 0xEFC PUSH1 0xC0 DUP14 ADD PUSH1 0xA0 DUP15 ADD PUSH2 0x401C JUMP JUMPDEST DUP5 CALLER DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP16 PUSH1 0xE0 ADD CALLDATALOAD DUP8 DUP8 PUSH2 0x2804 JUMP JUMPDEST PUSH2 0xF3F CALLER DUP5 PUSH2 0xF21 PUSH1 0x20 DUP16 ADD DUP16 PUSH2 0x401C JUMP JUMPDEST DUP15 PUSH1 0x40 ADD CALLDATALOAD DUP16 DUP1 PUSH2 0x200 ADD SWAP1 PUSH2 0xF37 SWAP2 SWAP1 PUSH2 0x4F16 JUMP JUMPDEST PUSH1 0x0 DUP9 PUSH2 0x2851 JUMP JUMPDEST PUSH2 0x1030 JUMP JUMPDEST PUSH1 0x3 DUP10 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xF58 JUMPI PUSH2 0xF58 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0xF83 JUMPI PUSH2 0xF0F PUSH2 0xF70 PUSH1 0xC0 DUP14 ADD PUSH1 0xA0 DUP15 ADD PUSH2 0x401C JUMP JUMPDEST DUP5 CALLER DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP16 PUSH1 0xE0 ADD CALLDATALOAD DUP8 DUP8 PUSH2 0x28D8 JUMP JUMPDEST PUSH1 0x4 DUP10 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xF97 JUMPI PUSH2 0xF97 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0xFF5 JUMPI PUSH2 0xFBF PUSH2 0xFAC PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x401C JUMP JUMPDEST CALLER DUP6 DUP15 PUSH1 0x20 ADD CALLDATALOAD DUP16 PUSH1 0x40 ADD CALLDATALOAD DUP8 DUP8 PUSH2 0x2804 JUMP JUMPDEST PUSH2 0xF3F DUP4 CALLER DUP14 PUSH1 0xA0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xFD7 SWAP2 SWAP1 PUSH2 0x401C JUMP JUMPDEST DUP15 PUSH1 0xE0 ADD CALLDATALOAD DUP16 DUP1 PUSH2 0x200 ADD SWAP1 PUSH2 0xFED SWAP2 SWAP1 PUSH2 0x4F16 JUMP JUMPDEST PUSH1 0x1 DUP9 PUSH2 0x2851 JUMP JUMPDEST PUSH2 0x1018 PUSH2 0x1005 PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x401C JUMP JUMPDEST CALLER DUP6 DUP15 PUSH1 0x20 ADD CALLDATALOAD DUP16 PUSH1 0x40 ADD CALLDATALOAD DUP8 DUP8 PUSH2 0x28D8 JUMP JUMPDEST PUSH2 0x1030 DUP4 CALLER DUP14 PUSH1 0xA0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xFD7 SWAP2 SWAP1 PUSH2 0x401C JUMP JUMPDEST PUSH2 0x1039 DUP2 PUSH2 0x290E JUMP JUMPDEST POP POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1054 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xAAE JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x1075 JUMPI PUSH2 0x1075 PUSH2 0x4D57 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1087 SWAP2 SWAP1 PUSH2 0x4D8D JUMP JUMPDEST SWAP1 POP PUSH2 0x1096 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x401C JUMP JUMPDEST SWAP5 POP PUSH2 0x10A8 PUSH1 0x40 DUP3 ADD PUSH1 0x20 DUP4 ADD PUSH2 0x401C JUMP JUMPDEST SWAP4 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x10CC JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x10EA JUMPI PUSH1 0x40 MLOAD PUSH4 0x203B1CDD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11D9 PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP1 PUSH1 0x40 ADD SWAP1 PUSH2 0x1129 SWAP2 SWAP1 PUSH2 0x4C68 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x1175 JUMPI PUSH2 0x1166 PUSH1 0xA0 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x4CB0 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1149 JUMP JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x20 ADD PUSH2 0x118D PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0x4CCC JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x498 JUMPI PUSH2 0x11CA PUSH1 0xC0 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x4D14 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x11AD JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0x100 OR SWAP1 SSTORE MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP2 SWAP1 DUP9 AND SWAP1 PUSH32 0x6BACC01DBE442496068F7D234EDD811F1A5F833243E0AEC824F86AB861F3C90D SWAP1 PUSH2 0x1239 SWAP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x105A JUMP JUMPDEST PUSH2 0x1253 PUSH2 0x17FB JUMP JUMPDEST DUP4 MLOAD PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x126F JUMPI PUSH2 0x126F PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1298 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x14B7 JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x12BE JUMPI PUSH2 0x12BE PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP5 PUSH1 0x0 SUB PUSH2 0x12E3 JUMPI PUSH1 0x0 PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 DUP2 ADD DUP3 MSTORE PUSH2 0x14AF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x12F4 DUP5 DUP12 DUP12 DUP10 PUSH2 0x180A JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x1 DUP6 ADD DUP7 MSTORE DUP2 PUSH1 0x0 SUB PUSH2 0x131B JUMPI POP POP PUSH1 0x0 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x14AF JUMP JUMPDEST DUP3 DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x132E JUMPI PUSH2 0x132E PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP4 MLOAD PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD PUSH1 0x0 NOT SWAP1 SWAP11 ADD SWAP10 SWAP1 SWAP2 DUP3 SWAP1 SUB SWAP1 TIMESTAMP DUP4 SWAP1 SUB SWAP1 DUP2 DUP4 SUB SWAP1 PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x13FB JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1381 JUMPI PUSH2 0x1381 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x139C DUP11 DUP11 DUP5 PUSH1 0x80 ADD MLOAD PUSH2 0x2937 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x80 ADD MLOAD DUP3 PUSH1 0x60 ADD MLOAD SUB PUSH2 0x13B9 JUMPI PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x13CE JUMP JUMPDEST PUSH2 0x13C8 DUP11 DUP11 DUP5 PUSH1 0x60 ADD MLOAD PUSH2 0x2937 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x13E9 SWAP1 DUP3 DUP9 DUP9 DUP12 PUSH1 0x0 PUSH2 0x2987 JUMP JUMPDEST PUSH1 0x60 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH1 0x1 ADD PUSH2 0x1364 JUMP JUMPDEST POP DUP9 MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x14A3 JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1422 JUMPI PUSH2 0x1422 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x143D DUP12 DUP12 DUP5 PUSH1 0x80 ADD MLOAD PUSH2 0x2937 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x80 ADD MLOAD DUP3 PUSH1 0x60 ADD MLOAD SUB PUSH2 0x145A JUMPI PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x146F JUMP JUMPDEST PUSH2 0x1469 DUP12 DUP12 DUP5 PUSH1 0x60 ADD MLOAD PUSH2 0x2937 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x148A SWAP1 DUP3 DUP10 DUP10 DUP13 PUSH1 0x1 PUSH2 0x2987 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1405 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x12A2 JUMP JUMPDEST POP PUSH2 0x14C2 DUP7 DUP7 PUSH2 0x1A93 JUMP JUMPDEST DUP4 ISZERO CALLER MUL PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1558 JUMPI PUSH1 0x0 DUP1 SHL DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x14E7 JUMPI PUSH2 0x14E7 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB ISZERO PUSH2 0x1550 JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1509 JUMPI PUSH2 0x1509 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH2 0x154E DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x152C JUMPI PUSH2 0x152C PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD DUP7 DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD PUSH2 0x2014 JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x14C9 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x157D JUMPI PUSH2 0x157D PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x15B6 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x15A3 PUSH2 0x3ED7 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x159B JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x166B JUMPI CALLDATASIZE DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x15D8 JUMPI PUSH2 0x15D8 PUSH2 0x4D57 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x15EA SWAP2 SWAP1 PUSH2 0x4D6D JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x160E DUP10 PUSH2 0x15FC DUP5 DUP1 PUSH2 0x4F16 JUMP JUMPDEST PUSH2 0x1609 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x4F16 JUMP JUMPDEST PUSH2 0x29E2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x1640 JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP PUSH2 0x1661 JUMP JUMPDEST DUP1 DUP7 DUP6 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x1655 JUMPI PUSH2 0x1655 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x15BD JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x1679 JUMPI DUP1 DUP4 MLOAD SUB DUP4 MSTORE JUMPDEST POP PUSH2 0x1684 DUP6 DUP4 PUSH2 0x2CD3 JUMP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x16B0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7FA8A987 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16C8 DUP3 PUSH1 0x60 ADD MLOAD MLOAD DUP4 PUSH2 0x140 ADD MLOAD PUSH2 0x2EE8 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x35A SWAP1 DUP4 SWAP1 PUSH2 0x7B9 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x1723 JUMPI DUP2 ISZERO PUSH2 0x171B JUMPI PUSH1 0x40 MLOAD PUSH4 0x694555D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDE3 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x5A5 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND ISZERO PUSH2 0x179B JUMPI DUP3 ISZERO PUSH2 0x1758 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEE9E0E63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDE3 JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND LT PUSH2 0x179B JUMPI DUP2 ISZERO PUSH2 0x171B JUMPI PUSH1 0x40 MLOAD PUSH4 0x10FDA3E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDE3 JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SUB PUSH2 0x17BB JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17E8 PUSH2 0x17C8 PUSH2 0x2255 JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x22 DUP6 DUP2 MSTORE PUSH1 0x42 DUP3 KECCAK256 SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x17F5 DUP5 DUP3 DUP5 PUSH2 0x2F09 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x1803 PUSH2 0x168D JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP8 PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH2 0x182A DUP2 PUSH1 0xA0 ADD MLOAD DUP3 PUSH1 0xC0 ADD MLOAD DUP9 PUSH2 0x304C JUMP JUMPDEST PUSH2 0x183E JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1A89 JUMP JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD PUSH1 0x40 DUP10 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP1 DUP3 GT DUP1 PUSH2 0x1861 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x187F JUMPI PUSH1 0x40 MLOAD PUSH4 0x2D029599 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 LT DUP1 ISZERO PUSH2 0x1893 JUMPI POP PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x1 AND ISZERO JUMPDEST ISZERO PUSH2 0x18B1 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA11B63FF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x18BA DUP4 PUSH2 0x16B2 JUMP JUMPDEST SWAP6 POP PUSH2 0x18DC DUP11 DUP11 DUP10 DUP10 DUP8 PUSH1 0xE0 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD DUP10 PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD PUSH2 0x3092 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x80 DUP2 ADD DUP4 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB PUSH3 0x10000 DUP5 DIV DUP2 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x88 SHL SWAP1 SWAP3 DIV AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 PUSH2 0x1943 SWAP1 DUP9 SWAP1 DUP4 SWAP1 DUP13 PUSH2 0x16ED JUMP JUMPDEST PUSH2 0x1958 JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x1A89 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x1971 JUMPI PUSH2 0x1971 DUP5 PUSH1 0x0 ADD MLOAD DUP9 DUP14 PUSH1 0x60 ADD MLOAD PUSH2 0x17A6 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP1 ISZERO PUSH2 0x1A35 JUMPI DUP4 PUSH1 0x1 SUB PUSH2 0x19A1 JUMPI DUP1 SWAP5 POP DUP1 SWAP4 POP PUSH2 0x19CD JUMP JUMPDEST DUP4 DUP2 EQ PUSH2 0x19CD JUMPI PUSH2 0x19B2 DUP5 DUP4 PUSH2 0x4F75 JUMP JUMPDEST SWAP2 POP PUSH2 0x19BE DUP2 DUP7 PUSH2 0x4F75 JUMP JUMPDEST SWAP5 POP PUSH2 0x19CA DUP2 DUP6 PUSH2 0x4F75 JUMP JUMPDEST SWAP4 POP JUMPDEST DUP4 PUSH2 0x19D8 DUP7 DUP5 PUSH2 0x4F94 JUMP JUMPDEST GT ISZERO PUSH2 0x19E4 JUMPI DUP2 DUP5 SUB SWAP5 POP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB DUP7 DUP2 AND PUSH1 0x1 PUSH1 0x88 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB DUP7 DUP11 ADD SWAP3 SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0x1 OR AND OR SWAP1 SSTORE PUSH2 0x1A7E JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB DUP7 DUP2 AND PUSH1 0x1 PUSH1 0x88 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB SWAP2 DUP10 AND PUSH3 0x10000 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0x1 OR AND OR SWAP1 SSTORE JUMPDEST POP SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1CDA JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1AB6 JUMPI PUSH2 0x1AB6 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD SWAP1 POP DUP4 DUP2 LT PUSH2 0x1AE9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x21A561B1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1AFB JUMPI PUSH2 0x1AFB PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND PUSH1 0x0 SUB PUSH2 0x1B1E JUMPI POP POP PUSH2 0x1CD2 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B32 JUMPI PUSH2 0x1B32 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD MLOAD PUSH1 0x40 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP1 DUP1 DUP7 PUSH1 0x20 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1B60 JUMPI PUSH2 0x1B60 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x1BFA JUMPI PUSH1 0x40 DUP5 ADD MLOAD DUP1 MLOAD DUP5 LT PUSH2 0x1B8B JUMPI PUSH1 0x40 MLOAD PUSH4 0x5FD9FC67 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1B9F JUMPI PUSH2 0x1B9F PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD DUP1 MLOAD PUSH1 0x40 DUP3 ADD MLOAD SWAP1 SWAP6 POP SWAP4 POP SWAP1 POP PUSH1 0x4 DUP5 EQ PUSH1 0x3 SUB DUP2 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1BD2 JUMPI PUSH2 0x1BD2 PUSH2 0x4677 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1BE5 JUMPI PUSH2 0x1BE5 PUSH2 0x4677 JUMP JUMPDEST SWAP1 MSTORE POP POP PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE POP PUSH2 0x1C8B JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD DUP1 MLOAD DUP5 LT PUSH2 0x1C20 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30446BEF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1C34 JUMPI PUSH2 0x1C34 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD DUP1 MLOAD PUSH1 0x40 DUP3 ADD MLOAD SWAP1 SWAP6 POP SWAP4 POP SWAP1 POP PUSH1 0x4 DUP5 EQ PUSH1 0x3 SUB DUP2 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1C67 JUMPI PUSH2 0x1C67 PUSH2 0x4677 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1C7A JUMPI PUSH2 0x1C7A PUSH2 0x4677 JUMP JUMPDEST SWAP1 MSTORE POP POP PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE POP JUMPDEST PUSH2 0x1C95 DUP3 PUSH1 0x3 LT SWAP1 JUMP JUMPDEST PUSH2 0x1CB2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A75B57B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x1CCB JUMPI PUSH2 0x1CCB DUP7 PUSH1 0x60 ADD MLOAD DUP3 DUP9 PUSH1 0x80 ADD MLOAD PUSH2 0x3173 JUMP JUMPDEST POP POP POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1A9A JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1E09 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1CFA JUMPI PUSH2 0x1CFA PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND PUSH1 0x0 SUB PUSH2 0x1D1F JUMPI POP PUSH2 0x1E01 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1D33 JUMPI PUSH2 0x1D33 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x60 ADD MLOAD MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1DAA JUMPI PUSH2 0x1D81 DUP4 PUSH1 0x60 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1D6F JUMPI PUSH2 0x1D6F PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x3 LT SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1DA2 JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x22973 PUSH1 0xE6 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x1D4E JUMP JUMPDEST POP POP PUSH1 0x40 DUP2 ADD MLOAD MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1DFC JUMPI PUSH2 0x1DD6 DUP4 PUSH1 0x40 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1D6F JUMPI PUSH2 0x1D6F PUSH2 0x4D57 JUMP JUMPDEST ISZERO PUSH2 0x1DF4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA6CFC673 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x1DB5 JUMP JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1CDE JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0xA0 ADD MLOAD DUP7 PUSH1 0xC0 ADD MLOAD PUSH2 0x1E26 SWAP2 SWAP1 PUSH2 0x4FAC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0xA0 ADD MLOAD TIMESTAMP PUSH2 0x1E3A SWAP2 SWAP1 PUSH2 0x4FAC JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E48 DUP3 DUP5 PUSH2 0x4FAC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP CALLVALUE SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0x31E3 PUSH1 0x0 JUMPDEST DUP12 PUSH1 0x40 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1F2C JUMPI PUSH1 0x0 DUP13 PUSH1 0x40 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1E99 JUMPI PUSH2 0x1E99 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1EBE DUP3 PUSH1 0x60 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD DUP16 DUP16 DUP13 DUP13 DUP16 PUSH1 0x0 PUSH2 0x32A0 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE CALLER PUSH1 0x80 DUP5 ADD MSTORE SWAP1 POP PUSH1 0x0 DUP3 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1EE2 JUMPI PUSH2 0x1EE2 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x1F0E JUMPI DUP6 DUP2 GT ISZERO PUSH2 0x1F08 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP7 SUB SWAP6 POP JUMPDEST PUSH2 0x1F22 DUP3 DUP16 PUSH1 0x0 ADD MLOAD DUP14 DUP9 DUP9 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1E74 JUMP JUMPDEST POP PUSH2 0x31E3 SWAP1 POP PUSH1 0x0 JUMPDEST DUP12 PUSH1 0x60 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1FED JUMPI PUSH1 0x0 DUP13 PUSH1 0x60 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1F5A JUMPI PUSH2 0x1F5A PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1F7F DUP3 PUSH1 0x60 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD DUP16 DUP16 DUP13 DUP13 DUP16 PUSH1 0x1 PUSH2 0x32A0 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE SWAP1 POP PUSH1 0x0 DUP3 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1FA7 JUMPI PUSH2 0x1FA7 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x1FD3 JUMPI DUP6 DUP2 GT ISZERO PUSH2 0x1FCD JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP7 SUB SWAP6 POP JUMPDEST PUSH2 0x1FE3 DUP3 CALLER DUP13 DUP9 DUP9 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1F35 JUMP JUMPDEST POP POP PUSH2 0x1FF8 DUP2 PUSH2 0x290E JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2008 JUMPI PUSH2 0x2008 CALLER DUP4 PUSH2 0x32EC JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SWAP1 POP PUSH1 0x60 DUP3 SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9D9AF8E38D66C62E2C12F0225249FD9D721C54B83F48D9352C97C6CACDCB6F31 DUP11 DUP9 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x2067 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4FFD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP3 MLOAD DUP3 MLOAD PUSH1 0x60 SWAP2 DUP3 SWAP2 PUSH2 0x208C DUP2 DUP4 PUSH2 0x4F94 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x20A3 JUMPI PUSH2 0x20A3 PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x20DC JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x20C9 PUSH2 0x3ED7 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x20C1 JUMPI SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2175 JUMPI PUSH1 0x0 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x20FF JUMPI PUSH2 0x20FF PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x2118 DUP13 PUSH1 0x0 DUP5 DUP13 PUSH2 0x3340 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x214A JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP PUSH2 0x216B JUMP JUMPDEST DUP1 DUP8 DUP6 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x215F JUMPI PUSH2 0x215F PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x20E3 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x220D JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2195 JUMPI PUSH2 0x2195 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x21AE DUP13 PUSH1 0x1 DUP5 DUP13 PUSH2 0x3340 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x21E0 JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP PUSH2 0x2203 JUMP JUMPDEST DUP1 DUP8 DUP6 DUP9 DUP7 ADD SUB DUP2 MLOAD DUP2 LT PUSH2 0x21F7 JUMPI PUSH2 0x21F7 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2179 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x221B JUMPI DUP1 DUP5 MLOAD SUB DUP5 MSTORE JUMPDEST POP DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x223E JUMPI PUSH1 0x40 MLOAD PUSH4 0xD5DA9A1B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2248 DUP9 DUP5 PUSH2 0x2CD3 JUMP JUMPDEST SWAP4 POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x2326 JUMPI PUSH2 0x33B PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x2353 PUSH2 0x17FB JUMP JUMPDEST PUSH2 0x2369 DUP7 PUSH2 0x120 ADD CALLDATALOAD DUP8 PUSH2 0x140 ADD CALLDATALOAD PUSH1 0x1 PUSH2 0x304C JUMP JUMPDEST POP PUSH2 0x2372 PUSH2 0x33DB JUMP JUMPDEST PUSH2 0x239A PUSH2 0x2383 PUSH2 0x200 DUP9 ADD DUP9 PUSH2 0x4F16 JUMP JUMPDEST PUSH2 0x238F SWAP2 POP PUSH1 0x1 PUSH2 0x4F94 JUMP JUMPDEST DUP8 PUSH2 0x1E0 ADD CALLDATALOAD PUSH2 0x2EE8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 SWAP1 POP DUP1 PUSH1 0x80 MSTORE DUP6 PUSH1 0xA0 MSTORE PUSH1 0x60 PUSH1 0x24 PUSH1 0xC0 CALLDATACOPY PUSH1 0x40 PUSH1 0x64 PUSH2 0x120 CALLDATACOPY PUSH1 0xE0 PUSH1 0x80 KECCAK256 PUSH2 0x160 MSTORE PUSH2 0x264 CALLDATALOAD PUSH1 0x20 DUP2 MUL PUSH2 0x2A0 ADD PUSH1 0x1 PUSH2 0x264 CALLDATALOAD ADD DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP DUP8 DUP2 MSTORE PUSH1 0x80 PUSH1 0x24 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH2 0x160 DUP8 PUSH1 0xA0 MSTORE DUP7 PUSH1 0xC0 MSTORE PUSH1 0x0 PUSH1 0xE0 MSTORE PUSH2 0x204 CALLDATALOAD SWAP3 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x246B JUMPI DUP1 PUSH1 0x40 MUL PUSH2 0x284 ADD PUSH1 0x20 DUP2 PUSH2 0x100 CALLDATACOPY PUSH1 0x40 DUP2 PUSH2 0x120 CALLDATACOPY PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0xE0 PUSH1 0x80 KECCAK256 DUP4 MSTORE PUSH1 0xA0 DUP5 ADD SWAP4 POP DUP10 DUP5 MSTORE DUP9 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 PUSH1 0x60 DUP7 ADD CALLDATACOPY POP PUSH1 0x1 ADD PUSH2 0x2420 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 DUP6 ADD MUL PUSH2 0x160 KECCAK256 PUSH1 0x60 MSTORE PUSH2 0x264 CALLDATALOAD SWAP4 POP JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24B1 JUMPI DUP1 PUSH1 0x40 MUL PUSH2 0x284 ADD SWAP2 POP PUSH1 0xA0 DUP4 ADD SWAP3 POP DUP9 DUP4 MSTORE DUP8 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 PUSH1 0x60 DUP6 ADD CALLDATACOPY PUSH1 0x1 ADD PUSH2 0x2480 JUMP JUMPDEST POP POP POP POP POP PUSH1 0x0 PUSH32 0x0 SWAP1 POP DUP1 PUSH1 0x80 MSTORE DUP3 PUSH1 0xA0 MSTORE PUSH1 0x60 PUSH1 0xC4 PUSH1 0xC0 CALLDATACOPY PUSH1 0x20 PUSH2 0x104 PUSH2 0x120 CALLDATACOPY PUSH1 0xC0 PUSH1 0x80 KECCAK256 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0xE0 MSTORE PUSH1 0x20 PUSH2 0x264 CALLDATALOAD MUL PUSH2 0x200 ADD PUSH1 0x1 DUP2 MSTORE DUP4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0xC4 PUSH1 0x40 DUP4 ADD CALLDATACOPY POP POP PUSH1 0x84 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH32 0x0 PUSH1 0x80 DUP2 SWAP1 MSTORE SWAP1 SWAP2 POP PUSH1 0x40 PUSH1 0x84 PUSH1 0xA0 CALLDATACOPY PUSH1 0x60 MLOAD PUSH2 0x100 MSTORE DUP9 PUSH2 0x120 MSTORE PUSH1 0xA0 PUSH2 0x144 PUSH2 0x140 CALLDATACOPY DUP2 PUSH2 0x1E0 MSTORE PUSH2 0x180 PUSH1 0x80 KECCAK256 SWAP4 POP POP POP POP PUSH1 0x20 PUSH2 0x264 CALLDATALOAD MUL PUSH2 0x180 ADD DUP2 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x120 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 PUSH2 0x264 CALLDATALOAD MUL PUSH2 0x1E0 ADD PUSH1 0xA4 CALLDATALOAD PUSH1 0x84 CALLDATALOAD PUSH32 0x9D9AF8E38D66C62E2C12F0225249FD9D721C54B83F48D9352C97C6CACDCB6F31 DUP4 DUP6 LOG3 POP POP PUSH1 0x0 PUSH1 0x60 MSTORE PUSH2 0x2626 DUP2 DUP9 PUSH2 0x160 ADD CALLDATALOAD DUP9 DUP11 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2611 SWAP2 SWAP1 PUSH2 0x401C JUMP JUMPDEST PUSH2 0x2621 PUSH1 0xA0 DUP14 ADD PUSH1 0x80 DUP15 ADD PUSH2 0x401C JUMP JUMPDEST PUSH2 0x341C JUMP JUMPDEST PUSH2 0x2682 DUP2 PUSH2 0x263A PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x401C JUMP JUMPDEST PUSH2 0x2648 PUSH2 0x220 DUP12 ADD DUP12 PUSH2 0x4DB0 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 0x346C SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x26E7 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP PUSH4 0x2671A551 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE DUP8 PUSH1 0x44 DUP3 ADD MSTORE DUP7 PUSH1 0x64 DUP3 ADD MSTORE DUP6 PUSH1 0x84 DUP3 ADD MSTORE DUP5 PUSH1 0xA4 DUP3 ADD MSTORE DUP4 PUSH1 0xC4 DUP3 ADD MSTORE DUP3 PUSH1 0xE4 DUP3 ADD MSTORE PUSH2 0x26E1 DUP3 DUP3 PUSH2 0x104 PUSH2 0x350E JUMP JUMPDEST POP PUSH2 0x2682 JUMP JUMPDEST PUSH1 0x2 DUP8 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x26FB JUMPI PUSH2 0x26FB PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x2732 JUMPI DUP2 PUSH1 0x1 EQ PUSH2 0x2721 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEFCC00B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x272D DUP7 DUP7 DUP7 DUP7 PUSH2 0x35FE JUMP JUMPDEST PUSH2 0x2682 JUMP JUMPDEST PUSH2 0x2682 DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x36BF JUMP JUMPDEST CALLVALUE DUP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x27B2 JUMPI CALLDATASIZE DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x275F JUMPI PUSH2 0x275F PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x40 MUL SWAP2 SWAP1 SWAP2 ADD SWAP2 POP POP DUP1 CALLDATALOAD DUP5 DUP2 GT ISZERO PUSH2 0x278C JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x27A5 PUSH2 0x279F PUSH1 0x40 DUP5 ADD PUSH1 0x20 DUP6 ADD PUSH2 0x401C JUMP JUMPDEST DUP3 PUSH2 0x32EC JUMP JUMPDEST SWAP1 SWAP4 SUB SWAP3 POP PUSH1 0x1 ADD PUSH2 0x2744 JUMP JUMPDEST POP DUP2 DUP7 GT ISZERO PUSH2 0x27D4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x27DE DUP6 DUP8 PUSH2 0x32EC JUMP JUMPDEST DUP6 DUP3 GT ISZERO PUSH2 0x27F2 JUMPI PUSH2 0x27F2 CALLER DUP8 DUP5 SUB PUSH2 0x32EC JUMP JUMPDEST PUSH2 0x27FC PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x280E DUP2 DUP4 PUSH2 0x37A3 JUMP JUMPDEST DUP2 PUSH2 0x2840 JUMPI DUP3 PUSH1 0x1 EQ PUSH2 0x2834 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEFCC00B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x272D DUP8 DUP8 DUP8 DUP8 PUSH2 0x35FE JUMP JUMPDEST PUSH2 0x2682 DUP3 DUP3 PUSH1 0x2 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x37C2 JUMP JUMPDEST PUSH1 0x20 DUP3 MUL PUSH2 0x1E4 SUB CALLDATALOAD DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x28BF JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x2879 JUMPI PUSH2 0x2879 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x40 MUL SWAP2 SWAP1 SWAP2 ADD SWAP2 POP POP DUP1 CALLDATALOAD DUP7 ISZERO PUSH2 0x2898 JUMPI PUSH2 0x2895 DUP2 DUP12 PUSH2 0x4FAC JUMP JUMPDEST SWAP10 POP JUMPDEST PUSH2 0x28B5 DUP12 DUP15 PUSH2 0x28AD PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x401C JUMP JUMPDEST DUP5 DUP10 DUP12 PUSH2 0x3842 JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x285E JUMP JUMPDEST POP PUSH2 0x28CE DUP9 DUP12 DUP12 DUP11 DUP7 DUP9 PUSH2 0x3842 JUMP JUMPDEST PUSH2 0x2008 PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH2 0x28E1 DUP4 PUSH2 0x387D JUMP JUMPDEST PUSH2 0x28EB DUP2 DUP4 PUSH2 0x37A3 JUMP JUMPDEST DUP2 PUSH2 0x28FD JUMPI PUSH2 0x272D DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x36BF JUMP JUMPDEST PUSH2 0x2682 DUP3 DUP3 PUSH1 0x3 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x37C2 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 EQ PUSH2 0x291A JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2927 DUP3 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x2933 DUP2 DUP4 PUSH2 0x389E JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 SUB PUSH2 0x2947 JUMPI POP DUP1 PUSH2 0x528 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP5 MULMOD ISZERO SWAP1 POP DUP1 PUSH2 0x296E JUMPI PUSH1 0x40 MLOAD PUSH4 0xC63CF089 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x297A DUP7 DUP6 PUSH2 0x4F75 JUMP JUMPDEST SWAP5 SWAP1 SWAP5 DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 DUP8 EQ PUSH2 0x29D7 JUMPI PUSH1 0x0 DUP3 ISZERO PUSH2 0x299F JUMPI POP PUSH1 0x0 NOT DUP4 ADD JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x29AC DUP9 DUP11 PUSH2 0x4F75 JUMP JUMPDEST PUSH2 0x29B6 DUP9 DUP13 PUSH2 0x4F75 JUMP JUMPDEST PUSH2 0x29C0 SWAP2 SWAP1 PUSH2 0x4F94 JUMP JUMPDEST PUSH2 0x29CA SWAP2 SWAP1 PUSH2 0x4F94 JUMP JUMPDEST DUP6 SWAP1 DIV SWAP3 POP PUSH2 0x377 SWAP2 POP POP JUMP JUMPDEST POP SWAP4 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x29EA PUSH2 0x3ED7 JUMP JUMPDEST DUP4 ISZERO DUP1 PUSH2 0x29F5 JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x2A13 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C74EDB7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2A1B PUSH2 0x3ED7 JUMP JUMPDEST PUSH2 0x2A78 DUP8 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x2A6D JUMPI PUSH2 0x2A5E PUSH1 0x40 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x5097 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2A41 JUMP JUMPDEST POP POP POP POP POP DUP4 PUSH2 0x38C2 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP8 DUP2 MSTORE PUSH2 0x2AD7 SWAP2 DUP11 SWAP2 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP2 SWAP1 PUSH1 0x0 SWAP1 DUP6 ADD JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x2ACC JUMPI PUSH2 0x2ABD PUSH1 0x40 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x5097 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2AA0 JUMP JUMPDEST POP POP POP POP POP DUP6 PUSH2 0x3A6E JUMP JUMPDEST DUP1 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2AEA JUMPI PUSH2 0x2AEA PUSH2 0x4677 JUMP JUMPDEST DUP4 MLOAD MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2AFE JUMPI PUSH2 0x2AFE PUSH2 0x4677 JUMP JUMPDEST EQ ISZERO DUP1 PUSH2 0x2B29 JUMPI POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST DUP1 PUSH2 0x2B40 JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x40 ADD MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x2B5E JUMPI PUSH1 0x40 MLOAD PUSH4 0x9CFB455 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD DUP2 PUSH1 0x60 ADD MLOAD GT ISZERO PUSH2 0x2C15 JUMPI PUSH1 0x0 DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x2B87 JUMPI PUSH2 0x2B87 PUSH2 0x4D57 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2B9D SWAP2 SWAP1 PUSH2 0x5097 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x2BB7 SWAP2 SWAP1 PUSH2 0x4FAC JUMP JUMPDEST DUP10 DUP3 PUSH1 0x0 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2BCD JUMPI PUSH2 0x2BCD PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2BF2 JUMPI PUSH2 0x2BF2 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x60 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MLOAD DUP2 ADD MLOAD SWAP1 DUP4 ADD MSTORE POP PUSH2 0x2CA7 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP8 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x2C2A JUMPI PUSH2 0x2C2A PUSH2 0x4D57 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2C40 SWAP2 SWAP1 PUSH2 0x5097 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x60 ADD MLOAD DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH2 0x2C5A SWAP2 SWAP1 PUSH2 0x4FAC JUMP JUMPDEST DUP10 DUP3 PUSH1 0x0 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2C70 JUMPI PUSH2 0x2C70 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2C95 JUMPI PUSH2 0x2C95 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP POP JUMPDEST PUSH1 0x60 DUP1 DUP3 ADD MLOAD DUP5 MLOAD SWAP1 SWAP2 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 ADD MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x60 SWAP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2CF0 JUMPI PUSH2 0x2CF0 PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2D19 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2DFF JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2D3B JUMPI PUSH2 0x2D3B PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND PUSH1 0x0 SUB PUSH2 0x2D60 JUMPI POP PUSH2 0x2DF7 JUMP JUMPDEST PUSH1 0x1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2D74 JUMPI PUSH2 0x2D74 PUSH2 0x4D57 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x2DF3 JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2DAA JUMPI PUSH2 0x2DAA PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x2DEA JUMPI PUSH1 0x40 MLOAD PUSH4 0x14BEA841 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xDE3 JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2D8D JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2D1F JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE CALLVALUE SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x2EBB JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2E44 JUMPI PUSH2 0x2E44 PUSH2 0x4D57 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD DUP1 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2E69 JUMPI PUSH2 0x2E69 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x2E9D JUMPI DUP5 DUP2 PUSH1 0x60 ADD MLOAD GT ISZERO PUSH2 0x2E93 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD DUP6 SUB SWAP5 POP JUMPDEST PUSH2 0x2EB1 DUP2 DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD DUP8 PUSH2 0x31E3 JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2E27 JUMP JUMPDEST POP PUSH2 0x2EC5 DUP2 PUSH2 0x290E JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2ED5 JUMPI PUSH2 0x2ED5 CALLER DUP4 PUSH2 0x32EC JUMP JUMPDEST PUSH2 0x2EDF PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x2933 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2335530B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x40 SUB PUSH2 0x2F3A JUMPI POP POP POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP2 AND SWAP1 PUSH1 0xFF SHR PUSH1 0x1B ADD PUSH2 0x2FA0 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x2F95 JUMPI POP POP POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x0 BYTE PUSH1 0x1B DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2F6D JUMPI POP DUP1 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x2F90 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF801E85 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0xFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDE3 JUMP JUMPDEST PUSH2 0x2FA0 JUMP JUMPDEST PUSH2 0x27FC DUP7 DUP7 DUP7 PUSH2 0x3BF8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP9 SWAP1 MSTORE PUSH1 0xFF DUP5 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 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 0x2FF4 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 0x3028 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8BAA579F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x2682 JUMPI PUSH2 0x2682 DUP8 DUP8 DUP8 PUSH2 0x3BF8 JUMP JUMPDEST PUSH1 0x0 TIMESTAMP DUP5 GT DUP1 PUSH2 0x305C JUMPI POP TIMESTAMP DUP4 GT ISZERO JUMPDEST ISZERO PUSH2 0x3088 JUMPI DUP2 ISZERO PUSH2 0x3080 JUMPI PUSH1 0x40 MLOAD PUSH4 0x37BF5613 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x528 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x30A6 JUMPI PUSH2 0x30A6 PUSH2 0x4677 JUMP JUMPDEST GT DUP1 ISZERO PUSH2 0x30BC JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x30D1 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1558 JUMPI PUSH1 0x80 DUP9 ADD MLOAD MLOAD ISZERO DUP1 ISZERO PUSH2 0x30E8 JUMPI POP DUP7 MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x30FE JUMPI PUSH2 0x30F9 DUP2 DUP7 DUP5 DUP8 PUSH2 0x3C6F JUMP JUMPDEST PUSH2 0x1558 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x315C DUP3 PUSH4 0x33131570 PUSH1 0xE0 SHL DUP9 CALLER DUP14 DUP13 DUP15 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3125 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x526B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3CBB JUMP JUMPDEST SWAP1 POP PUSH2 0x3168 DUP2 DUP8 PUSH2 0x3CD0 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP5 MLOAD MUL DUP2 ADD JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x31BF JUMPI DUP2 MLOAD DUP1 DUP5 GT DUP1 ISZERO PUSH2 0x31A2 JUMPI DUP2 PUSH1 0x0 MSTORE DUP5 PUSH1 0x20 MSTORE PUSH2 0x31AB JUMP JUMPDEST DUP5 PUSH1 0x0 MSTORE DUP2 PUSH1 0x20 MSTORE JUMPDEST POP POP PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP3 POP PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x3182 JUMP JUMPDEST POP POP DUP4 EQ SWAP1 POP DUP1 PUSH2 0x17F5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9BDE339 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x31F8 JUMPI PUSH2 0x31F8 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x3214 JUMPI PUSH2 0x320F DUP5 PUSH1 0x80 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x32EC JUMP JUMPDEST PUSH2 0x17F5 JUMP JUMPDEST PUSH1 0x1 DUP5 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x3229 JUMPI PUSH2 0x3229 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x3248 JUMPI PUSH2 0x320F DUP5 PUSH1 0x20 ADD MLOAD DUP5 DUP7 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD DUP7 DUP7 PUSH2 0x3842 JUMP JUMPDEST PUSH1 0x2 DUP5 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x325D JUMPI PUSH2 0x325D PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x3281 JUMPI PUSH2 0x320F DUP5 PUSH1 0x20 ADD MLOAD DUP5 DUP7 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD DUP8 DUP8 PUSH2 0x2804 JUMP JUMPDEST PUSH2 0x17F5 DUP5 PUSH1 0x20 ADD MLOAD DUP5 DUP7 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD DUP8 DUP8 PUSH2 0x28D8 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP10 SUB PUSH2 0x32BB JUMPI PUSH2 0x32B4 DUP8 DUP8 DUP11 PUSH2 0x2937 JUMP JUMPDEST SWAP1 POP PUSH2 0x32E0 JUMP JUMPDEST PUSH2 0x32DD PUSH2 0x32C9 DUP9 DUP9 DUP13 PUSH2 0x2937 JUMP JUMPDEST PUSH2 0x32D4 DUP10 DUP10 DUP13 PUSH2 0x2937 JUMP JUMPDEST DUP8 DUP8 DUP8 DUP8 PUSH2 0x2987 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x32F5 DUP2 PUSH2 0x387D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP8 GAS CALL SWAP1 POP DUP1 PUSH2 0x333B JUMPI PUSH2 0x3310 PUSH2 0x3D2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x470C7C1D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xDE3 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x3348 PUSH2 0x3ED7 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x336C JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x375C24C1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDE3 SWAP2 SWAP1 PUSH2 0x53F1 JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x3380 JUMPI PUSH2 0x3380 PUSH2 0x4677 JUMP JUMPDEST SUB PUSH2 0x3395 JUMPI PUSH2 0x3390 DUP6 DUP5 DUP4 PUSH2 0x3A6E JUMP JUMPDEST PUSH2 0x33AE JUMP JUMPDEST PUSH2 0x33A0 DUP6 DUP5 DUP4 PUSH2 0x38C2 JUMP JUMPDEST CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP3 SWAP1 MSTORE JUMPDEST DUP1 MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x0 SUB PUSH2 0x5A5 JUMPI PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x244 CALLDATALOAD PUSH2 0x260 PUSH2 0x264 CALLDATALOAD PUSH1 0x40 MUL ADD EQ PUSH1 0x4 CALLDATALOAD PUSH1 0x20 EQ PUSH2 0x224 CALLDATALOAD PUSH2 0x240 EQ AND AND DUP1 PUSH2 0x3419 JUMPI PUSH1 0x40 MLOAD PUSH4 0x39F3E3FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3430 JUMPI PUSH2 0x3430 PUSH2 0x4677 JUMP JUMPDEST GT DUP1 ISZERO PUSH2 0x3446 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x345B JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1E09 JUMPI PUSH2 0x1E09 DUP2 DUP7 DUP5 DUP8 PUSH2 0x3C6F JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x80 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB PUSH3 0x10000 DUP4 DIV DUP2 AND SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x88 SHL SWAP1 SWAP2 DIV SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x34D4 DUP5 DUP3 PUSH1 0x1 DUP1 PUSH2 0x16ED JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x34E6 JUMPI PUSH2 0x34E6 DUP4 DUP6 DUP5 PUSH2 0x17A6 JUMP JUMPDEST POP POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH18 0x10000000000000000000000000000010001 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF PUSH1 0xA0 SHL PUSH32 0x0 OR PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 DUP2 MSTORE PUSH32 0x0 DUP5 MSTORE PUSH1 0x55 PUSH1 0xB KECCAK256 SWAP3 SWAP1 SWAP4 MSTORE DUP1 DUP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 DUP2 DUP5 DUP7 DUP3 DUP7 GAS CALL SWAP1 POP DUP1 PUSH2 0x35B8 JUMPI PUSH2 0x3594 PUSH2 0x3D2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x344F54F5 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDE3 JUMP JUMPDEST PUSH1 0x0 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x2671A551 PUSH1 0xE1 SHL EQ PUSH2 0x27FC JUMPI PUSH1 0x40 MLOAD PUSH4 0xE7CCD93 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xDE3 JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x3619 JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x36B0 JUMPI RETURNDATASIZE ISZERO PUSH2 0x368A JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x3671 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x3686 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x36DA JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH4 0x79212195 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0x3787 JUMPI RETURNDATASIZE ISZERO PUSH2 0x3762 JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x3749 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x375E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37B0 DUP4 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x333B JUMPI PUSH2 0x333B DUP4 PUSH2 0x290E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP9 MLOAD SUB PUSH2 0x37FD JUMPI POP PUSH1 0x40 DUP1 DUP9 MSTORE PUSH1 0x20 DUP1 DUP10 ADD DUP11 SWAP1 MSTORE PUSH4 0x2671A551 PUSH1 0xE1 SHL SWAP2 DUP10 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x1 PUSH1 0x64 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x380C JUMP JUMPDEST POP PUSH1 0x64 DUP8 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 MSTORE JUMPDEST PUSH1 0x3C PUSH1 0xC0 DUP3 MUL DUP10 ADD SUB DUP8 DUP2 MSTORE DUP7 PUSH1 0x20 DUP3 ADD MSTORE DUP6 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE DUP4 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x384B DUP4 PUSH2 0x387D JUMP JUMPDEST PUSH2 0x3855 DUP2 DUP4 PUSH2 0x37A3 JUMP JUMPDEST DUP2 PUSH2 0x386B JUMPI PUSH2 0x3866 DUP7 DUP7 DUP7 DUP7 PUSH2 0x3D6F JUMP JUMPDEST PUSH2 0x27FC JUMP JUMPDEST PUSH2 0x27FC DUP3 DUP3 PUSH1 0x1 DUP10 DUP10 DUP10 PUSH1 0x0 DUP11 PUSH2 0x37C2 JUMP JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x3419 JUMPI PUSH1 0x40 MLOAD PUSH4 0x246CF945 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x64 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD SWAP1 PUSH1 0xC0 MUL PUSH1 0x44 ADD PUSH2 0x38B9 DUP5 DUP4 DUP4 PUSH2 0x350E JUMP JUMPDEST POP POP PUSH1 0x20 SWAP1 MSTORE POP JUMP JUMPDEST PUSH2 0x38EE JUMP JUMPDEST PUSH4 0x7FDA7279 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD DUP1 MLOAD MLOAD DUP5 MLOAD DUP2 LT PUSH2 0x3905 JUMPI PUSH2 0x3905 PUSH2 0x38C7 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL PUSH1 0x20 DUP7 ADD ADD MLOAD PUSH1 0x60 DUP2 MLOAD ADD MLOAD PUSH1 0x20 DUP5 MLOAD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x392B JUMPI PUSH2 0x392B PUSH2 0x38C7 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL PUSH1 0x20 DUP4 ADD ADD MLOAD PUSH1 0x0 DUP1 PUSH1 0x20 DUP7 ADD MLOAD ISZERO PUSH2 0x3952 JUMPI POP POP PUSH1 0x60 DUP2 ADD DUP1 MLOAD PUSH1 0x0 SWAP1 SWAP2 MSTORE DUP1 ISZERO JUMPDEST DUP9 MLOAD DUP4 MLOAD DUP2 MSTORE PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xA0 DUP5 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x60 DUP2 KECCAK256 PUSH1 0x20 DUP13 MLOAD MUL DUP13 ADD JUMPDEST DUP1 DUP12 LT ISZERO PUSH2 0x3A29 JUMPI PUSH1 0x20 DUP12 ADD SWAP11 POP DUP11 MLOAD MLOAD SWAP10 POP DUP14 MLOAD DUP11 LT PUSH2 0x39A5 JUMPI PUSH2 0x39A5 PUSH2 0x38C7 JUMP JUMPDEST PUSH1 0x20 DUP11 MUL PUSH1 0x20 DUP16 ADD ADD MLOAD SWAP9 POP PUSH1 0x20 DUP10 ADD MLOAD ISZERO PUSH2 0x3982 JUMPI PUSH1 0x60 DUP10 MLOAD ADD MLOAD SWAP8 POP PUSH1 0x20 DUP12 MLOAD ADD MLOAD SWAP7 POP DUP8 MLOAD DUP8 LT PUSH2 0x39DB JUMPI PUSH2 0x39DB PUSH2 0x38C7 JUMP JUMPDEST PUSH1 0x20 DUP8 MUL PUSH1 0x20 DUP10 ADD ADD MLOAD SWAP6 POP PUSH1 0x60 DUP7 ADD DUP1 MLOAD DUP7 ADD DUP2 MLOAD ISZERO DUP8 DUP3 LT PUSH1 0x1 SHL OR DUP7 OR SWAP6 POP DUP1 SWAP7 POP POP PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x60 DUP7 KECCAK256 DUP3 EQ PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0xA0 DUP9 ADD MLOAD EQ AND PUSH2 0x3A24 JUMPI PUSH2 0x3A24 PUSH2 0x38C7 JUMP JUMPDEST PUSH2 0x3982 JUMP JUMPDEST POP POP PUSH1 0x60 ADD DUP3 SWAP1 MSTORE DUP1 PUSH1 0x1 DUP2 EQ PUSH2 0x3A47 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x3A58 JUMPI PUSH2 0x3A60 JUMP JUMPDEST PUSH4 0x246CF945 PUSH1 0xE2 SHL PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x3A60 PUSH2 0x38D8 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP1 MLOAD MLOAD DUP5 MLOAD DUP2 LT PUSH2 0x3A85 JUMPI PUSH2 0x3A85 PUSH2 0x38C7 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL PUSH1 0x20 DUP7 ADD ADD MLOAD DUP1 MLOAD PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x20 DUP6 MLOAD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x3AAC JUMPI PUSH2 0x3AAC PUSH2 0x38C7 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL PUSH1 0x20 DUP4 ADD ADD MLOAD PUSH1 0x0 DUP1 PUSH1 0x20 DUP8 ADD MLOAD ISZERO PUSH2 0x3AD3 JUMPI POP POP PUSH1 0x60 DUP2 ADD DUP1 MLOAD PUSH1 0x0 SWAP1 SWAP2 MSTORE DUP1 ISZERO JUMPDEST DUP10 MLOAD CALLER PUSH1 0x80 DUP3 ADD MSTORE DUP4 MLOAD DUP2 MSTORE PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE DUP7 MLOAD PUSH1 0x20 DUP13 ADD MSTORE PUSH2 0x120 DUP8 ADD MLOAD PUSH1 0x40 DUP13 ADD MSTORE PUSH1 0x60 DUP2 KECCAK256 SWAP1 POP PUSH1 0x20 DUP13 MLOAD MUL DUP13 ADD JUMPDEST DUP1 DUP12 LT ISZERO PUSH2 0x3BC7 JUMPI PUSH1 0x20 DUP12 ADD SWAP11 POP DUP11 MLOAD MLOAD SWAP10 POP DUP14 MLOAD DUP11 LT PUSH2 0x3B36 JUMPI PUSH2 0x3B36 PUSH2 0x38C7 JUMP JUMPDEST PUSH1 0x20 DUP11 MUL PUSH1 0x20 DUP16 ADD ADD MLOAD SWAP9 POP PUSH1 0x20 DUP10 ADD MLOAD ISZERO PUSH2 0x3B13 JUMPI DUP9 MLOAD SWAP8 POP PUSH1 0x40 DUP9 ADD MLOAD SWAP7 POP PUSH1 0x20 DUP12 MLOAD ADD MLOAD SWAP6 POP DUP7 MLOAD DUP7 LT PUSH2 0x3B6F JUMPI PUSH2 0x3B6F PUSH2 0x38C7 JUMP JUMPDEST PUSH1 0x20 DUP7 MUL PUSH1 0x20 DUP9 ADD ADD MLOAD SWAP5 POP PUSH1 0x60 DUP6 ADD DUP1 MLOAD DUP6 ADD DUP2 MLOAD ISZERO DUP7 DUP3 LT PUSH1 0x1 SHL OR DUP6 OR SWAP5 POP DUP1 SWAP6 POP POP PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x60 DUP6 KECCAK256 DUP3 EQ PUSH1 0x40 DUP14 ADD MLOAD PUSH2 0x120 DUP11 ADD MLOAD EQ PUSH1 0x20 DUP15 ADD MLOAD DUP11 MLOAD EQ AND AND PUSH2 0x3BC2 JUMPI PUSH2 0x3BC2 PUSH2 0x38C7 JUMP JUMPDEST PUSH2 0x3B13 JUMP JUMPDEST POP POP DUP2 PUSH1 0x60 DUP12 MLOAD ADD MSTORE DUP1 PUSH1 0x1 DUP2 EQ PUSH2 0x3A47 JUMPI PUSH1 0x2 DUP2 SUB PUSH2 0x3BE9 JUMPI PUSH2 0x3BE9 PUSH2 0x38D8 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C19 DUP5 PUSH4 0x1626BA7E PUSH1 0xE0 SHL DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3125 SWAP3 SWAP2 SWAP1 PUSH2 0x53FF JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3C41 JUMPI PUSH2 0x3C28 PUSH2 0x3D2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4F7FB80D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3C51 PUSH4 0xB135D3F PUSH1 0xE1 SHL PUSH2 0x3E75 JUMP JUMPDEST ISZERO PUSH2 0x17F5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x20578759 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE CALLER PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3CAF SWAP1 DUP7 SWAP1 PUSH4 0x3874C77 PUSH1 0xE2 SHL SWAP1 PUSH1 0xA4 ADD PUSH2 0x3125 JUMP JUMPDEST SWAP1 POP PUSH2 0x1E09 DUP2 DUP6 PUSH2 0x3CD0 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS STATICCALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x3CF9 JUMPI PUSH2 0x3CDD PUSH2 0x3D2A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3ED4053F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDE3 JUMP JUMPDEST PUSH2 0x3D09 PUSH4 0x3874C77 PUSH1 0xE2 SHL PUSH2 0x3E75 JUMP JUMPDEST ISZERO PUSH2 0x2933 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3ED4053F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDE3 JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x16B0 JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 PUSH1 0x40 MLOAD DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x3D5A JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x333B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x3E65 JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x3E65 JUMPI DUP1 PUSH2 0x3E50 JUMPI DUP2 PUSH2 0x3E2F JUMPI RETURNDATASIZE ISZERO PUSH2 0x3E09 JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x3DF0 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x3E05 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x98891923 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 RETURNDATASIZE SUB PUSH2 0x3E8B JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 DUP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 EQ ISZERO SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x3EB6 PUSH2 0x3F1A JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x80 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP4 ADD DUP3 SWAP1 MSTORE DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F67 JUMPI PUSH2 0x3F67 PUSH2 0x4677 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3FBD JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x3FA1 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x3FCF JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP 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 0x528 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3F97 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3419 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4017 DUP2 PUSH2 0x3FF7 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x402E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x528 DUP2 PUSH2 0x3FF7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x404B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD 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 0xA0 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x408A JUMPI PUSH2 0x408A PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x160 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x408A JUMPI PUSH2 0x408A PUSH2 0x4052 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 0x40DB JUMPI PUSH2 0x40DB PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x40FC JUMPI PUSH2 0x40FC PUSH2 0x4052 JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x6 DUP2 LT PUSH2 0x4017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4127 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x412F PUSH2 0x4068 JUMP JUMPDEST SWAP1 POP PUSH2 0x413A DUP3 PUSH2 0x4106 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x414A DUP2 PUSH2 0x3FF7 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4186 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x419B PUSH2 0x4196 DUP4 PUSH2 0x40E3 JUMP JUMPDEST PUSH2 0x40B3 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xA0 SWAP3 DUP4 MUL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP3 ADD SWAP2 SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0x41BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x41DD JUMPI PUSH2 0x41D0 DUP10 DUP3 PUSH2 0x4115 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 DUP2 ADD PUSH2 0x41BE JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x421E JUMPI PUSH2 0x421E PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 POP DUP1 PUSH2 0x422D DUP4 PUSH2 0x4106 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x423D DUP2 PUSH2 0x3FF7 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD PUSH2 0x4270 DUP2 PUSH2 0x3FF7 JUMP JUMPDEST PUSH1 0xA0 SWAP2 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x428E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x429E PUSH2 0x4196 DUP4 PUSH2 0x40E3 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xC0 SWAP3 DUP4 MUL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP3 ADD SWAP2 SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0x42BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x41DD JUMPI PUSH2 0x42D3 DUP10 DUP3 PUSH2 0x41EA JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 DUP2 ADD PUSH2 0x42C1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0x4017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4302 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x430A PUSH2 0x4090 JUMP JUMPDEST SWAP1 POP PUSH2 0x4315 DUP3 PUSH2 0x400C JUMP JUMPDEST DUP2 MSTORE PUSH2 0x4323 PUSH1 0x20 DUP4 ADD PUSH2 0x400C JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4342 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x434E DUP6 DUP4 DUP7 ADD PUSH2 0x4175 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4374 DUP5 DUP3 DUP6 ADD PUSH2 0x427D JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH2 0x4386 PUSH1 0x80 DUP4 ADD PUSH2 0x42E0 JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP3 ADD CALLDATALOAD PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP3 ADD CALLDATALOAD PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 DUP1 DUP4 ADD CALLDATALOAD DUP2 DUP4 ADD MSTORE POP PUSH2 0x120 DUP1 DUP4 ADD CALLDATALOAD DUP2 DUP4 ADD MSTORE POP PUSH2 0x140 DUP1 DUP4 ADD CALLDATALOAD DUP2 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4017 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x43FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4414 JUMPI PUSH2 0x4414 PUSH2 0x4052 JUMP JUMPDEST PUSH2 0x4427 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x40B3 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x443C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x446B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4473 PUSH2 0x4068 JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x448C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4498 DUP6 DUP4 DUP7 ADD PUSH2 0x42EF JUMP JUMPDEST DUP4 MSTORE PUSH2 0x44A6 PUSH1 0x20 DUP6 ADD PUSH2 0x43D3 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x44B7 PUSH1 0x40 DUP6 ADD PUSH2 0x43D3 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x44D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x44DC DUP6 DUP4 DUP7 ADD PUSH2 0x43EA JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x44F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4502 DUP5 DUP3 DUP6 ADD PUSH2 0x43EA JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x451F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x452F PUSH2 0x4196 DUP4 PUSH2 0x40E3 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x454E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x458D JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4571 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x457F DUP10 DUP7 DUP4 DUP12 ADD ADD PUSH2 0x4459 JUMP JUMPDEST DUP5 MSTORE POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x4552 JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x45AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x45C1 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 0x45DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x45FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4612 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x461E DUP10 DUP4 DUP11 ADD PUSH2 0x450E JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4634 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4640 DUP10 DUP4 DUP11 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4659 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4666 DUP9 DUP3 DUP10 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x6 DUP2 LT PUSH2 0x469D JUMPI PUSH2 0x469D PUSH2 0x4677 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x46AC DUP3 DUP3 MLOAD PUSH2 0x468D JUMP JUMPDEST PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MSTORE PUSH1 0x80 SWAP2 DUP3 ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x473A JUMPI DUP2 MLOAD PUSH2 0x470D DUP9 DUP3 MLOAD PUSH2 0x46A1 JUMP JUMPDEST DUP1 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP10 ADD MSTORE PUSH1 0x40 ADD MLOAD PUSH1 0xC0 DUP9 ADD MSTORE PUSH1 0xE0 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x46F8 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x528 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x46E4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x476A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4780 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH2 0x160 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x47A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47C8 DUP6 DUP3 DUP7 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x47EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4801 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x480D DUP9 DUP4 DUP10 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4826 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4833 DUP8 DUP3 DUP9 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4852 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4868 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x40 DUP2 DUP7 SUB SLT ISZERO PUSH2 0x487A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x489E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x48B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP7 ADD SWAP1 PUSH1 0xA0 DUP3 DUP10 SUB SLT ISZERO PUSH2 0x48C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x48DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48EC DUP8 DUP3 DUP9 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP6 SWAP9 SWAP1 SWAP8 POP SWAP5 SWAP6 PUSH1 0x40 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x491B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4932 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x493E DUP13 DUP4 DUP14 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH1 0x20 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4957 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4963 DUP13 DUP4 DUP14 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x40 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x497C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4989 DUP12 DUP3 DUP13 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 SWAP6 SWAP9 SWAP7 SWAP8 PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x80 ADD CALLDATALOAD SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x49E2 JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x49C4 JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE PUSH2 0x377 DUP2 DUP7 PUSH2 0x46E4 JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x4A09 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x3F97 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A3B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4A51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH2 0x240 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x4A82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4A99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4AA5 DUP14 DUP4 DUP15 ADD PUSH2 0x450E JUMP JUMPDEST SWAP11 POP PUSH1 0x20 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4ABB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4AC7 DUP14 DUP4 DUP15 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH1 0x40 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4AE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4AEC DUP14 DUP4 DUP15 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x60 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4B05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B12 DUP13 DUP3 DUP14 ADD PUSH2 0x4598 JUMP JUMPDEST SWAP11 SWAP14 SWAP10 SWAP13 POP SWAP8 SWAP11 SWAP7 SWAP10 SWAP6 SWAP9 SWAP6 SWAP7 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP7 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B42 PUSH2 0x4196 DUP5 PUSH2 0x40E3 JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP2 SWAP1 PUSH1 0x5 DUP7 DUP2 SHL DUP7 ADD CALLDATASIZE DUP2 GT ISZERO PUSH2 0x4B60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4C5B JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4B82 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP PUSH1 0xA0 DUP3 CALLDATASIZE SUB SLT ISZERO PUSH2 0x4B98 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x4BA0 PUSH2 0x4068 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE DUP7 DUP4 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x4BB6 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP9 ADD MSTORE PUSH1 0x40 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x4BE2 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP4 SWAP1 SWAP4 ADD SWAP3 CALLDATASIZE PUSH1 0x1F DUP6 ADD SLT PUSH2 0x4BF9 JUMPI PUSH1 0x0 SWAP3 POP DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x4C09 PUSH2 0x4196 DUP5 PUSH2 0x40E3 JUMP JUMPDEST DUP4 DUP2 MSTORE SWAP3 DUP8 SHL DUP5 ADD DUP9 ADD SWAP3 DUP9 DUP2 ADD SWAP1 CALLDATASIZE DUP6 GT ISZERO PUSH2 0x4C26 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP5 DUP10 ADD SWAP5 JUMPDEST DUP5 DUP7 LT ISZERO PUSH2 0x4C44 JUMPI DUP6 CALLDATALOAD DUP3 MSTORE SWAP5 DUP10 ADD SWAP5 SWAP1 DUP10 ADD SWAP1 PUSH2 0x4C2B JUMP JUMPDEST SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 MSTORE POP POP SWAP5 DUP4 ADD SWAP5 DUP4 ADD PUSH2 0x4B62 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4C7F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4C99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP PUSH1 0xA0 DUP2 MUL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x45DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4CC2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x528 DUP4 DUP4 PUSH2 0x4115 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4CE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4CFD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP PUSH1 0xC0 DUP2 MUL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x45DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D26 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x528 DUP4 DUP4 PUSH2 0x41EA JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D42 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x528 DUP3 PUSH2 0x42E0 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35A CALLDATASIZE DUP4 PUSH2 0x4459 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 PUSH1 0x3E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4D83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x15E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4D83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x35A CALLDATASIZE DUP4 PUSH2 0x42EF JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4DC7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4DE1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x45DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x4E2A JUMPI PUSH2 0x4E2A PUSH2 0x4052 JUMP JUMPDEST PUSH1 0x40 MSTORE 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 PUSH2 0x4E52 PUSH2 0x4196 DUP5 PUSH2 0x40E3 JUMP JUMPDEST DUP1 DUP5 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP6 PUSH1 0x5 SHL DUP6 ADD CALLDATASIZE DUP2 GT ISZERO PUSH2 0x4E70 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4F0A JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4E91 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP8 ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT PUSH2 0x4EA3 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4EB1 PUSH2 0x4196 DUP3 PUSH2 0x40E3 JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x6 SWAP2 SWAP1 SWAP2 SHL DUP3 ADD DUP6 ADD SWAP1 DUP6 DUP2 ADD SWAP1 CALLDATASIZE DUP4 GT ISZERO PUSH2 0x4ED1 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP3 DUP7 ADD SWAP3 JUMPDEST DUP3 DUP5 LT ISZERO PUSH2 0x4EFA JUMPI PUSH2 0x4EE8 CALLDATASIZE DUP6 PUSH2 0x4DF6 JUMP JUMPDEST DUP3 MSTORE DUP7 DUP3 ADD SWAP2 POP PUSH1 0x40 DUP5 ADD SWAP4 POP PUSH2 0x4ED6 JUMP JUMPDEST DUP9 MSTORE POP POP POP SWAP4 DUP3 ADD SWAP4 DUP3 ADD PUSH2 0x4E72 JUMP JUMPDEST POP SWAP2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4F2D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4F47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP PUSH1 0x6 DUP2 SWAP1 SHL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x45DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x4F8F JUMPI PUSH2 0x4F8F PUSH2 0x4F5F JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x4FA7 JUMPI PUSH2 0x4FA7 PUSH2 0x4F5F JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x4FBE JUMPI PUSH2 0x4FBE PUSH2 0x4F5F JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x473A JUMPI PUSH2 0x4FEA DUP8 DUP4 MLOAD PUSH2 0x46A1 JUMP JUMPDEST PUSH1 0xA0 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4FD7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP1 DUP4 ADD DUP8 DUP5 MSTORE PUSH1 0x20 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND DUP3 DUP8 ADD MSTORE PUSH1 0x40 DUP5 DUP2 DUP9 ADD MSTORE DUP4 DUP10 MLOAD DUP1 DUP7 MSTORE PUSH1 0xA0 DUP10 ADD SWAP2 POP DUP5 DUP12 ADD SWAP6 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x5073 JUMPI DUP7 MLOAD PUSH2 0x5047 DUP5 DUP3 MLOAD PUSH2 0x468D JUMP JUMPDEST DUP1 DUP8 ADD MLOAD DUP7 AND DUP5 DUP9 ADD MSTORE DUP5 DUP2 ADD MLOAD DUP6 DUP6 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 ADD MLOAD SWAP1 DUP5 ADD MSTORE SWAP6 DUP6 ADD SWAP6 SWAP2 DUP8 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x5032 JUMP JUMPDEST POP POP DUP8 DUP2 SUB PUSH1 0x60 DUP10 ADD MSTORE PUSH2 0x5087 DUP2 DUP11 PUSH2 0x4FC3 JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x50A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x528 DUP4 DUP4 PUSH2 0x4DF6 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x473A JUMPI DUP2 MLOAD PUSH2 0x50DC DUP9 DUP3 MLOAD PUSH2 0x468D JUMP JUMPDEST DUP4 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP6 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP10 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP10 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP9 ADD MSTORE PUSH1 0xA0 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x50C7 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x473A JUMPI DUP2 MLOAD PUSH2 0x5146 DUP9 DUP3 MLOAD PUSH2 0x468D JUMP JUMPDEST DUP1 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP10 DUP7 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP11 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP11 ADD MSTORE PUSH1 0x80 DUP1 DUP4 ADD MLOAD SWAP1 DUP11 ADD MSTORE PUSH1 0xA0 SWAP2 DUP3 ADD MLOAD AND SWAP1 DUP9 ADD MSTORE PUSH1 0xC0 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5131 JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x469D JUMPI PUSH2 0x469D PUSH2 0x4677 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x473A JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x51B8 JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x469D JUMPI PUSH2 0x469D PUSH2 0x4677 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MLOAD DUP1 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP6 POP DUP1 DUP3 PUSH1 0x5 SHL DUP5 ADD ADD DUP2 DUP7 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x41DD JUMPI PUSH1 0x1F NOT DUP7 DUP5 SUB ADD DUP10 MSTORE DUP2 MLOAD PUSH1 0xA0 DUP2 MLOAD DUP6 MSTORE DUP6 DUP3 ADD MLOAD PUSH2 0x522A DUP8 DUP8 ADD DUP3 PUSH2 0x51D4 JUMP JUMPDEST POP PUSH1 0x40 DUP3 DUP2 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH1 0x80 SWAP2 DUP3 ADD MLOAD SWAP2 DUP6 ADD DUP2 SWAP1 MSTORE PUSH2 0x5257 DUP2 DUP7 ADD DUP4 PUSH2 0x51A4 JUMP JUMPDEST SWAP11 DUP7 ADD SWAP11 SWAP5 POP POP POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x5201 JUMP JUMPDEST DUP6 DUP2 MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x140 DUP6 MLOAD PUSH1 0xA0 DUP1 DUP6 ADD MSTORE PUSH2 0x52A5 DUP3 DUP6 ADD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x160 PUSH2 0x52C1 DUP2 DUP8 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD SWAP2 POP DUP1 PUSH2 0x180 DUP8 ADD MSTORE POP PUSH2 0x52DE PUSH2 0x2A0 DUP7 ADD DUP3 PUSH2 0x50B3 JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x13F NOT DUP7 DUP4 SUB ADD PUSH2 0x1A0 DUP8 ADD MSTORE PUSH2 0x52FD DUP3 DUP3 PUSH2 0x511D JUMP JUMPDEST SWAP2 POP POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x5313 PUSH2 0x1C0 DUP8 ADD DUP3 PUSH2 0x5194 JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x1E0 DUP7 ADD MSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x200 DUP7 ADD MSTORE PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x220 DUP7 ADD MSTORE PUSH2 0x100 DUP1 DUP4 ADD MLOAD PUSH2 0x240 DUP8 ADD MSTORE PUSH2 0x120 DUP1 DUP5 ADD MLOAD PUSH2 0x260 DUP9 ADD MSTORE DUP5 DUP5 ADD MLOAD PUSH2 0x280 DUP9 ADD MSTORE PUSH1 0x20 DUP11 ADD MLOAD SWAP5 POP PUSH2 0x5375 PUSH1 0xC0 DUP9 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND PUSH1 0xE0 DUP9 ADD MSTORE PUSH1 0x60 DUP11 ADD MLOAD DUP8 DUP5 SUB PUSH1 0x9F NOT SWAP1 DUP2 ADD DUP5 DUP11 ADD MSTORE SWAP1 SWAP6 POP SWAP4 POP PUSH2 0x53A9 DUP4 DUP7 PUSH2 0x3F97 JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP11 ADD MLOAD SWAP3 POP DUP4 DUP8 DUP7 SUB ADD DUP2 DUP9 ADD MSTORE POP POP PUSH2 0x53C7 DUP4 DUP3 PUSH2 0x3F97 JUMP JUMPDEST SWAP3 POP POP POP DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x53DD DUP2 DUP7 PUSH2 0x51A4 JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x32E0 DUP2 DUP6 PUSH2 0x51E4 JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x35A DUP3 DUP5 PUSH2 0x51D4 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x5A5 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3F97 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD3 GAS 0xE0 0xE3 DUP9 SLT SWAP2 0xD6 0xAB 0x21 0xB7 0xCF PUSH13 0xC4E94D03BC3BB9282E55F663FD EXTCODEHASH SWAP1 EXTCODEHASH AND 0xE3 DUP1 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "1157:26808:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27768:195;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26810:215;;;;;;;;;;-1:-1:-1;26810:215:0;;;;;:::i;:::-;;:::i;:::-;;;1389:25:45;;;1377:2;1362:18;26810:215:0;1243:177:45;26270:354:0;;;;;;;;;;-1:-1:-1;26270:354:0;;;;;:::i;:::-;26390:16;17252:23:35;;;:12;:23;;;;;;;;;17219:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17219:56:35;;;;;;;;;;;-1:-1:-1;;;17219:56:35;;;;;;;;;;;;;;;;;26270:354:0;;;;;1854:14:45;;1847:22;1829:41;;1913:14;;1906:22;1901:2;1886:18;;1879:50;1945:18;;;1938:34;2003:2;1988:18;;1981:34;1816:3;1801:19;26270:354:0;1610:411:45;21821:494:0;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;24317:177::-;;;;;;;;;;;;;:::i;24678:705::-;;;;;;;;;;-1:-1:-1;24678:705:0;;;;;:::i;:::-;;:::i;23870:192::-;;;;;;;;;;-1:-1:-1;23870:192:0;;;;;:::i;:::-;;:::i;:::-;;;14890:14:45;;14883:22;14865:41;;14853:2;14838:18;23870:192:0;14725:187:45;18909:478:0;;;;;;:::i;:::-;;:::i;4982:458::-;;;;;;:::i;:::-;;:::i;7921:430::-;;;;;;:::i;:::-;;:::i;11346:875::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;27330:303::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;3349:275::-;;;;;;:::i;:::-;;:::i;16588:820::-;;;;;;:::i;:::-;;:::i;22834:196::-;;;;;;;;;;-1:-1:-1;22834:196:0;;;;;:::i;:::-;;:::i;27768:195::-;27848:26;27949:7;:5;:7::i;:::-;27934:22;;27768:195;:::o;26810:215::-;-1:-1:-1;;;;;1796:16:32;;26909:13:0;1796:16:32;;;:7;:16;;;;;;27000:18:0;26992:26;26810:215;-1:-1:-1;;26810:215:0:o;21821:494::-;22038:29;22177:131;22215:14;22177:131;22247:17;;22177:131;:::i;:::-;22282:12;;22177:20;:131::i;:::-;22158:150;21821:494;-1:-1:-1;;;;;;21821:494:0:o;24317:177::-;24370:16;24470:17;:15;:17::i;24678:705::-;24952:389;;;;;;;;;24796:17;;24922:454;;24952:389;24985:13;;;;:5;:13;:::i;:::-;-1:-1:-1;;;;;24952:389:0;;;;;25016:5;:10;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24952:389:0;;;;;25044:11;;;;:5;:11;:::i;:::-;24952:389;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;24952:389:0;;;-1:-1:-1;;24952:389:0;;25073:19;;;;:5;:19;:::i;:::-;24952:389;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;24952:389:0;;;-1:-1:-1;;24952:389:0;;25110:15;;;;;;;;:::i;:::-;24952:389;;;;;;;;:::i;:::-;;;;;25143:5;:15;;;24952:389;;;;25176:5;:13;;;24952:389;;;;25207:5;:14;;;24952:389;;;;25239:5;:10;;;24952:389;;;;25267:5;:16;;;24952:389;;;;25301:5;:19;;;;;;;;:::i;:::-;24952:389;;;-1:-1:-1;25355:11:0;;;;24922:16;:454::i;23870:192::-;23964:14;24038:17;24048:6;;24038:9;:17::i;:::-;24026:29;23870:192;-1:-1:-1;;;23870:192:0:o;18909:478::-;19049:29;19188:192;19226:32;19251:6;;19226:24;:32::i;:::-;19276:25;;;19299:1;19276:25;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19276:25:0;;;;;;;;;;;;;;;;;19354:12;;19188:20;:192::i;:::-;19169:211;;18909:478;;;;;;;:::o;4982:458::-;5122:14;5240:193;5286:30;5310:5;5286:23;:30::i;:::-;5330:25;;;5353:1;5330:25;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5330:25:0;;;;;;;;;;;;;;;;;5404:19;5240:32;:193::i;7921:430::-;8130:14;8211:133;;8257:13;8211:133;:::i;:::-;;8284:17;;8211:133;:::i;:::-;8315:19;8211:32;:133::i;11346:875::-;11685:29;11716;11861:353;11910:32;11935:6;;11910:24;:32::i;:::-;11991:25;;;12014:1;11991:25;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11991:25:0;;;;;;;;;;;;;;;;;12069:17;;12104:25;;12147:19;12184:16;11861:31;:353::i;:::-;11842:372;;;;11346:875;;;;;;;;;;;:::o;27330:303::-;27430:21;27465:23;27502:25;27612:14;:12;:14::i;:::-;27605:21;;;;;;27330:303;;;:::o;3349:275::-;3485:14;3576:41;3606:10;3576:29;:41::i;16588:820::-;17004:29;;17140:261;17189:14;17140:261;17221:17;;17140:261;:::i;:::-;17256:17;;17291:25;;17334:19;17371:16;17140:31;:261::i;:::-;17121:280;;;;16588:820;;;;;;;;;;;;:::o;22834:196::-;22936:14;23008:15;23016:6;;23008:7;:15::i;3141:458:23:-;3189:13;3291:7;3288:1;3281:18;3507:14;3492:13;3485:37;3545:10;3542:1;3535:21;32960:661:33;33159:29;33277:204;33325:14;33353:17;33384:4;33450:14;:21;33277:34;:204::i;:::-;33562:52;33585:14;33601:12;;33562:22;:52::i;886:494:32:-;931:16;1025:21;:19;:21::i;:::-;-1:-1:-1;1247:10:32;1239:19;;;;:7;:19;;;;;;;;;1237:21;;;;;;;;;1335:38;;1389:25:45;;;1237:21:32;;1247:10;1335:38;;1362:18:45;1335:38:32;;;;;;;886:494;:::o;1366:7239:30:-;1654:47;;;;2460:21;2454:28;;2573:30;;;2567:37;2669:18;;1492:17;;1654:47;1492:17;;2230:20;;2791:7;2774:25;;;;1492:17;2889:889;2914:11;2911:1;2908:18;2889:889;;;3127:18;;-1:-1:-1;;3123:32:30;3251:10;;3340:21;;;3485;3470:37;;3451:57;;3572:18;;-1:-1:-1;3740:24:30;;;;3684:25;;;;2957:1;2950:9;2889:889;;;2893:14;3963:7;3950:11;3946:25;3906:21;3900:28;3873:112;3860:125;;;;;4084:25;4211:28;4200:39;;4449:21;4443:28;4788:7;4689:41;4648:15;4619:133;4592:178;4571:238;4935:1;4920:953;4945:27;4942:1;4939:34;4920:953;;;5182:26;;-1:-1:-1;;5178:40:30;5322:10;;5411:21;;;5556:29;5541:45;;5522:65;;5651:18;;-1:-1:-1;5835:24:30;;;;5771:33;;;;5004:1;4997:9;4920:953;;;-1:-1:-1;;6017:21:30;6011:28;;6090:7;6057:41;;5984:128;;-1:-1:-1;;6450:29:30;;6588:18;;6223:15;6699:29;;6824:101;;;7030:19;;7133:31;;;7330:41;7276:109;;7506:27;;7625:47;;;7774:28;7753:50;;;7882:23;;;8034:17;8011:41;;8145:34;;;;8271;;;;8400:50;;;;-1:-1:-1;;8544:45:30;;-1:-1:-1;8011:41:30;1366:7239;-1:-1:-1;1366:7239:30:o;13470:2547:35:-;13548:14;13644:21;:19;:21::i;:::-;13726:17;;13976:6;13726:17;14044:1850;14068:11;14064:1;:15;14044:1850;;;14140:20;14163:6;;14170:1;14163:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;14140:32;-1:-1:-1;14241:40:35;14284:16;14140:32;;14284:16;:::i;:::-;14241:59;-1:-1:-1;14387:23:35;;;;14241:59;14387:23;:::i;:::-;14377:33;-1:-1:-1;14521:102:35;;14590:15;14521:102;:::i;:::-;:47;:102::i;:::-;14717:30;14750:23;;;:12;:23;;;;;;;;14717:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14717:56:35;;;;;;;;;;;;-1:-1:-1;;;14717:56:35;;;;;;;;14509:114;;-1:-1:-1;14868:254:35;;14509:114;;14717:56;;;14868:18;:254::i;:::-;-1:-1:-1;15212:23:35;;15207:570;;15313:53;15330:7;15339:9;15350:15;;;;:5;:15;:::i;:::-;15313:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15313:16:35;;-1:-1:-1;;;15313:53:35:i;:::-;15460:23;;;;:12;:23;;;;;;;;;:42;;-1:-1:-1;;15460:42:35;15498:4;15460:42;;;15716:20;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15608:150:35;15683:7;-1:-1:-1;;;;;15608:150:35;;15648:9;15608:150;;;;1389:25:45;;1377:2;1362:18;;1243:177;15608:150:35;;;;;;;;15207:570;15876:3;;;;;14083:1811;;;14044:1850;;;-1:-1:-1;16006:4:35;;13470:2547;-1:-1:-1;;;;;;13470:2547:35:o;18379:859:34:-;18485:37;18635:6;;-1:-1:-1;;;;;18746:32:34;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;18729:49;;18937:9;18932:210;18956:11;18952:1;:15;18932:210;;;19093:34;19117:6;;19124:1;19117:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;19093:23;:34::i;:::-;19073:14;19088:1;19073:17;;;;;;;;:::i;:::-;;;;;;;;;;:54;18969:3;;18932:210;;;;19210:21;18379:859;;;;:::o;17711:380::-;17813:34;;:::i;:::-;17956:128;;;;;;;;;;17983:16;:5;;:16;:::i;:::-;17956:128;;;:::i;:::-;;;;;18013:1;-1:-1:-1;;;;;17956:128:34;;;;;18028:1;-1:-1:-1;;;;;17956:128:34;;;;;18043:5;:15;;;;;;;;:::i;:::-;17956:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17956:128:34;;;-1:-1:-1;;17956:128:34;;;;;;;;;;;;;;;;;-1:-1:-1;17940:144:34;17711:380;-1:-1:-1;;17711:380:34:o;2946:2055::-;3146:4;3239:21;:19;:21::i;:::-;3339:33;3471:17;3502:21;3537:23;3573:165;3620:13;3651:17;3686:4;3708:16;3573:29;:165::i;:::-;3852:22;;;3872:1;3852:22;;;;;;;;;3457:281;;-1:-1:-1;3457:281:34;;-1:-1:-1;3457:281:34;-1:-1:-1;3812:37:34;;3852:22;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3812:62;;3983:13;3963:14;3978:1;3963:17;;;;;;;;:::i;:::-;;;;;;:33;;;;4086:58;4110:14;4126:17;4086:23;:58::i;:::-;4231:38;4272:14;4287:1;4272:17;;;;;;;;:::i;:::-;;;;;;;:28;;;4231:69;;4389:198;4433:15;4462:13;4489:15;4518;:26;;;4558:19;4389:30;:198::i;:::-;4669:230;4707:9;4730:15;:23;;;4767:15;:20;;;4801:10;4825:15;:21;;;4860:15;:29;;;4669:24;:230::i;:::-;4949:23;2287:1:24;1322:16:36;:31;1231:129;4949:23:34;-1:-1:-1;4990:4:34;;2946:2055;-1:-1:-1;;;;;;;;;2946:2055:34:o;5692:1149:33:-;6074:29;6105;6231:204;6279:14;6307:17;6338:5;6409:16;6231:34;:204::i;:::-;6557:170;6600:14;6557:170;6628:17;;6557:170;:::i;:::-;;6659:25;;6557:170;:::i;:::-;6698:19;6557:29;:170::i;:::-;6525:202;;;;-1:-1:-1;5692:1149:33;-1:-1:-1;;;;;;;;;5692:1149:33:o;11826:686:30:-;11910:21;11945:23;11982:25;12090:18;:16;:18::i;:::-;12321:26;;;2251:1:24;12321:26:30;;;;;;;;;12072:36;;-1:-1:-1;12225:19:30;;-1:-1:-1;12321:26:30;;;;;;;;-1:-1:-1;;;;;12467:7:30;12454:21;;12447:49;-1:-1:-1;12454:21:30;11826:686;;-1:-1:-1;11826:686:30;:::o;2882:9033:22:-;2995:4;3674:1;3498:31;3485:45;3623:53;;;;3532:1;3481:53;3813:1;3803:12;;4242:11;4235:19;4161:111;;;4450:93;;4502:26;;-1:-1:-1;;;4502:26:22;;4518:9;4502:26;;;1389:25:45;1362:18;;4502:26:22;;;;;;;;4450:93;3835:718;4643:33;4686:25;4721:24;4988:1;4981:5;4978:12;5262:9;5225:35;5221:51;5164:35;5139:151;5109:195;5080:224;;5571:1;5564:5;5561:12;5540:1;5533:5;5530:12;5526:1;5519:5;5515:13;5511:32;5490:97;5470:117;;5975:1;5957:16;5953:24;5896:35;5871:124;5850:1;5819:28;5812:36;5808:44;5801:5;5797:56;5776:233;5757:252;;;6106:233;6156:10;6180:9;6203:16;6233:28;6275:25;6314:15;6106:36;:233::i;:::-;6412:23;6438:18;;;;;;;;:::i;:::-;6412:44;-1:-1:-1;6790:31:22;6837:1;6827:12;;6841:7;6823:26;6786:64;6756:108;6534:18;6935:28;:47;;;;;;;;:::i;:::-;;6931:4956;;6998:283;7048:15;7081:21;;;;;;;;:::i;:::-;7120:7;7145:10;7173;:26;;;7217:10;:22;;;7257:10;6998:32;:283::i;:::-;7377:159;7418:30;;;;7466:7;7491:31;;;;7418:10;7491:31;:::i;:::-;7377:23;:159::i;:::-;6931:4956;;;7964:30;;;13284:4:24;7964:30:22;;;;;;;;;7937:24;;7964:30;;;;;;;;;;-1:-1:-1;;7937:57:22;-1:-1:-1;8022:35:22;8013:5;:44;;;;;;;;:::i;:::-;;8009:3745;;8158:294;8195:21;;;;;;;;:::i;:::-;8238:7;8267:10;8299;:26;;;8347:10;:22;;;8391:10;8423:11;8158:15;:294::i;:::-;8543:374;8590:10;8622:7;8651:29;;;;:10;:29;:::i;:::-;8702:10;:30;;;8754:10;:31;;;;;;;;:::i;:::-;8807:5;8888:11;8543:25;:374::i;:::-;8009:3745;;;8951:36;8942:5;:45;;;;;;;;:::i;:::-;;8938:2816;;9088:295;9126:21;;;;;;;;:::i;:::-;9169:7;9198:10;9230;:26;;;9278:10;:22;;;9322:10;9354:11;9088:16;:295::i;8938:2816::-;9882:35;9873:5;:44;;;;;;;;:::i;:::-;;9869:1885;;10018:318;10055:29;;;;:10;:29;:::i;:::-;10106:10;10138:7;10167:10;:34;;;10223:10;:30;;;10275:10;10307:11;10018:15;:318::i;:::-;10427:358;10474:7;10503:10;10535;:21;;;;;;;;;;:::i;:::-;10578:10;:22;;;10622:10;:31;;;;;;;;:::i;:::-;10675:4;10756:11;10427:25;:358::i;9869:1885::-;10971:319;11009:29;;;;:10;:29;:::i;:::-;11060:10;11092:7;11121:10;:34;;;11177:10;:30;;;11229:10;11261:11;10971:16;:319::i;:::-;11381:358;11428:7;11457:10;11489;:21;;;;;;;;;;:::i;11381:358::-;11848:28;11864:11;11848:15;:28::i;:::-;7553:4334;-1:-1:-1;11904:4:22;;2882:9033;-1:-1:-1;;;;;;;;;2882:9033:22:o;10437:2201:35:-;10523:14;10619:21;:19;:21::i;:::-;10651:15;;10896:6;10651:15;10964:1551;10988:11;10984:1;:15;10964:1551;;;11060:30;11093:6;;11100:1;11093:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;11060:42;-1:-1:-1;11131:13:35;;;;11060:42;11131:13;:::i;:::-;11121:23;-1:-1:-1;11169:10:35;;;;;;;;:::i;:::-;11162:17;-1:-1:-1;11275:10:35;-1:-1:-1;;;;;11275:21:35;;;;;;:43;;-1:-1:-1;11300:10:35;-1:-1:-1;;;;;11300:18:35;;;;11275:43;11271:115;;;11349:18;;-1:-1:-1;;;11349:18:35;;;;;;;;;;;11271:115;11483:17;11503:562;11541:473;;;;;;;;11582:7;-1:-1:-1;;;;;11541:473:35;;;;;11615:4;-1:-1:-1;;;;;11541:473:35;;;;;11645:5;:11;;;;;;;;:::i;:::-;11541:473;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;11541:473:35;;;-1:-1:-1;;11541:473:35;;11682:19;;;;:5;:19;:::i;:::-;11541:473;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;11503:562;12193:5;12155:23;;;:12;:23;;;;;;;:43;;-1:-1:-1;;12216:42:35;12155:43;12216:42;;;12361:40;11483:582;;-1:-1:-1;;;;;;12361:40:35;;;;;;;;;;;;11483:582;1389:25:45;;1377:2;1362:18;;1243:177;12361:40:35;;;;;;;;-1:-1:-1;;12497:3:35;;10964:1551;;8147:9851:33;8457:21;:19;:21::i;:::-;8574;;8552:19;8574:21;-1:-1:-1;;;;;8701:26:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8701:26:33;;8670:57;;8861:1;8848:11;8841:22;9031:9;9026:7445;9050:11;9046:1;:15;9026:7445;;;9133:34;9170:14;9185:1;9170:17;;;;;;;;:::i;:::-;;;;;;;9133:54;;9289:16;9309:1;9289:21;9285:455;;9441:1;9415:23;;;;:27;9594:1;9587:9;;9567:30;;9713:8;;9285:455;9859:17;9898;9937:19;9977:211;10032:13;10071:17;10114:15;10155:11;9977:29;:211::i;:::-;9837:351;;;;;;10328:1;10325;10321:9;10308:11;10301:30;10452:9;10465:1;10452:14;10448:272;;-1:-1:-1;;10597:1:33;10571:23;;;;:27;;;;-1:-1:-1;10693:8:33;;10448:272;10819:9;10802:11;10814:1;10802:14;;;;;;;;:::i;:::-;;;;;;;;;;:26;11033:24;;:34;;;;11185:32;;;;11634:30;;;;;-1:-1:-1;;10908:18:33;;;;11033:34;;11185:44;;;;11347:15;:27;;;;11494:18;;;;11013:17;11745:1615;11769:5;:12;11765:1;:16;11745:1615;;;11858:26;11887:5;11893:1;11887:8;;;;;;;;:::i;:::-;;;;;;;11858:37;;11993:17;12013:151;12051:9;12086:11;12123:9;:19;;;12013:12;:151::i;:::-;11993:171;;12295:9;:19;;;12270:9;:21;;;:44;12266:539;;12420:21;;;:33;;;12266:539;;;12613:169;12655:9;12694:11;12735:9;:21;;;12613:12;:169::i;:::-;12589:21;;;:193;12266:539;12907:19;;;:31;;;13106:21;;;;13060:281;;12929:9;13198:7;13231:9;13266:8;13300:5;13060:20;:281::i;:::-;13036:21;;;;:305;;;;-1:-1:-1;11783:3:33;;11745:1615;;;-1:-1:-1;13523:24:33;;:38;;;13458:40;13668:2789;13692:13;:20;13688:1;:24;13668:2789;;;13797:42;13868:13;13882:1;13868:16;;;;;;;;:::i;:::-;;;;;;;13797:109;;14001:17;14021:159;14059:9;14094:11;14131:17;:27;;;14021:12;:159::i;:::-;14001:179;;14368:17;:27;;;14311:17;:29;;;:84;14282:646;;14522:29;;;:41;;;14282:646;;;14728:177;14770:9;14809:11;14850:17;:29;;;14728:12;:177::i;:::-;14696:29;;;:209;14282:646;15030:27;;;:39;;;15281:29;;;;15231:322;;15060:9;15397:7;15434:9;15473:8;15511:4;15231:20;:322::i;:::-;15173:29;;;:402;-1:-1:-1;16293:34:33;16197:164;;16158:233;16052:29;15964:164;;;15928:489;13714:3;;13668:2789;;;;9068:7403;;;;;;;;;;9026:7445;9063:3;;9026:7445;;;;16556:58;16580:14;16596:17;16556:23;:58::i;:::-;16928:23;;16953:8;16924:38;16705:17;17204:778;17228:11;17224:1;:15;17204:778;;;17363:1;17355:10;;17337:11;17349:1;17337:14;;;;;;;;:::i;:::-;;;;;;;:28;17333:83;17389:8;17333:83;17500:38;17563:14;17578:1;17563:17;;;;;;;;:::i;:::-;;;;;;;:28;;;17500:109;;17677:290;17723:11;17735:1;17723:14;;;;;;;;:::i;:::-;;;;;;;17759:15;:23;;;17804:15;:20;;;17846:9;17877:15;:21;;;17920:15;:29;;;17677:24;:290::i;:::-;17246:736;17204:778;17241:3;;17204:778;;;;8370:9628;;;8147:9851;;;;:::o;34535:2261::-;34683:29;34822:12;;-1:-1:-1;;;;;34945:34:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;34932:47;;35145:31;35246:9;35241:943;35265:17;35261:1;:21;35241:943;;;35365:32;35400:12;;35413:1;35400:15;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;35365:50;-1:-1:-1;35510:26:33;35539:177;35578:14;35614:27;35365:50;;35614:27;:::i;:::-;35663:35;;;;:11;:35;:::i;:::-;35539:17;:177::i;:::-;35510:206;;35844:9;:17;;;-1:-1:-1;;;;;35816:45:33;:9;:14;;;:24;;;-1:-1:-1;;;;;35816:45:33;;35812:358;;35972:1;35945:28;;;;35812:358;;;36142:9;36100:10;36115:23;36111:1;:27;36100:39;;;;;;;;:::i;:::-;;;;;;:51;;;;35812:358;-1:-1:-1;;35284:3:33;;35241:943;;;-1:-1:-1;36268:28:33;;36264:320;;36506:23;36493:10;36487:17;36483:47;36447:10;36415:137;36264:320;35069:1525;36656:63;36692:14;36708:10;36656:35;:63::i;:::-;;36770:19;34535:2261;;;;;:::o;1510:215:36:-;2287:1:24;1635:16:36;;:32;1631:88;;1690:18;;-1:-1:-1;;;1690:18:36;;;;;;;;;;;1631:88;1510:215::o;1567:650:21:-;1701:7;1801:187;1881:15;:29;;;:36;1931:15;:47;;;1801:66;:187::i;:::-;2172:23;;-1:-1:-1;;;;;1796:16:32;2172:23:21;1796:16:32;;;:7;:16;;;;;;2095:115:21;;2129:15;;2095:16;:115::i;3992:1454:40:-;4176:10;4259:11;:23;;;4255:301;;;4375:15;4371:88;;;4417:27;;-1:-1:-1;;;4417:27:40;;;;;1389:25:45;;;1362:18;;4417:27:40;1243:177:45;4371:88:40;-1:-1:-1;4540:5:40;4533:12;;4255:301;4620:21;;;;-1:-1:-1;;;;;4620:26:40;;4616:748;;4746:15;4742:612;;;4868:31;;-1:-1:-1;;;4868:31:40;;;;;1389:25:45;;;1362:18;;4868:31:40;1243:177:45;4742:612:40;5027:11;:23;;;-1:-1:-1;;;;;5002:48:40;:11;:21;;;-1:-1:-1;;;;;5002:48:40;;4998:356;;5151:15;5147:98;;;5197:29;;-1:-1:-1;;;5197:29:40;;;;;1389:25:45;;;1362:18;;5197:29:40;1243:177:45;4998:356:40;-1:-1:-1;5435:4:40;3992:1454;;;;;;:::o;2639:569::-;2863:10;-1:-1:-1;;;;;2852:21:40;;;2848:58;;2639:569;;;:::o;2848:58::-;2996:14;3013:50;3033:18;:16;:18::i;:::-;-1:-1:-1;;;12925:13:30;13112:25;;;13237:29;13230:54;;;;13589:23;13582:42;;;13712:25;13699:39;;13817:34;;;13699:39;12805:1062;3013:50:40;2996:67;;3152:49;3174:7;3183:6;3191:9;3152:21;:49::i;:::-;2769:439;2639:569;;;:::o;916:217:36:-;1030:21;:19;:21::i;:::-;2318:1:24;1099:16:36;:27;916:217::o;4350:5564:35:-;4612:17;4643:20;4677:22;4774:38;4815:13;:24;;;4774:65;;4949:142;4978:15;:25;;;5021:15;:23;;;5062:15;4949:11;:142::i;:::-;4931:302;;-1:-1:-1;5213:1:35;;-1:-1:-1;5213:1:35;;-1:-1:-1;5213:1:35;;-1:-1:-1;5197:25:35;;4931:302;5349:23;;;;5413:25;;;;-1:-1:-1;;;;;5341:32:35;;;;5405:34;5527:23;;;;:41;;-1:-1:-1;5554:14:35;;5527:41;5523:92;;;5591:13;;-1:-1:-1;;;5591:13:35;;;;;;;;;;;5523:92;5735:11;5723:9;:23;:93;;;;-1:-1:-1;5790:25:35;;;;18339:1;18324:17;18317:25;5762:54;5706:262;;;5925:32;;-1:-1:-1;;;5925:32:35;;;;;;;;;;;5706:262;6071:86;6132:15;6071:47;:86::i;:::-;6059:98;;6249:307;6301:13;6328:17;6359:16;6389:9;6412:15;:24;;;6450:15;:25;;;6489:15;:23;;;6526:15;:20;;;6249:38;:307::i;:::-;6634:30;6667:23;;;:12;:23;;;;;;;;6634:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6634:56:35;;;;;;;;;;;;-1:-1:-1;;;6634:56:35;;;;;;;;;6777:189;;6680:9;;6634:56;;6937:15;6777:18;:189::i;:::-;6759:348;;-1:-1:-1;7091:1:35;;-1:-1:-1;7091:1:35;;-1:-1:-1;7072:24:35;;-1:-1:-1;;;7072:24:35;6759:348;7203:23;;7198:194;;7242:139;7276:15;:23;;;7317:9;7344:13;:23;;;7242:16;:139::i;:::-;7509:21;;;;7568:23;;;;-1:-1:-1;;;;;7483:47:35;;;;7540:51;7687:22;;7683:2092;;7810:11;7825:1;7810:16;7806:668;;7937:17;7925:29;;7986:17;7972:31;;7806:668;;;8139:11;8118:17;:32;8114:360;;8250:30;8269:11;8250:30;;:::i;:::-;;-1:-1:-1;8379:30:35;8392:17;8379:30;;:::i;:::-;;-1:-1:-1;8427:32:35;8442:17;8427:32;;:::i;:::-;;;8114:360;8603:11;8573:27;8591:9;8573:15;:27;:::i;:::-;:41;8569:329;;;8850:15;8836:11;:29;8824:41;;8569:329;9098:23;;;;:12;:23;;;;;:42;;-1:-1:-1;;;;;9347:58:35;;;-1:-1:-1;;;9347:58:35;-1:-1:-1;;;;;9284:27:35;;;9219:110;;;;;;-1:-1:-1;;;;;;9219:110:35;;;;;;;9136:4;9219:110;9347:58;;;;7683:2092;;;9525:23;;;;:12;:23;;;;;:42;;-1:-1:-1;;;;;9706:58:35;;;-1:-1:-1;;;9706:58:35;-1:-1:-1;;;;;9638:54:35;;;;;-1:-1:-1;;;;;;9638:54:35;;;;;;;9563:4;9638:54;9706:58;;;;7683:2092;-1:-1:-1;9884:9:35;;-1:-1:-1;9895:11:35;;-1:-1:-1;;;;4350:5564:35;;;;;;;;;:::o;1535:7144:27:-;1913:24;;2049:21;;1880:30;2137:4711;2161:22;2157:1;:26;2137:4711;;;2259:40;2324:17;2342:1;2324:20;;;;;;;;:::i;:::-;;;;;;;2259:103;;2460:18;2481:16;:27;;;2460:48;;2605:19;2591:10;:33;2587:120;;2655:33;;-1:-1:-1;;;2655:33:27;;;;;;;;;;;2587:120;2801:14;2816:10;2801:26;;;;;;;;:::i;:::-;;;;;;;:36;;;-1:-1:-1;;;;;2801:41:27;2841:1;2801:41;2797:96;;2866:8;;;;2797:96;2969:38;3032:14;3047:10;3032:26;;;;;;;;:::i;:::-;;;;;;;;;;;:37;3210:22;;;;3032:37;;-1:-1:-1;3032:37:27;;;3472:16;:21;;;:35;;;;;;;;:::i;:::-;;3468:2718;;3601:21;;;;3735:12;;3717:30;;3713:125;;3782:33;;-1:-1:-1;;;3782:33:27;;;;;;;;;;;3713:125;3933:26;3962:5;3968:14;3962:21;;;;;;;;:::i;:::-;;;;;;;;;;;4098:18;;4161:30;;;;4098:18;;-1:-1:-1;4161:30:27;-1:-1:-1;3962:21:27;-1:-1:-1;4407:1:27;4394:15;;4391:1;4387:23;3962:21;4387:23;4453:32;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;4621:52:27;;;;4588:30;;;;:85;-1:-1:-1;3468:2718:27;;;4868:29;;;;5032:20;;5014:38;;5010:141;;5087:41;;-1:-1:-1;;;5087:41:27;;;;;;;;;;;5010:141;5252:42;5323:13;5337:14;5323:29;;;;;;;;:::i;:::-;;;;;;;;;;;5489:26;;5586:38;;;;5489:26;;-1:-1:-1;5586:38:27;-1:-1:-1;5323:29:27;-1:-1:-1;5862:1:27;5849:15;;5846:1;5842:23;5323:29;5842:23;5908:40;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;6118:27:27;;;;6051:38;;;;:116;-1:-1:-1;3468:2718:27;6285:29;6305:8;9438:1;-1:-1:-1;9425:15:27;9178:278;6285:29;6280:111;;6345:27;;-1:-1:-1;;;6345:27:27;;;;;;;;;;;6280:111;6487:34;;6483:351;;6626:189;6664:16;:27;;;6717:20;6763:16;:30;;;6626:12;:189::i;:::-;2190:4658;;;;;;2137:4711;2185:3;;2137:4711;;;;6916:9;6911:1752;6935:19;6931:1;:23;6911:1752;;;7027:34;7064:14;7079:1;7064:17;;;;;;;;:::i;:::-;;;;;;;7027:54;;7176:13;:23;;;-1:-1:-1;;;;;7176:28:27;7203:1;7176:28;7172:83;;7228:8;;;7172:83;7331:38;7394:14;7409:1;7394:17;;;;;;;;:::i;:::-;;;;;;;:28;;;7331:109;;7536:18;7557:15;:29;;;:36;7536:57;;7687:9;7682:414;7706:10;7702:1;:14;7682:414;;;7850:116;7899:15;:29;;;7929:1;7899:32;;;;;;;;:::i;:::-;;;;;;;:41;;;9438:1;-1:-1:-1;9425:15:27;9178:278;7850:116;7821:257;;;8022:33;;-1:-1:-1;;;;;;8022:33:27;;;;;;;;;;;7821:257;7718:3;;7682:414;;;-1:-1:-1;;8196:21:27;;;;:28;8310:9;8305:344;8329:10;8325:1;:14;8305:344;;;8473:54;8493:15;:21;;;8515:1;8493:24;;;;;;;;:::i;8473:54::-;8444:187;;;8583:25;;-1:-1:-1;;;8583:25:27;;;;;;;;;;;8444:187;8341:3;;8305:344;;;;6961:1702;;;6911:1752;6956:3;;6911:1752;;;;1777:6896;;1535:7144;;:::o;6233:9703:34:-;6542:16;6587:15;:25;;;6561:15;:23;;;:51;;;;:::i;:::-;6542:70;;6622:15;6658;:25;;;6640:15;:43;;;;:::i;:::-;6622:61;-1:-1:-1;6693:17:34;6713:18;6622:61;6713:8;:18;:::i;:::-;7228:30;;;13284:4:24;7228:30:34;;;;;;;;;6693:38;;-1:-1:-1;6831:9:34;;6806:22;;7228:30;;;;;;;;;;-1:-1:-1;;7201:57:34;-1:-1:-1;8948:9:34;9308;9303:2097;9327:15;:21;;;:28;9323:1;:32;9303:2097;;;9421:26;9450:15;:21;;;9472:1;9450:24;;;;;;;;:::i;:::-;;;;;;;9421:53;;9573:14;9590:297;9626:9;:21;;;9669:9;:19;;;9710:9;9741:11;9774:7;9803:9;9834:8;9864:5;9590:14;:297::i;:::-;10115:26;10100:42;;10093:58;;;10355:8;10299:29;10284:45;;10252:133;9573:314;-1:-1:-1;;10505:18:34;;:37;;;;;;;;:::i;:::-;;10501:461;;10660:14;10651:6;:23;10647:112;;;10709:27;;-1:-1:-1;;;10709:27:34;;;;;;;;;;;10647:112;10915:6;10897:24;;;;10501:461;11049:184;11089:9;11120:15;:23;;;11165:17;11204:11;11049:18;:184;;:::i;:::-;-1:-1:-1;;11364:3:34;;9303:2097;;;-1:-1:-1;12716:9:34;;-1:-1:-1;13094:9:34;13089:2509;13113:15;:29;;;:36;13109:1;:40;13089:2509;;;13223:42;13290:15;:29;;;13320:1;13290:32;;;;;;;;:::i;:::-;;;;;;;13223:117;;13440:14;13457:312;13493:17;:29;;;13544:17;:27;;;13593:9;13624:11;13657:7;13686:9;13717:8;13747:4;13457:14;:312::i;:::-;14034:26;14011:50;;13979:136;;;14446:34;14358:152;;14323:213;14267:29;14244:53;;14212:346;13440:329;-1:-1:-1;;14678:26:34;;:45;;;;;;;;:::i;:::-;;14674:469;;14841:14;14832:6;:23;14828:112;;;14890:27;;-1:-1:-1;;;14890:27:34;;;;;;;;;;;14828:112;15096:6;15078:24;;;;14674:469;15242:189;15290:17;15329:10;15361:19;15402:11;15242:26;:189;;:::i;:::-;-1:-1:-1;;15562:3:34;;13089:2509;;;;12213:3395;15698:28;15714:11;15698:15;:28::i;:::-;15795:19;;15791:139;;15870:49;15891:10;15904:14;15870:12;:49::i;:::-;6464:9472;;;;;6233:9703;;;;;:::o;16580:855::-;16893:29;16969:5;16955:19;;17074:35;17159:13;17142:30;;17340:4;-1:-1:-1;;;;;17268:160:34;17319:7;-1:-1:-1;;;;;17268:160:34;;17296:9;17358;17381:10;17405:13;17268:160;;;;;;;;;:::i;:::-;;;;;;;;16814:621;;16580:855;;;;;;:::o;21356:4149:33:-;21833:24;;22004:32;;21645:29;;;;22178:55;22004:32;21833:24;22178:55;:::i;:::-;-1:-1:-1;;;;;22149:94:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;22136:107;;22409:31;22516:9;22511:1022;22535:22;22531:1;:26;22511:1022;;;22657:40;22722:17;22740:1;22722:20;;;;;;;;:::i;:::-;;;;;;;22657:103;;22858:26;22887:178;22928:14;22964:10;22996;23028:19;22887;:178::i;:::-;22858:207;;23193:9;:17;;;-1:-1:-1;;;;;23165:45:33;:9;:14;;;:24;;;-1:-1:-1;;;;;23165:45:33;;23161:358;;23321:1;23294:28;;;;23161:358;;;23491:9;23449:10;23464:23;23460:1;:27;23449:39;;;;;;;;:::i;:::-;;;;;;:51;;;;23161:358;-1:-1:-1;;22559:3:33;;22511:1022;;;;23612:9;23607:1121;23631:30;23627:1;:34;23607:1121;;;23765:40;23830:25;23856:1;23830:28;;;;;;;;:::i;:::-;;;;;;;23765:111;;23974:26;24003:186;24044:14;24080:18;24120:10;24152:19;24003;:186::i;:::-;23974:215;;24317:9;:17;;;-1:-1:-1;;;;;24289:45:33;:9;:14;;;:24;;;-1:-1:-1;;;;;24289:45:33;;24285:429;;24445:1;24418:28;;;;24285:429;;;24686:9;24573:10;24638:23;24613:22;24609:1;:26;:52;24573:110;;;;;;;;:::i;:::-;;;;;;:122;;;;24285:429;-1:-1:-1;;23663:3:33;;23607:1121;;;-1:-1:-1;24812:28:33;;24808:320;;25050:23;25037:10;25031:17;25027:47;24991:10;24959:137;24808:320;22333:2805;25198:10;:17;25219:1;25198:22;25194:88;;25243:28;;-1:-1:-1;;;25243:28:33;;;;;;;;;;;25194:88;25354:97;25403:14;25431:10;25354:35;:97::i;:::-;25336:115;;25462:36;;21356:4149;;;;;;;:::o;11278:208:30:-;11329:7;11399:9;11382:13;:26;:97;;11455:24;2761:187:23;;;2789:24;2761:187;;;44292:25:45;2831:10:23;44333:18:45;;;44326:34;;;;2859:13:23;44376:18:45;;;44369:34;2890:13:23;44419:18:45;;;44412:34;2929:4:23;44462:19:45;;;44455:61;2685:7:23;;44264:19:45;;2761:187:23;;;;;;;;;;;;2738:220;;;;;;2731:227;;2628:337;;11382:97:30;-1:-1:-1;11423:17:30;;11278:208::o;13773:24898:22:-;14159:21;:19;:21::i;:::-;14272:59;14284:10;:20;;;14306:10;:18;;;14326:4;14272:11;:59::i;:::-;;14616:40;:38;:40::i;:::-;14748:190;14828:31;;;;:10;:31;:::i;:::-;:42;;-1:-1:-1;14869:1:22;14828:42;:::i;:::-;14884:10;:44;;;14748:66;:190::i;:::-;15002:17;16134:16;16153:28;16134:47;;16653:8;16610:41;16603:59;16770:16;16707:41;16679:125;17260:10;17203:35;17143:38;17109:179;17652:8;17594:36;17530:42;17496:182;18023:29;17956:41;17921:153;17860:39;17832:260;18437:44;18403:96;18778:7;18751:25;18747:39;18679:46;18654:150;19247:1;19151:44;19109:112;19080:190;19034:24;19006:282;19531:7;19485:24;19460:96;19432:124;;19683:16;19657:24;19650:50;20030:9;19973:35;19931:19;19905:24;19901:50;19867:190;20867:39;21237:28;21174:41;21146:137;21388:25;21328:38;21300:131;21500:1;21455:43;21448:54;21694:50;21660:102;21631:131;;21788:1;21841:3364;21854:25;21851:1;21848:32;21841:3364;;;22319:1;22292:25;22288:33;22220:42;22191:152;22633:7;22583:24;22513:44;22475:187;22962:25;22912:24;22844:42;22806:203;23291:7;23243:22;23214:106;23188:132;;23669:29;23598:41;23559:165;23511:22;23479:267;24298:17;24248:24;24219:118;24191:146;;24507:28;24457:24;24425:132;24755:25;24721:7;24695:24;24691:38;24659:143;25157:8;25107:24;25029:26;24975:24;24942:139;24904:283;-1:-1:-1;21915:1:22;21908:9;21841:3364;;;25858:7;25854:1;25827:25;25823:33;25819:47;25754:39;25719:169;25676:21;25648:258;26388:44;26354:96;26325:125;;26502:1721;26515:25;26512:1;26509:32;26502:1721;;;26854:1;26827:25;26823:33;26755:42;26726:152;26694:184;;27316:17;27266:24;27237:118;27209:146;;27525:28;27475:24;27443:132;27773:25;27739:7;27713:24;27709:38;27677:143;28175:8;28125:24;28047:26;27993:24;27960:139;27922:283;26576:1;26569:9;26502:1721;;;26506:2;;;;16327:11910;28731:16;28750:20;28731:39;;29088:8;29053:33;29046:51;29217:15;29182:33;29175:58;29729:10;29680:27;29628:30;29594:163;30018:7;29968:28;29912:34;29878:165;30345:21;30286:33;30251:137;30228:1;30200:206;30727:7;30724:1;30714:21;30680:32;30673:63;31155:7;31059:44;31017:112;30988:196;30928:38;30903:299;31311:1;31285:24;31278:35;31437:15;31427:7;31401:24;31397:38;31390:63;31831:10;31782:27;31734:25;31708:24;31704:56;31670:189;-1:-1:-1;;32987:24:22;32974:38;-1:-1:-1;;;;;1796:16:32;;32907:15:22;1796:16:32;;;:7;:16;;;;;;33262:15:22;33383:29;33376:47;;;33121:34;;-1:-1:-1;33685:8:22;33639:24;33589:28;33555:156;33903:21;33897:28;33835:40;33807:136;34069:9;34037:30;34030:49;34354:9;34306:26;34254:30;34220:161;34515:5;34487:26;34480:41;34684:17;34633:29;34602:117;34589:130;;33301:1432;;;36153:7;36086:44;36073:58;36048:130;36005:25;35984:208;36303:9;36289:12;36282:31;36445:8;36411:31;36397:12;36393:50;36386:68;36682:32;36631;36617:12;36613:51;36547:181;36887:40;36828;36814:12;36810:59;36741:200;37360:17;37293:44;37280:58;37255:140;37214:23;37193:216;38067:21;38054:35;37956:24;37943:38;37845:23;37757:8;37667:12;37581:522;;;38172:1;38162:8;38155:19;38273:185;38322:9;38345:10;:19;;;38378:9;38401:10;:18;;;;;;;;;;:::i;:::-;38433:15;;;;;;;;:::i;:::-;38273:35;:185::i;:::-;38531:133;38579:9;38602:18;;;;;;;;:::i;:::-;38634:20;;;;:10;:20;:::i;:::-;38531:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38531:34:22;;-1:-1:-1;;;38531:133:22:i;:::-;14072:24599;13773:24898;;;;;;:::o;4505:3517:28:-;4819:24;;4815:3201;;4939:22;5176:21;5170:28;5152:46;;-1:-1:-1;;;5293:14:28;5286:49;5612:35;5526:42;5486:14;5457:133;5429:236;5942:38;5856:42;5816:14;5787:133;5759:239;6173:8;6114:36;6098:14;6094:57;6066:133;6367:5;6311:33;6295:14;6291:54;6263:127;6567:4;6512:32;6496:14;6492:53;6464:125;6726:2;6693:30;6677:14;6673:51;6666:63;6913:10;6852:38;6836:14;6832:59;6804:137;7120:6;7063:34;7047:14;7043:55;7015:129;7220:138;7262:10;7290:14;13164:5:24;7220:24:28;:138::i;:::-;4845:2524;4815:3201;;;7482:15;7470:8;:27;;;;;;;;:::i;:::-;;7466:540;;7595:6;7605:1;7595:11;7591:94;;7637:29;;-1:-1:-1;;;7637:29:28;;;;;;;;;;;7591:94;7772:51;7795:5;7802:4;7808:2;7812:10;7772:22;:51::i;:::-;7466:540;;;7931:60;7955:5;7962:4;7968:2;7972:10;7984:6;7931:23;:60::i;39190:2289:22:-;39450:9;39584:20;39425:22;39673:1131;39697:25;39693:1;:29;39673:1131;;;39790:48;39859:20;;39880:1;39859:23;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;40025:26:22;;40128:42;;;40124:115;;;40197:27;;-1:-1:-1;;;40197:27:22;;;;;;;;;;;40124:115;40312:116;40342:29;;;;;;;;:::i;:::-;40389:25;40312:12;:116::i;:::-;40600:43;;;;-1:-1:-1;40776:3:22;;39673:1131;;;;40887:14;40878:6;:23;40874:88;;;40924:27;;-1:-1:-1;;;40924:27:22;;;;;;;;;;;40874:88;41014:24;41027:2;41031:6;41014:12;:24::i;:::-;41144:6;41127:14;:23;41123:277;;;41317:58;41338:10;41368:6;41351:14;:23;41317:12;:58::i;:::-;41449:23;2287:1:24;1322:16:36;:31;1231:129;41449:23:22;39351:2128;;39190:2289;;;;:::o;11890:1080:28:-;12184:59;12219:11;12232:10;12184:34;:59::i;:::-;12305:10;12301:663;;12419:6;12429:1;12419:11;12415:86;;12457:29;;-1:-1:-1;;;12457:29:28;;;;;;;;;;;12415:86;12580:51;12603:5;12610:4;12616:2;12620:10;12580:22;:51::i;12301:663::-;12730:223;12755:10;12783:11;12820:1;12840:5;12863:4;12885:2;12905:10;12933:6;12730:7;:223::i;42147:2122:22:-;42828:7;42811:25;;42756:33;42731:123;42701:167;43002:20;42479:18;43091:938;43115:25;43111:1;:29;43091:938;;;43208:48;43277:20;;43298:1;43277:23;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;43365:26:22;;43481:85;;;;43516:35;43526:25;43516:35;;:::i;:::-;;;43481:85;43657:225;43689:10;43717:4;43739:29;;;;;;;;:::i;:::-;43786:25;43829:10;43857:11;43657:14;:225::i;:::-;-1:-1:-1;;44001:3:22;;43091:938;;;;44120:69;44135:10;44147:4;44153:2;44157:6;44165:10;44177:11;44120:14;:69::i;:::-;44239:23;2287:1:24;1322:16:36;:31;1231:129;13937:1015:28;14223:28;14244:6;14223:20;:28::i;:::-;14327:59;14362:11;14375:10;14327:34;:59::i;:::-;14448:10;14444:502;;14553:60;14577:5;14584:4;14590:2;14594:10;14606:6;14553:23;:60::i;14444:502::-;14712:223;14737:10;14765:11;14802:1;14822:5;14845:4;14867:2;14887:10;14915:6;14712:7;:223::i;16525:423::-;16650:11;:18;16672:2;16650:24;16646:61;;16525:423;:::o;16646:61::-;16783:29;16815:38;16841:11;21614:26;21597:44;21574:81;;21307:364;16815:38;16783:70;;16897:44;16906:21;16929:11;16897:8;:44::i;:::-;16585:363;16525:423;:::o;3534:1206:20:-;3664:16;3782:11;3769:9;:24;3765:67;;-1:-1:-1;3816:5:20;3809:12;;3765:67;3969:10;4208:11;4197:9;4190:5;4183:37;4176:45;4167:54;;4317:5;4312:61;;4345:17;;-1:-1:-1;;;4345:17:20;;;;;;;;;;;4312:61;4461:27;4491:17;4499:9;4491:5;:17;:::i;:::-;4687:37;;;;;3534:1206;-1:-1:-1;;;;;3534:1206:20:o;1290:1436::-;1505:7;1619:9;1604:11;:24;1600:1014;;1725:20;1849:7;1845:189;;;-1:-1:-1;;;1989:12:20;;1845:189;2154:27;2254:12;2231:19;2243:7;2231:9;:19;:::i;:::-;2203:23;2217:9;2203:11;:23;:::i;:::-;2202:49;;;;:::i;:::-;:64;;;;:::i;:::-;2447:34;;;;-1:-1:-1;2587:16:20;;-1:-1:-1;;2587:16:20;1600:1014;-1:-1:-1;2710:9:20;;1290:1436;-1:-1:-1;;;;;1290:1436:20:o;1730:3201:29:-;1955:26;;:::i;:::-;2088:27;;;:66;;-1:-1:-1;2119:35:29;;2088:66;2071:170;;;2186:44;;-1:-1:-1;;;2186:44:29;;;;;;;;;;;2071:170;2294:39;;:::i;:::-;2421:155;2479:14;2507:23;;2421:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2544:22;2421:44;:155::i;:::-;2697:27;;2800:126;;;;;;;;;;;;;;;;;;;2850:14;;2800:126;2878:15;;;;;;2657:37;;2800:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2907:9;2800:36;:126::i;:::-;3060:26;;3033:53;;;;;;;;:::i;:::-;:14;;:23;:53;;;;;;;;:::i;:::-;;;:116;;;;3126:17;:23;;;-1:-1:-1;;;;;3102:47:29;:9;:14;;;:20;;;-1:-1:-1;;;;;3102:47:29;;;3033:116;:189;;;;3194:17;:28;;;3165:9;:14;;;:25;;;:57;;3033:189;3016:303;;;3254:54;;-1:-1:-1;;;3254:54:29;;;;;;;;;;;3016:303;3429:9;:14;;;:21;;;3402:17;:24;;;:48;3398:1167;;;3546:43;3610:23;;3634:1;3610:26;;;;;;;:::i;:::-;;;;;;3546:104;;;;;;;;;;:::i;:::-;;;3933:9;:14;;;:21;;;3906:17;:24;;;:48;;;;:::i;:::-;3746:14;3761:15;:26;;;3746:42;;;;;;;;:::i;:::-;;;;;;;:70;;;:101;;;3848:15;:25;;;3746:128;;;;;;;;:::i;:::-;;;;;;;;;;;:157;;;;:208;;;;4072:14;;:21;;;4045:24;;;:48;-1:-1:-1;3398:1167:29;;;4196:43;4243:15;;4259:1;4243:18;;;;;;;:::i;:::-;;;;;;4196:66;;;;;;;;;;:::i;:::-;;;4530:17;:24;;;4506:9;:14;;;:21;;;:48;;;;:::i;:::-;4354:14;4369:15;:26;;;4354:42;;;;;;;;:::i;:::-;;;;;;;:70;;;:93;;;4448:15;:25;;;4354:120;;;;;;;;:::i;:::-;;;;;;;:149;;:200;;;;;4110:455;3398:1167;4674:24;;;;;4650:14;;:21;;;:48;4735:27;;;;;4708:14;;-1:-1:-1;;;;;4708:54:29;;;:24;;:54;-1:-1:-1;1730:3201:29;;;;;;;:::o;26290:4230:33:-;26588:21;;26445:29;;26588:21;-1:-1:-1;;;;;26697:23:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26697:23:33;;26679:41;;26912:9;26907:1427;26931:11;26927:1;:15;26907:1427;;;27018:34;27055:14;27070:1;27055:17;;;;;;;;:::i;:::-;;;;;;;27018:54;;27173:13;:23;;;-1:-1:-1;;;;;27173:28:33;27200:1;27173:28;27169:323;;27465:8;;;27169:323;27579:4;27558:15;27574:1;27558:18;;;;;;;;:::i;:::-;:25;;;:18;;;;;;;;;;;:25;27745:24;;:38;;;27680:40;27897:423;27921:13;:20;27917:1;:24;27897:423;;;28046:19;28068:13;28082:1;28068:16;;;;;;;;:::i;:::-;;;;;;;:28;;;28046:50;;28190:11;28205:1;28190:16;28186:116;;28241:38;;-1:-1:-1;;;28241:38:33;;;;;36229:25:45;;;36270:18;;;36263:34;;;36313:18;;;36306:34;;;36202:18;;28241:38:33;36027:319:45;28186:116:33;-1:-1:-1;27943:3:33;;27897:423;;;;26949:1385;;26907:1427;26944:3;;26907:1427;;;-1:-1:-1;28840:30:33;;;13284:4:24;28840:30:33;;;;;;;;;28443:9;;28418:22;;28840:30;;;;;;;;;;;-1:-1:-1;28840:30:33;28813:57;;28926:9;28921:1123;28945:10;:17;28941:1;:21;28921:1123;;;29052:26;29081:10;29092:1;29081:13;;;;;;;;:::i;:::-;;;;;;;;;;;29135:14;;29081:13;;-1:-1:-1;29108:24:33;29245:13;;:32;;;;;;;;:::i;:::-;;29241:434;;29392:14;29378:4;:11;;;:28;29374:109;;;29437:27;;-1:-1:-1;;;29437:27:33;;;;;;;;;;;29374:109;29631:4;:11;;;29613:29;;;;29241:434;29750:147;29777:4;29799:9;:17;;;29834:9;:20;;;29872:11;29750:9;:147::i;:::-;-1:-1:-1;;30016:3:33;;28921:1123;;;;30134:28;30150:11;30134:15;:28::i;:::-;30254:19;;30250:99;;30289:49;30310:10;30323:14;30289:12;:49::i;:::-;30398:23;2287:1:24;1322:16:36;:31;1231:129;30398:23:33;30489:24;;;26290:4230;;;;:::o;2782:425:21:-;3102:30;3069;:63;3065:136;;;3155:35;;-1:-1:-1;;;3155:35:21;;;;;;;;;;;1253:2726:37;1447:9;1466;1485:7;1587:9;:16;1607:2;1587:22;1583:1839;;-1:-1:-1;;;1935:7:37;1920:23;;1914:30;2069:8;2054:24;;2048:31;-1:-1:-1;;;;;2176:37:37;;;2323:3;2319:12;2333:2;2315:21;1583:1839;;;2370:9;:16;2390:2;2370:22;2366:1056;;-1:-1:-1;;;2676:7:37;2661:23;;2655:30;2785:8;2770:24;;2764:31;2902:10;2887:26;;2881:33;2878:1;2873:42;3005:2;3000:7;;;;;:18;;;3011:1;:7;;3016:2;3011:7;;3000:18;2996:80;;;3045:16;;-1:-1:-1;;;3045:16:37;;36523:4:45;36511:17;;3045:16:37;;;36493:36:45;36466:18;;3045:16:37;36351:184:45;2996:80:37;2366:1056;;;3264:55;3293:6;3301;3309:9;3264:28;:55::i;2366:1056::-;3538:26;;;3512:23;3538:26;;;;;;;;;36767:25:45;;;36840:4;36828:17;;36808:18;;;36801:45;;;;36862:18;;;36855:34;;;36905:18;;;36898:34;;;3538:26:37;;36739:19:45;;3538:26:37;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3538:26:37;;-1:-1:-1;;3538:26:37;;;-1:-1:-1;;;;;;;3616:29:37;;3612:361;;3668:18;;-1:-1:-1;;;3668:18:37;;;;;;;;;;;3612:361;3806:6;-1:-1:-1;;;;;3787:25:37;:15;-1:-1:-1;;;;;3787:25:37;;3783:190;;3907:55;3936:6;3944;3952:9;3907:28;:55::i;1337:627:40:-;1469:10;1586:15;1574:9;:27;:57;;;;1616:15;1605:7;:26;;1574:57;1570:314;;;1724:15;1720:74;;;1766:13;;-1:-1:-1;;;1766:13:40;;;;;;;;;;;1720:74;-1:-1:-1;1868:5:40;1861:12;;1570:314;-1:-1:-1;1953:4:40;1337:627;;;;;:::o;4158:1675:41:-;4623:1;4610:9;4602:18;;;;;;;;:::i;:::-;:22;:56;;;;-1:-1:-1;4640:10:41;-1:-1:-1;;;;;4640:18:41;;;;4602:56;:93;;;;-1:-1:-1;4674:10:41;-1:-1:-1;;;;;4674:21:41;;;;4602:93;4585:1242;;;4810:23;;;;:30;:35;:84;;;;-1:-1:-1;4865:24:41;;:29;4810:84;4789:1028;;;4986:53;5004:4;5010:9;5021:7;5030:8;4986:17;:53::i;:::-;4789:1028;;;5237:12;5252:395;5285:4;5359:53;;;5438:9;5473:10;5509:13;5548:16;5590:17;5311:318;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5311:318:41;;;;;;;;;;;;;;-1:-1:-1;;;;;5311:318:41;-1:-1:-1;;;;;;5311:318:41;;;;;;;;;;5252:11;:395::i;:::-;5237:410;;5746:56;5783:7;5792:9;5746:36;:56::i;:::-;5060:757;4158:1675;;;;;;;;:::o;9790:1564:27:-;9918:12;10045:4;10164:7;10157:5;10153:19;10312:7;10304:5;10298:12;10294:26;10288:4;10284:37;10251:845;10345:3;10339:4;10336:13;10251:845;;;10487:11;;10581:28;;;10626:169;;;;10852:10;10849:1;10842:21;10922:12;10916:4;10909:26;10574:408;;10626:169;10665:12;10662:1;10655:23;10742:10;10736:4;10729:24;10574:408;;;11073:8;11070:1;11060:22;11044:38;;10386:7;10380:4;10376:18;10368:26;;10251:845;;;-1:-1:-1;;11181:22:27;;;-1:-1:-1;11181:22:27;11288:60;;11323:14;;-1:-1:-1;;;11323:14:27;;;;;;;;;;;1958:1436:28;2206:15;2189:13;;:32;;;;;;;;:::i;:::-;;2185:1203;;2297:41;2310:4;:14;;;2326:4;:11;;;2297:12;:41::i;:::-;2185:1203;;;2376:14;2359:13;;:31;;;;;;;;:::i;:::-;;2355:1033;;2477:196;2509:4;:10;;;2537:4;2559;:14;;;2591:4;:11;;;2620:10;2648:11;2477:14;:196::i;2355:1033::-;2711:15;2694:13;;:32;;;;;;;;:::i;:::-;;2690:698;;2813:230;2846:4;:10;;;2874:4;2896;:14;;;2928:4;:15;;;2961:4;:11;;;2990:10;3018:11;2813:15;:230::i;2690:698::-;3146:231;3180:4;:10;;;3208:4;3230;:14;;;3262:4;:15;;;3295:4;:11;;;3324:10;3352:11;3146:16;:231::i;5488:917:20:-;5753:14;5874:9;5859:11;:24;5855:544;;5953:47;5966:9;5977:11;5990:9;5953:12;:47::i;:::-;5944:56;;5855:544;;;6119:269;6157:49;6170:9;6181:11;6194;6157:12;:49::i;:::-;6224:47;6237:9;6248:11;6261:9;6224:12;:47::i;:::-;6289:7;6314:9;6341:8;6367:7;6119:20;:269::i;:::-;6110:278;;5855:544;5488:917;;;;;;;;;;:::o;8253:742:28:-;8386:28;8407:6;8386:20;:28::i;:::-;8506:12;8662:1;8659;8656;8653;8645:6;8641:2;8634:5;8629:35;8618:46;;8721:7;8716:273;;8820:34;:32;:34::i;:::-;8939:39;;-1:-1:-1;;;8939:39:28;;-1:-1:-1;;;;;43743:32:45;;8939:39:28;;;43725:51:45;43792:18;;;43785:34;;;43698:18;;8939:39:28;43543:282:45;8716:273:28;8320:675;8253:742;;:::o;6016:1908:29:-;6238:26;;:::i;:::-;6540:21;:28;6572:1;6540:33;6536:125;;6641:4;6600:46;;-1:-1:-1;;;6600:46:29;;;;;;;;:::i;6536:125::-;6756:10;6748:4;:18;;;;;;;;:::i;:::-;;6744:951;;6864:164;6922:14;6958:21;7001:9;6864:36;:164::i;:::-;6744:951;;;7253:172;7319:14;7355:21;7398:9;7253:44;:172::i;:::-;7531:10;7511:17;;;:30;7638:20;;;:42;;;6744:951;7794:14;;:21;;;:14;:26;7790:118;;7875:17;;;;7840:14;;-1:-1:-1;;;;;7840:53:29;;;:24;;;;:53;6016:1908;;;;;;:::o;3968:2077:21:-;5199:26;5186:40;5358:24;5566:44;5520:120;5749:25;5408:392;5329:493;5096:744;4651:27;4638:41;4701:25;4614:130;4879:42;4866:56;4944:40;4842:160;4514:502;5045:809;;5952:87;;5992:36;;-1:-1:-1;;;5992:36:21;;;;;;;;;;;5952:87;4032:2013;3968:2077::o;1277:544:41:-;1599:1;1586:9;1578:18;;;;;;;;:::i;:::-;:22;:56;;;;-1:-1:-1;1616:10:41;-1:-1:-1;;;;;1616:18:41;;;;1578:56;:93;;;;-1:-1:-1;1650:10:41;-1:-1:-1;;;;;1650:21:41;;;;1578:93;1561:254;;;1751:53;1769:4;1775:9;1786:7;1795:8;1751:17;:53::i;1502:1032:35:-;1718:30;1751:23;;;:12;:23;;;;;;;;;1718:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1718:56:35;;;;;;;;;;;;-1:-1:-1;;;1718:56:35;;;;;;;;;;1843:218;1764:9;1718:56;;;1843:18;:218::i;:::-;-1:-1:-1;2158:23:35;;2153:102;;2197:47;2214:7;2223:9;2234;2197:16;:47::i;:::-;-1:-1:-1;;;2336:23:35;;;;:12;:23;;;;;2488:39;;;1502:1032::o;19436:1453:28:-;9815:21:30;9809:28;;-1:-1:-1;;;9433:19:30;10021:41;19653:15:28;10011:52:30;;;10158:7;10151:27;;;9578;10273:41;;10701:31;10580:28;10486:264;10940:48;;;;19843:12:28;;;-1:-1:-1;;;;;10420:458:30;;;;19653:15:28;20082:12;20050:14;19653:15;10420:458:30;19983:5:28;19961:191;19950:202;;20210:7;20205:254;;20308:34;:32;:34::i;:::-;20419:29;;-1:-1:-1;;;20419:29:28;;-1:-1:-1;;;;;44691:32:45;;20419:29:28;;;44673:51:45;44646:18;;20419:29:28;44527:203:45;20205:254:28;20538:13;20666:8;-1:-1:-1;;;;;;20771:43:28;;-1:-1:-1;;;20771:43:28;20767:116;;20837:35;;-1:-1:-1;;;20837:35:28;;;;;44909:25:45;;;-1:-1:-1;;;;;44970:32:45;;44950:18;;;44943:60;44882:18;;20837:35:28;44735:274:45;10217:4678:38;10536:5;10524:18;10514:254;;-1:-1:-1;;;10569:24:38;10562:60;10674:5;10646:26;10639:41;10730:23;10704:24;10697:57;10514:254;10879:21;10873:28;-1:-1:-1;;;10995:27:38;10988:66;11104:4;11074:28;11067:42;11157:2;11129:26;11122:38;11208:10;11180:26;11173:46;11498:1;11479;11435:26;11390:27;11371:1;11348:5;11325;11303:210;11578:7;11568:3120;;11729:16;11726:2180;;;12044:7;12026:16;12022:30;12334:7;12322:10;12318:24;12462:15;12449:11;12445:33;12591:10;12574:15;12571:31;12568:769;;;12782:32;;;12852:11;12741:156;13199:26;13096:27;;;13017:37;;;12972:189;12931:328;12704:585;12637:678;12568:769;13581:5;13564:14;13558:4;13554:25;13551:36;13548:340;;;13716:16;13713:1;13710;13695:38;13849:16;13846:1;13839:27;13548:340;;;;11726:2180;-1:-1:-1;;;14018:41:38;13990:152;14211:5;14166:43;14159:58;14285:4;14241:42;14234:56;14356:2;14314:40;14307:52;14425:10;14383:40;14376:60;14506:1;14460:44;14453:55;14616:40;14553:41;14525:149;11568:3120;-1:-1:-1;14766:21:38;14759:41;-1:-1:-1;;14877:1:38;14867:8;14860:19;-1:-1:-1;;10217:4678:38:o;15519:5338::-;15864:5;15852:18;15842:254;;-1:-1:-1;;;15897:24:38;15890:60;16002:5;15974:26;15967:41;16058:23;16032:24;16025:57;15842:254;16210:21;16204:28;16267:8;16261:15;16311:8;16305:15;16355:8;16349:15;-1:-1:-1;;;16479:32:38;16455:122;16632:4;16597:33;16590:47;16690:2;16657:31;16650:43;16746:10;16713:31;16706:51;16814:6;16777:35;16770:51;16916:43;16858:40;16834:139;17035:1;16993:40;16986:51;17271:1;17252;17203:31;17153:32;17134:1;17111:5;17088;17066:220;17351:7;17341:3125;;17502:16;17499:2180;;;17817:7;17799:16;17795:30;18107:7;18095:10;18091:24;18235:15;18222:11;18218:33;18364:10;18347:15;18344:31;18341:769;;;18555:32;;;18625:11;18514:156;18972:26;18869:27;;;18790:37;;;18745:189;18704:328;18477:585;18410:678;18341:769;19354:5;19337:14;19331:4;19327:25;19324:36;19321:340;;;19489:16;19486:1;19483;19468:38;19622:16;19619:1;19612:27;19321:340;;;;17499:2180;-1:-1:-1;;;19791:41:38;19763:152;19984:5;19939:43;19932:58;20058:4;20014:42;20007:56;20129:2;20087:40;20080:52;20198:10;20156:40;20149:60;20279:6;20233:44;20226:60;20394:40;20331:41;20303:149;17341:3125;-1:-1:-1;20487:8:38;20480:26;;;;20548:8;20541:26;20609:8;20602:26;20728:21;20721:41;-1:-1:-1;;20839:1:38;-1:-1:-1;20822:19:38;-1:-1:-1;;;15519:5338:38:o;15703:458:28:-;15900:29;15932:38;15958:11;21614:26;21597:44;21574:81;;21307:364;15932:38;15900:70;;16090:10;16065:21;:35;16061:94;;16116:28;16132:11;16116:15;:28::i;22667:2146::-;22919:16;13284:4:24;23093:11:28;:18;:41;23089:1009;;-1:-1:-1;23288:16:28;23268:37;;;23372:26;23355:44;;;23348:64;;;-1:-1:-1;;;23436:42:28;;;23429:60;;;;23551:28;23534:46;;23506:138;23161:1;23685:28;23668:46;;23661:64;;;23089:1009;;;-1:-1:-1;23922:28:28;23905:46;;23899:53;;23974:1;23874:119;24010:64;;;;23089:1009;24275:36;24230:25;24220:8;24216:40;24203:11;24199:58;24178:147;24358:8;24345:11;24338:29;24437:5;24404:30;24391:11;24387:48;24380:63;24512:4;24480:29;24467:11;24463:47;24456:61;24584:2;24554:27;24541:11;24537:45;24530:57;24695:10;24641:35;24628:11;24624:53;24600:119;24790:6;24756:31;24743:11;24739:49;24732:65;;24145:662;22667:2146;;;;;;;;:::o;9931:958::-;10187:28;10208:6;10187:20;:28::i;:::-;10291:59;10326:11;10339:10;10291:34;:59::i;:::-;10412:10;10408:475;;10504:46;10526:5;10533:4;10539:2;10543:6;10504:21;:46::i;:::-;10408:475;;;10649:223;10674:10;10702:11;10739:1;10759:5;10782:4;10804:2;10832:1;10852:6;10649:7;:223::i;3373:202:21:-;3505:6;3515:1;3505:11;3501:68;;3539:19;;-1:-1:-1;;;3539:19:21;;;;;;;;;;;17653:1113:28;18327:28;18310:46;;18304:53;18141:8;18124:26;;;18379:25;18279:143;18233:28;18212:224;18537:66;18562:10;18124:26;18212:224;18537:24;:66::i;:::-;-1:-1:-1;;18730:19:28;18710:40;;-1:-1:-1;17653:1113:28:o;20184:10471:29:-;20583:366;;;-1:-1:-1;;;20734:1:29;20727:58;20893:41;20890:1;20883:52;21036:403;-1:-1:-1;;;21138:1:29;21131:32;21287:16;21267:18;21260:44;21406:18;21403:1;21396:29;21036:403;21569:7;21544:23;21540:37;21692:18;21686:25;21680:32;21821:14;21815:21;21803:10;21800:37;21790:119;;21857:38;;:::i;:::-;22162:7;22150:10;22146:24;22136:7;22120:14;22116:28;22112:59;22015:170;22439:41;22408:8;22402:15;22298:200;22275:237;22676:28;22655:18;22649:25;22645:60;22622:97;22827:19;22821:26;22810:9;22807:41;22797:123;;22868:38;;:::i;:::-;23288:7;23277:9;23273:23;23173:7;23152:19;23148:33;23058:256;23035:293;23428:1;23534;23687:30;23677:8;23673:45;23667:52;23664:516;;;-1:-1:-1;;23858:20:29;23832:47;;23942:16;;24164:1;24146:20;;;24043:14;;23664:516;24281:9;24275:16;24387:20;24381:27;24367:12;24360:49;24586:19;24564:20;24560:46;24554:53;24516:19;24502:12;24498:38;24474:147;24808:24;24786:20;24782:51;24776:58;24733:24;24719:12;24715:43;24691:157;25109:34;25063:20;25034:131;25007:176;24959:29;24945:12;24941:48;24917:280;25352:30;25322:12;25295:101;25595:7;25569:23;25563:30;25559:44;25518:23;25497:120;25718:4299;25749:6;25728:18;25725:31;25718:4299;;;25895:7;25875:18;25871:32;25849:54;;26017:18;26011:25;26005:32;25991:46;;26141:14;26135:21;26123:10;26120:37;26110:125;;26179:38;;:::i;:::-;26448:7;26436:10;26432:24;26398:7;26382:14;26378:28;26349:129;26322:174;26310:186;;26624:30;26614:8;26610:45;26604:52;26573:148;25718:4299;26573:148;27011:41;26976:8;26970:15;26863:211;26836:256;26813:279;;27229:7;27208:18;27202:25;27198:39;27192:46;27179:59;;27354:19;27348:26;27337:9;27334:41;27324:131;;27399:38;;:::i;:::-;27832:7;27821:9;27817:23;27715:7;27694:19;27690:33;27592:270;27565:315;27541:339;;28063:20;28019;27992:109;28211:9;28205:16;28197:6;28193:29;28468:9;28462:16;28455:24;28425:6;28414:9;28411:21;28408:1;28404:29;28380:119;28349:11;28327:190;28312:205;;28609:9;28599:19;;;28734:1;28723:9;28716:20;;29731:30;29681:20;29642:147;29606:8;29576:239;29360:29;29310:12;29269:154;29230:223;29107:29;29049:20;29008:162;28969:231;28937:542;28853:984;28822:1181;;29947:38;;:::i;:::-;25718:4299;;;-1:-1:-1;;30103:20:29;30085:39;30078:55;;;30230:11;30259:1;30254:269;;;;30541:1;30536:103;;;;30223:416;;30254:269;-1:-1:-1;;;30350:1:29;30343:44;30481:27;30478:1;30471:38;30536:103;30610:15;;:::i;:::-;30223:416;;;;;;;;;20184:10471;;;:::o;8544:10888::-;9824:7;9807:15;9803:29;9947:18;9941:25;9935:32;10076:14;10070:21;10058:10;10055:37;10045:119;;10112:38;;:::i;:::-;10417:7;10405:10;10401:24;10391:7;10375:14;10371:28;10367:59;10270:170;10552:8;10546:15;10677:33;10666:9;10662:49;10639:86;10889:28;10868:18;10862:25;10858:60;10835:97;11040:11;11034:18;11023:9;11020:33;11010:115;;11073:38;;:::i;:::-;11477:7;11466:9;11462:23;11362:7;11349:11;11345:25;11255:248;11232:285;11617:1;11723;11842:30;11832:8;11828:45;11822:52;11819:520;;;-1:-1:-1;;12005:20:29;11987:39;;12089:16;;12212:1;12194:20;;;12311:14;;11819:520;12433:9;12427:16;12619:8;12571:29;12554:15;12550:51;12526:115;12740:12;12734:19;12717:15;12710:44;12926:19;12912:12;12908:38;12902:45;12864:19;12847:15;12843:41;12819:142;13143:24;13129:12;13125:43;13119:50;13076:24;13059:15;13055:46;13031:152;13326:9;13320:16;13293:24;13282:9;13278:40;13271:66;13535:30;13524:9;13520:46;13514:53;13471:24;13460:9;13456:40;13432:149;13739:30;13706:15;13679:104;13663:120;;13966:7;13948:15;13942:22;13938:36;13905:15;13884:104;14089:4701;14120:6;14099:18;14096:31;14089:4701;;;14273:7;14253:18;14249:32;14227:54;;14395:18;14389:25;14383:32;14369:46;;14519:14;14513:21;14501:10;14498:37;14488:125;;14557:38;;:::i;:::-;14826:7;14814:10;14810:24;14776:7;14760:14;14756:28;14727:129;14700:174;14688:186;;15002:30;14992:8;14988:45;14961:90;14951:148;14089:4701;14951:148;15215:8;15209:15;15196:28;;15393:33;15358:9;15329:119;15302:164;15287:179;;15603:7;15582:18;15576:25;15572:39;15566:46;15553:59;;15749:11;15743:18;15732:9;15729:33;15698:161;;15803:38;;:::i;:::-;16212:7;16201:9;16197:23;16095:7;16082:11;16078:25;15980:262;15953:307;15937:323;;16427:20;16391:12;16364:101;16575:9;16569:16;16561:6;16557:29;16832:9;16826:16;16819:24;16789:6;16778:9;16775:21;16772:1;16768:29;16744:119;16713:11;16691:190;16676:205;;16973:9;16963:19;;;17098:1;17087:9;17080:20;;18502:30;18456:12;18413:149;18375:8;18343:245;18096:24;18047:9;18004:152;17963:225;17833:30;17784:9;17741:158;17700:231;17666:550;17482:24;17471:9;17467:40;17426:113;17384:9;17378:16;17344:223;17246:996;17217:1393;17186:1590;;18720:38;;:::i;:::-;14089:4701;;;14093:2;;18903:6;18880:20;18868:9;18862:16;18858:43;18851:59;19007:11;19036:1;19031:269;;;;19318:1;19313:103;;19000:416;19313:103;19387:15;;:::i;:::-;19000:416;;;;;;;;;;8544:10888;;;:::o;4702:914:37:-;4907:12;4922:202;4947:6;5007:42;;;5067:6;5091:9;4967:147;;;;;;;;;:::i;4922:202::-;4907:217;;5172:7;5167:245;;5260:34;:32;:34::i;:::-;5379:22;;-1:-1:-1;;;5379:22:37;;;;;;;;;;;5167:245;5499:62;-1:-1:-1;;;5499:18:37;:62::i;:::-;5495:115;;;5584:15;;-1:-1:-1;;;5584:15:37;;;;;;;;;;;1827:621:41;2093:195;;;;;45539:25:45;;;2213:10:41;45618:18:45;;;45611:43;-1:-1:-1;;;;;45690:15:45;;45670:18;;;45663:43;45722:18;;;45715:34;;;2035:12:41;;2050:248;;2075:4;;-1:-1:-1;;;2133:35:41;45511:19:45;;2093:195:41;45308:447:45;2050:248:41;2035:263;;2385:56;2422:7;2431:9;2385:36;:56::i;694:406:31:-;801:12;1069:1;1050;1023:8;1017:15;991:7;981:8;977:22;953:6;930:5;902:182;891:193;694:406;-1:-1:-1;;;694:406:31:o;6302:633:41:-;6465:7;6460:256;;6553:34;:32;:34::i;:::-;6672:33;;-1:-1:-1;;;6672:33:41;;;;;1389:25:45;;;1362:18;;6672:33:41;1243:177:45;6460:256:41;6807:55;-1:-1:-1;;;6807:18:41;:55::i;:::-;6803:126;;;6885:33;;-1:-1:-1;;;6885:33:41;;;;;1389:25:45;;;1362:18;;6885:33:41;1243:177:45;1346:2159:31;1553:16;1550:1939;;;1858:7;1840:16;1836:30;2150:7;2126:21;2120:28;2116:42;2270:15;2257:11;2253:33;2391:10;2374:15;2371:31;2368:607;;;2529:32;;;2563:11;2525:50;2853:26;2758:27;;;2683:37;;;2642:177;2605:304;2492:443;2433:524;2368:607;3184:5;3167:14;3161:4;3157:25;3154:36;3151:324;;;3311:16;3308:1;3305;3290:38;3440:16;3437:1;3430:27;783:8985:38;1129:21;1123:28;-1:-1:-1;;;1248:26:38;1241:64;1354:4;1325:27;1318:41;1406:2;1379:25;1372:37;1460:6;1429:29;1422:45;1772:7;1753:1;1710:25;1666:26;1647:1;1624:5;1601;1579:214;2270:10;2217:16;2210:24;2184:2;2166:16;2163:24;2159:1;2155;2149:8;2146:15;2142:46;2118:134;1902:392;2621:16;2614:24;2607:32;2598:7;2594:46;2584:6977;;2942:7;2932:5;2920:18;2913:26;2906:34;2902:48;2892:6460;;3031:7;3021:6011;;3130:10;3120:4669;;3320:16;3317:3232;;;3797:7;3743:16;3702:136;4203:7;4191:10;4187:24;4355:15;4342:11;4338:33;4508:10;4491:15;4488:31;4485:1293;;;4759:186;;;4995:11;4706:346;5592:26;5465:27;;;5208:203;;;5151:391;5098:566;4657:1049;4566:1178;4485:1293;6070:5;6053:14;6047:4;6043:25;6040:36;6037:482;;;6268:16;6265:1;6262;6247:38;6468:16;6465:1;6458:27;6037:482;;;;3317:3232;-1:-1:-1;;;6697:41:38;6657:188;6991:5;6914:43;6874:152;7171:4;7095:42;7055:150;7283:2;7241:40;7234:52;7364:1;7322:40;7315:51;7513:6;7435:44;7395:154;7693:40;7618:41;7578:185;3120:4669;-1:-1:-1;;;7970:47:38;7934:188;8262:5;8183:49;8147:146;8432:4;8354:48;8318:144;8599:2;8523:46;8487:140;8768:6;8688:50;8652:148;8938:46;8861:47;8825:185;3021:6011;-1:-1:-1;;;9141:24:38;9134:60;9250:5;9222:26;9215:41;9310:23;9284:24;9277:57;2892:6460;-1:-1:-1;;9639:21:38;9632:41;-1:-1:-1;;9750:1:38;9740:8;9733:19;-1:-1:-1;;783:8985:38:o;3850:779:31:-;3918:4;4010:13;4235:7;4217:16;4214:29;4211:285;;4362:7;4359:1;4356;4341:29;-1:-1:-1;4480:1:31;4474:8;4211:285;-1:-1:-1;;;;;;4604:18:31;;;;;;;;;;;3850:779;-1:-1:-1;3850:779:31:o;-1:-1:-1:-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:472:45:-;56:3;94:5;88:12;121:6;116:3;109:19;146:1;156:162;170:6;167:1;164:13;156:162;;;232:4;288:13;;;284:22;;278:29;260:11;;;256:20;;249:59;185:12;156:162;;;336:6;333:1;330:13;327:87;;;402:1;395:4;386:6;381:3;377:16;373:27;366:38;327:87;-1:-1:-1;468:2:45;447:15;-1:-1:-1;;443:29:45;434:39;;;;475:4;430:50;;14:472;-1:-1:-1;;14:472:45:o;491:220::-;640:2;629:9;622:21;603:4;660:45;701:2;690:9;686:18;678:6;660:45;:::i;716:131::-;-1:-1:-1;;;;;791:31:45;;781:42;;771:70;;837:1;834;827:12;852:134;920:20;;949:31;920:20;949:31;:::i;:::-;852:134;;;:::o;991:247::-;1050:6;1103:2;1091:9;1082:7;1078:23;1074:32;1071:52;;;1119:1;1116;1109:12;1071:52;1158:9;1145:23;1177:31;1202:5;1177:31;:::i;1425:180::-;1484:6;1537:2;1525:9;1516:7;1512:23;1508:32;1505:52;;;1553:1;1550;1543:12;1505:52;-1:-1:-1;1576:23:45;;1425:180;-1:-1:-1;1425:180:45:o;2026:127::-;2087:10;2082:3;2078:20;2075:1;2068:31;2118:4;2115:1;2108:15;2142:4;2139:1;2132:15;2158:253;2230:2;2224:9;2272:4;2260:17;;-1:-1:-1;;;;;2292:34:45;;2328:22;;;2289:62;2286:88;;;2354:18;;:::i;:::-;2390:2;2383:22;2158:253;:::o;2416:255::-;2488:2;2482:9;2530:6;2518:19;;-1:-1:-1;;;;;2552:34:45;;2588:22;;;2549:62;2546:88;;;2614:18;;:::i;2676:275::-;2747:2;2741:9;2812:2;2793:13;;-1:-1:-1;;2789:27:45;2777:40;;-1:-1:-1;;;;;2832:34:45;;2868:22;;;2829:62;2826:88;;;2894:18;;:::i;:::-;2930:2;2923:22;2676:275;;-1:-1:-1;2676:275:45:o;2956:196::-;3029:4;-1:-1:-1;;;;;3054:6:45;3051:30;3048:56;;;3084:18;;:::i;:::-;-1:-1:-1;3129:1:45;3125:14;3141:4;3121:25;;2956:196::o;3157:149::-;3231:20;;3280:1;3270:12;;3260:40;;3296:1;3293;3286:12;3311:566;3367:5;3415:4;3403:9;3398:3;3394:19;3390:30;3387:50;;;3433:1;3430;3423:12;3387:50;3455:22;;:::i;:::-;3446:31;;3500:35;3525:9;3500:35;:::i;:::-;3493:5;3486:50;3588:2;3577:9;3573:18;3560:32;3601:33;3626:7;3601:33;:::i;:::-;3666:7;3661:2;3654:5;3650:14;3643:31;;3734:2;3723:9;3719:18;3706:32;3701:2;3694:5;3690:14;3683:56;3799:2;3788:9;3784:18;3771:32;3766:2;3759:5;3755:14;3748:56;3865:3;3854:9;3850:19;3837:33;3831:3;3824:5;3820:15;3813:58;3311:566;;;;:::o;3882:728::-;3945:5;3998:3;3991:4;3983:6;3979:17;3975:27;3965:55;;4016:1;4013;4006:12;3965:55;4052:6;4039:20;4078:4;4102:73;4118:56;4171:2;4118:56;:::i;:::-;4102:73;:::i;:::-;4209:15;;;4271:4;4314:11;;;4302:24;;4298:33;;;4240:12;;;;4197:3;4343:15;;;4340:35;;;4371:1;4368;4361:12;4340:35;4407:2;4399:6;4395:15;4419:162;4435:6;4430:3;4427:15;4419:162;;;4501:37;4534:3;4529;4501:37;:::i;:::-;4489:50;;4559:12;;;;4452;;4419:162;;;-1:-1:-1;4599:5:45;;3882:728;-1:-1:-1;;;;;;;3882:728:45:o;4615:908::-;4679:5;4727:4;4715:9;4710:3;4706:19;4702:30;4699:50;;;4745:1;4742;4735:12;4699:50;4778:2;4772:9;4820:4;4812:6;4808:17;4891:6;4879:10;4876:22;-1:-1:-1;;;;;4843:10:45;4840:34;4837:62;4834:88;;;4902:18;;:::i;:::-;4938:2;4931:22;4971:6;-1:-1:-1;4971:6:45;5001:35;5026:9;5001:35;:::i;:::-;4993:6;4986:51;5089:2;5078:9;5074:18;5061:32;5102:33;5127:7;5102:33;:::i;:::-;5168:7;5163:2;5155:6;5151:15;5144:32;;5237:2;5226:9;5222:18;5209:32;5204:2;5196:6;5192:15;5185:57;5303:2;5292:9;5288:18;5275:32;5270:2;5262:6;5258:15;5251:57;5370:3;5359:9;5355:19;5342:33;5336:3;5328:6;5324:16;5317:59;5428:3;5417:9;5413:19;5400:33;5442;5467:7;5442:33;:::i;:::-;5503:3;5491:16;;;;5484:33;4615:908;;-1:-1:-1;;4615:908:45:o;5528:744::-;5599:5;5652:3;5645:4;5637:6;5633:17;5629:27;5619:55;;5670:1;5667;5660:12;5619:55;5706:6;5693:20;5732:4;5756:73;5772:56;5825:2;5772:56;:::i;5756:73::-;5863:15;;;5925:4;5968:11;;;5956:24;;5952:33;;;5894:12;;;;5851:3;5997:15;;;5994:35;;;6025:1;6022;6015:12;5994:35;6061:2;6053:6;6049:15;6073:170;6089:6;6084:3;6081:15;6073:170;;;6155:45;6196:3;6191;6155:45;:::i;:::-;6143:58;;6221:12;;;;6106;;6073:170;;6277:150;6352:20;;6401:1;6391:12;;6381:40;;6417:1;6414;6407:12;6432:1291;6494:5;6542:6;6530:9;6525:3;6521:19;6517:32;6514:52;;;6562:1;6559;6552:12;6514:52;6584:22;;:::i;:::-;6575:31;;6629:29;6648:9;6629:29;:::i;:::-;6622:5;6615:44;6691:38;6725:2;6714:9;6710:18;6691:38;:::i;:::-;6686:2;6679:5;6675:14;6668:62;6781:2;6770:9;6766:18;6753:32;-1:-1:-1;;;;;6845:2:45;6837:6;6834:14;6831:34;;;6861:1;6858;6851:12;6831:34;6897:66;6959:3;6950:6;6939:9;6935:22;6897:66;:::i;:::-;6892:2;6885:5;6881:14;6874:90;7017:2;7006:9;7002:18;6989:32;6973:48;;7046:2;7036:8;7033:16;7030:36;;;7062:1;7059;7052:12;7030:36;;7098:76;7170:3;7159:8;7148:9;7144:24;7098:76;:::i;:::-;7093:2;7086:5;7082:14;7075:100;;7208:46;7249:3;7238:9;7234:19;7208:46;:::i;:::-;7202:3;7195:5;7191:15;7184:71;7316:3;7305:9;7301:19;7288:33;7282:3;7275:5;7271:15;7264:58;7383:3;7372:9;7368:19;7355:33;7349:3;7342:5;7338:15;7331:58;7450:3;7439:9;7435:19;7422:33;7416:3;7409:5;7405:15;7398:58;7475:3;7538:2;7527:9;7523:18;7510:32;7505:2;7498:5;7494:14;7487:56;;7562:3;7625:2;7614:9;7610:18;7597:32;7592:2;7585:5;7581:14;7574:56;;7649:3;7712:2;7701:9;7697:18;7684:32;7679:2;7672:5;7668:14;7661:56;;6432:1291;;;;:::o;7728:186::-;7796:20;;-1:-1:-1;;;;;7845:44:45;;7835:55;;7825:83;;7904:1;7901;7894:12;7919:530;7961:5;8014:3;8007:4;7999:6;7995:17;7991:27;7981:55;;8032:1;8029;8022:12;7981:55;8068:6;8055:20;-1:-1:-1;;;;;8090:2:45;8087:26;8084:52;;;8116:18;;:::i;:::-;8160:55;8203:2;8184:13;;-1:-1:-1;;8180:27:45;8209:4;8176:38;8160:55;:::i;:::-;8240:2;8231:7;8224:19;8286:3;8279:4;8274:2;8266:6;8262:15;8258:26;8255:35;8252:55;;;8303:1;8300;8293:12;8252:55;8368:2;8361:4;8353:6;8349:17;8342:4;8333:7;8329:18;8316:55;8416:1;8391:16;;;8409:4;8387:27;8380:38;;;;8395:7;7919:530;-1:-1:-1;;;7919:530:45:o;8454:896::-;8514:5;8562:4;8550:9;8545:3;8541:19;8537:30;8534:50;;;8580:1;8577;8570:12;8534:50;8602:22;;:::i;:::-;8593:31;;8660:9;8647:23;-1:-1:-1;;;;;8730:2:45;8722:6;8719:14;8716:34;;;8746:1;8743;8736:12;8716:34;8773:62;8831:3;8822:6;8811:9;8807:22;8773:62;:::i;:::-;8766:5;8759:77;8868:38;8902:2;8891:9;8887:18;8868:38;:::i;:::-;8863:2;8856:5;8852:14;8845:62;8939:38;8973:2;8962:9;8958:18;8939:38;:::i;:::-;8934:2;8927:5;8923:14;8916:62;9031:2;9020:9;9016:18;9003:32;8987:48;;9060:2;9050:8;9047:16;9044:36;;;9076:1;9073;9066:12;9044:36;9112:47;9155:3;9144:8;9133:9;9129:24;9112:47;:::i;:::-;9107:2;9100:5;9096:14;9089:71;9213:3;9202:9;9198:19;9185:33;9169:49;;9243:2;9233:8;9230:16;9227:36;;;9259:1;9256;9249:12;9227:36;;9296:47;9339:3;9328:8;9317:9;9313:24;9296:47;:::i;:::-;9290:3;9283:5;9279:15;9272:72;;8454:896;;;;:::o;9355:929::-;9422:5;9475:3;9468:4;9460:6;9456:17;9452:27;9442:55;;9493:1;9490;9483:12;9442:55;9529:6;9516:20;9555:4;9579:73;9595:56;9648:2;9595:56;:::i;9579:73::-;9686:15;;;9772:1;9768:10;;;;9756:23;;9752:32;;;9717:12;;;;9796:15;;;9793:35;;;9824:1;9821;9814:12;9793:35;9860:2;9852:6;9848:15;9872:383;9888:6;9883:3;9880:15;9872:383;;;9974:3;9961:17;-1:-1:-1;;;;;9997:11:45;9994:35;9991:125;;;10070:1;10099:2;10095;10088:14;9991:125;10141:71;10208:3;10203:2;10189:11;10181:6;10177:24;10173:33;10141:71;:::i;:::-;10129:84;;-1:-1:-1;10233:12:45;;;;9905;;9872:383;;;-1:-1:-1;10273:5:45;9355:929;-1:-1:-1;;;;;;9355:929:45:o;10289:392::-;10377:8;10387:6;10441:3;10434:4;10426:6;10422:17;10418:27;10408:55;;10459:1;10456;10449:12;10408:55;-1:-1:-1;10482:20:45;;-1:-1:-1;;;;;10514:30:45;;10511:50;;;10557:1;10554;10547:12;10511:50;10594:4;10586:6;10582:17;10570:29;;10654:3;10647:4;10637:6;10634:1;10630:14;10622:6;10618:27;10614:38;10611:47;10608:67;;;10671:1;10668;10661:12;10608:67;10289:392;;;;;:::o;10686:1160::-;10940:6;10948;10956;10964;10972;11025:2;11013:9;11004:7;11000:23;10996:32;10993:52;;;11041:1;11038;11031:12;10993:52;11081:9;11068:23;-1:-1:-1;;;;;11151:2:45;11143:6;11140:14;11137:34;;;11167:1;11164;11157:12;11137:34;11190:74;11256:7;11247:6;11236:9;11232:22;11190:74;:::i;:::-;11180:84;;11317:2;11306:9;11302:18;11289:32;11273:48;;11346:2;11336:8;11333:16;11330:36;;;11362:1;11359;11352:12;11330:36;11401:97;11490:7;11479:8;11468:9;11464:24;11401:97;:::i;:::-;11517:8;;-1:-1:-1;11375:123:45;-1:-1:-1;11605:2:45;11590:18;;11577:32;;-1:-1:-1;11621:16:45;;;11618:36;;;11650:1;11647;11640:12;11618:36;;11689:97;11778:7;11767:8;11756:9;11752:24;11689:97;:::i;:::-;10686:1160;;;;-1:-1:-1;10686:1160:45;;-1:-1:-1;11805:8:45;;11663:123;10686:1160;-1:-1:-1;;;10686:1160:45:o;11851:127::-;11912:10;11907:3;11903:20;11900:1;11893:31;11943:4;11940:1;11933:15;11967:4;11964:1;11957:15;11983:139;12063:1;12056:5;12053:12;12043:46;;12069:18;;:::i;:::-;12098;;11983:139::o;12236:436::-;12302:43;12341:3;12333:5;12327:12;12302:43;:::i;:::-;12391:4;12380:16;;;12374:23;-1:-1:-1;;;;;12467:21:45;;;12451:14;;;12444:45;;;;12538:4;12527:16;;;12521:23;12505:14;;;12498:47;12594:4;12583:16;;;12577:23;12561:14;;;12554:47;12654:4;12643:16;;;12637:23;12633:32;12617:14;;12610:56;12236:436::o;12677:640::-;12739:3;12777:5;12771:12;12804:6;12799:3;12792:19;12830:4;12859:2;12854:3;12850:12;12843:19;;12896:2;12889:5;12885:14;12917:1;12927:365;12941:6;12938:1;12935:13;12927:365;;;13006:6;13000:13;13026:46;13068:3;13063:2;13057:9;13026:46;:::i;:::-;13118:11;;;13112:18;-1:-1:-1;;;;;13108:44:45;13140:3;13092:14;;13085:68;13203:4;13195:13;13189:20;13182:4;13173:14;;13166:44;13239:4;13230:14;;;;13267:15;;;;13149:1;12956:9;12927:365;;;-1:-1:-1;13308:3:45;;12677:640;-1:-1:-1;;;;;12677:640:45:o;13322:324::-;13555:2;13544:9;13537:21;13518:4;13575:65;13636:2;13625:9;13621:18;13613:6;13575:65;:::i;13651:395::-;13745:6;13798:2;13786:9;13777:7;13773:23;13769:32;13766:52;;;13814:1;13811;13804:12;13766:52;13854:9;13841:23;-1:-1:-1;;;;;13879:6:45;13876:30;13873:50;;;13919:1;13916;13909:12;13873:50;13942:22;;13998:3;13980:16;;;13976:26;13973:46;;;14015:1;14012;14005:12;14233:487;14344:6;14352;14405:2;14393:9;14384:7;14380:23;14376:32;14373:52;;;14421:1;14418;14411:12;14373:52;14461:9;14448:23;-1:-1:-1;;;;;14486:6:45;14483:30;14480:50;;;14526:1;14523;14516:12;14480:50;14565:95;14652:7;14643:6;14632:9;14628:22;14565:95;:::i;:::-;14679:8;;14539:121;;-1:-1:-1;14233:487:45;-1:-1:-1;;;;14233:487:45:o;14917:879::-;15095:6;15103;15111;15119;15172:2;15160:9;15151:7;15147:23;15143:32;15140:52;;;15188:1;15185;15178:12;15140:52;15228:9;15215:23;-1:-1:-1;;;;;15298:2:45;15290:6;15287:14;15284:34;;;15314:1;15311;15304:12;15284:34;15353:95;15440:7;15431:6;15420:9;15416:22;15353:95;:::i;:::-;15467:8;;-1:-1:-1;15327:121:45;-1:-1:-1;15555:2:45;15540:18;;15527:32;;-1:-1:-1;15571:16:45;;;15568:36;;;15600:1;15597;15590:12;15568:36;;15639:97;15728:7;15717:8;15706:9;15702:24;15639:97;:::i;:::-;14917:879;;;;-1:-1:-1;15755:8:45;-1:-1:-1;;;;14917:879:45:o;15801:452::-;15894:6;15902;15955:2;15943:9;15934:7;15930:23;15926:32;15923:52;;;15971:1;15968;15961:12;15923:52;16011:9;15998:23;-1:-1:-1;;;;;16036:6:45;16033:30;16030:50;;;16076:1;16073;16066:12;16030:50;16099:22;;16155:2;16137:16;;;16133:25;16130:45;;;16171:1;16168;16161:12;16130:45;16194:2;16243;16228:18;;;;16215:32;;-1:-1:-1;;;15801:452:45:o;16258:858::-;16431:6;16439;16447;16455;16508:2;16496:9;16487:7;16483:23;16479:32;16476:52;;;16524:1;16521;16514:12;16476:52;16564:9;16551:23;-1:-1:-1;;;;;16634:2:45;16626:6;16623:14;16620:34;;;16650:1;16647;16640:12;16620:34;16673:22;;;;16729:3;16711:16;;;16707:26;16704:46;;;16746:1;16743;16736:12;16704:46;16769:2;;-1:-1:-1;16824:2:45;16809:18;;16796:32;;16840:16;;;16837:36;;;16869:1;16866;16859:12;16837:36;;16908:97;16997:7;16986:8;16975:9;16971:24;16908:97;:::i;:::-;16258:858;;17024:8;;-1:-1:-1;16882:123:45;;17106:2;17091:18;17078:32;;16258:858;-1:-1:-1;;;;16258:858:45:o;17121:1460::-;17456:6;17464;17472;17480;17488;17496;17504;17512;17565:3;17553:9;17544:7;17540:23;17536:33;17533:53;;;17582:1;17579;17572:12;17533:53;17622:9;17609:23;-1:-1:-1;;;;;17692:2:45;17684:6;17681:14;17678:34;;;17708:1;17705;17698:12;17678:34;17747:95;17834:7;17825:6;17814:9;17810:22;17747:95;:::i;:::-;17861:8;;-1:-1:-1;17721:121:45;-1:-1:-1;17949:2:45;17934:18;;17921:32;;-1:-1:-1;17965:16:45;;;17962:36;;;17994:1;17991;17984:12;17962:36;18033:97;18122:7;18111:8;18100:9;18096:24;18033:97;:::i;:::-;18149:8;;-1:-1:-1;18007:123:45;-1:-1:-1;18237:2:45;18222:18;;18209:32;;-1:-1:-1;18253:16:45;;;18250:36;;;18282:1;18279;18272:12;18250:36;;18321:97;18410:7;18399:8;18388:9;18384:24;18321:97;:::i;:::-;17121:1460;;;;-1:-1:-1;17121:1460:45;;;;18437:8;;18519:2;18504:18;;18491:32;;18570:3;18555:19;18542:33;;-1:-1:-1;17121:1460:45;-1:-1:-1;;;;17121:1460:45:o;18586:879::-;18902:2;18914:21;;;18984:13;;18887:18;;;19006:22;;;18854:4;;19081;;19059:2;19044:18;;;19108:15;;;18854:4;19151:185;19165:6;19162:1;19159:13;19151:185;;;19240:13;;19233:21;19226:29;19214:42;;19276:12;;;;19311:15;;;;19187:1;19180:9;19151:185;;;19155:3;;;19381:9;19376:3;19372:19;19367:2;19356:9;19352:18;19345:47;19409:50;19455:3;19447:6;19409:50;:::i;19470:388::-;19675:2;19664:9;19657:21;19638:4;19695:45;19736:2;19725:9;19721:18;19713:6;19695:45;:::i;:::-;19771:2;19756:18;;19749:34;;;;-1:-1:-1;;;;;;19819:32:45;;;;19814:2;19799:18;;;19792:60;19687:53;19470:388;-1:-1:-1;19470:388:45:o;19863:400::-;19962:6;20015:2;20003:9;19994:7;19990:23;19986:32;19983:52;;;20031:1;20028;20021:12;19983:52;20071:9;20058:23;-1:-1:-1;;;;;20096:6:45;20093:30;20090:50;;;20136:1;20133;20126:12;20090:50;20159:22;;20215:3;20197:16;;;20193:26;20190:46;;;20232:1;20229;20222:12;20268:1742;20679:6;20687;20695;20703;20711;20719;20727;20735;20743;20796:3;20784:9;20775:7;20771:23;20767:33;20764:53;;;20813:1;20810;20803:12;20764:53;20853:9;20840:23;-1:-1:-1;;;;;20923:2:45;20915:6;20912:14;20909:34;;;20939:1;20936;20929:12;20909:34;20962:74;21028:7;21019:6;21008:9;21004:22;20962:74;:::i;:::-;20952:84;;21089:2;21078:9;21074:18;21061:32;21045:48;;21118:2;21108:8;21105:16;21102:36;;;21134:1;21131;21124:12;21102:36;21173:97;21262:7;21251:8;21240:9;21236:24;21173:97;:::i;:::-;21289:8;;-1:-1:-1;21147:123:45;-1:-1:-1;21377:2:45;21362:18;;21349:32;;-1:-1:-1;21393:16:45;;;21390:36;;;21422:1;21419;21412:12;21390:36;21461:97;21550:7;21539:8;21528:9;21524:24;21461:97;:::i;:::-;21577:8;;-1:-1:-1;21435:123:45;-1:-1:-1;21665:2:45;21650:18;;21637:32;;-1:-1:-1;21681:16:45;;;21678:36;;;21710:1;21707;21700:12;21678:36;;21749:97;21838:7;21827:8;21816:9;21812:24;21749:97;:::i;:::-;20268:1742;;;;-1:-1:-1;20268:1742:45;;;;;;21723:123;;21947:3;21932:19;;21919:33;;21999:3;21984:19;;;21971:33;;-1:-1:-1;20268:1742:45;-1:-1:-1;;;;20268:1742:45:o;22517:2710::-;22703:9;22738:77;22754:60;22807:6;22754:60;:::i;22738:77::-;22849:19;;;22887:4;22907:12;;;;22837:3;22938:1;22973:15;;;22962:27;;23012:14;23001:26;;22998:46;;;23040:1;23037;23030:12;22998:46;23064:5;23078:2116;23094:6;23089:3;23086:15;23078:2116;;;23180:3;23167:17;-1:-1:-1;;;;;23257:2:45;23244:11;23241:19;23238:109;;;23301:1;23330:2;23326;23319:14;23238:109;23381:11;23374:5;23370:23;23360:33;;23438:4;23433:2;23417:14;23413:23;23409:34;23406:124;;;23484:1;23513:2;23509;23502:14;23406:124;23558:22;;:::i;:::-;23622:2;23609:16;23600:7;23593:33;23675:2;23671;23667:11;23654:25;23714:1;23705:7;23702:14;23692:112;;23758:1;23787:2;23783;23776:14;23692:112;23824:16;;;23817:33;23873:2;23926:11;;;23913:25;23895:16;;;23888:51;23962:2;24015:11;;;24002:25;23984:16;;;23977:51;24052:3;24095:12;;;24082:26;24124:14;;;24121:107;;;24180:1;24210:3;24205;24198:16;24121:107;24252:15;;;;;24310:14;24303:4;24294:14;;24290:35;24280:136;;24368:1;24357:12;;24398:3;24393;24386:16;24280:136;24453:3;24440:17;24429:28;;24483:74;24499:57;24552:3;24499:57;:::i;24483:74::-;24601:18;;;24697:12;;;24688:22;;24684:31;;;24641:14;;;;24744;24731:28;;24728:121;;;24801:1;24831:3;24826;24819:16;24728:121;24875:12;;;;24900:174;24918:8;24911:5;24908:19;24900:174;;;25000:19;;24986:34;;24939:14;;;;25046;;;;24900:174;;;25094:17;;;25087:32;;;;-1:-1:-1;25132:20:45;;-1:-1:-1;;25172:12:45;;;;23111;;23078:2116;;;-1:-1:-1;25216:5:45;;22517:2710;-1:-1:-1;;;;;;;22517:2710:45:o;25232:577::-;25354:4;25360:6;25420:11;25407:25;25514:2;25510:7;25499:8;25483:14;25479:29;25475:43;25455:18;25451:68;25441:96;;25533:1;25530;25523:12;25441:96;25560:33;;25612:20;;;-1:-1:-1;;;;;;25644:30:45;;25641:50;;;25687:1;25684;25677:12;25641:50;25720:4;25708:17;;-1:-1:-1;25779:4:45;25767:17;;25751:14;25747:38;25737:49;;25734:69;;;25799:1;25796;25789:12;25814:232;25900:6;25953:3;25941:9;25932:7;25928:23;25924:33;25921:53;;;25970:1;25967;25960:12;25921:53;25993:47;26032:7;26021:9;25993:47;:::i;26051:585::-;26181:4;26187:6;26247:11;26234:25;26341:2;26337:7;26326:8;26310:14;26306:29;26302:43;26282:18;26278:68;26268:96;;26360:1;26357;26350:12;26268:96;26387:33;;26439:20;;;-1:-1:-1;;;;;;26471:30:45;;26468:50;;;26514:1;26511;26504:12;26468:50;26547:4;26535:17;;-1:-1:-1;26606:4:45;26594:17;;26578:14;26574:38;26564:49;;26561:69;;;26626:1;26623;26616:12;26641:248;26735:6;26788:3;26776:9;26767:7;26763:23;26759:33;26756:53;;;26805:1;26802;26795:12;26756:53;26828:55;26875:7;26864:9;26828:55;:::i;26894:207::-;26967:6;27020:2;27008:9;26999:7;26995:23;26991:32;26988:52;;;27036:1;27033;27026:12;26988:52;27059:36;27085:9;27059:36;:::i;27106:211::-;27220:9;27257:54;27296:14;27289:5;27257:54;:::i;27322:127::-;27383:10;27378:3;27374:20;27371:1;27364:31;27414:4;27411:1;27404:15;27438:4;27435:1;27428:15;27454:322;27545:4;27603:11;27590:25;27697:2;27693:7;27682:8;27666:14;27662:29;27658:43;27638:18;27634:68;27624:96;;27716:1;27713;27706:12;27624:96;27737:33;;;;;27454:322;-1:-1:-1;;27454:322:45:o;27781:333::-;27882:4;27940:11;27927:25;28034:3;28030:8;28019;28003:14;27999:29;27995:44;27975:18;27971:69;27961:97;;28054:1;28051;28044:12;28119:217;28237:9;28274:56;28315:14;28308:5;28274:56;:::i;28341:521::-;28418:4;28424:6;28484:11;28471:25;28578:2;28574:7;28563:8;28547:14;28543:29;28539:43;28519:18;28515:68;28505:96;;28597:1;28594;28587:12;28505:96;28624:33;;28676:20;;;-1:-1:-1;;;;;;28708:30:45;;28705:50;;;28751:1;28748;28741:12;28705:50;28784:4;28772:17;;-1:-1:-1;28815:14:45;28811:27;;;28801:38;;28798:58;;;28852:1;28849;28842:12;28867:489;28934:5;28982:4;28970:9;28965:3;28961:19;28957:30;28954:50;;;29000:1;28997;28990:12;28954:50;29033:4;29027:11;29077:4;29069:6;29065:17;29148:6;29136:10;29133:22;-1:-1:-1;;;;;29100:10:45;29097:34;29094:62;29091:88;;;29159:18;;:::i;:::-;29195:4;29188:24;29260:23;;29245:39;;29345:2;29330:18;;;29317:32;29300:15;;;29293:57;;;;-1:-1:-1;29230:6:45;28867:489;-1:-1:-1;28867:489:45:o;29361:1832::-;29607:9;29642:77;29658:60;29711:6;29658:60;:::i;29642:77::-;29741:3;29765:6;29760:3;29753:19;29791:4;29820:2;29815:3;29811:12;29804:19;;29864:6;29861:1;29857:14;29850:5;29846:26;29895:14;29887:6;29884:26;29881:46;;;29923:1;29920;29913:12;29881:46;29947:5;29961:1199;29977:6;29972:3;29969:15;29961:1199;;;30063:3;30050:17;-1:-1:-1;;;;;30086:11:45;30083:35;30080:125;;;30159:1;30188:2;30184;30177:14;30080:125;30228:23;;30293:14;30286:4;30278:13;;30274:34;30264:132;;30350:1;30379:2;30375;30368:14;30264:132;30432:2;30419:16;30461:73;30477:56;30530:2;30477:56;:::i;30461:73::-;30578:17;;;30676:1;30672:10;;;;30664:19;;30660:28;;;30617:14;;;;30717;30704:28;;30701:118;;;30773:1;30802:2;30798;30791:14;30701:118;30845:11;;;;30869:218;30887:8;30880:5;30877:19;30869:218;;;30971:61;31017:14;31010:5;30971:61;:::i;:::-;30964:5;30957:76;31070:2;31063:5;31059:14;31050:23;;30919:4;30912:5;30908:16;30899:25;;30869:218;;;31100:18;;-1:-1:-1;;;31138:12:45;;;;29994;;29961:1199;;;-1:-1:-1;31182:5:45;;29361:1832;-1:-1:-1;;;;;;29361:1832:45:o;31458:584::-;31590:4;31596:6;31656:11;31643:25;31750:2;31746:7;31735:8;31719:14;31715:29;31711:43;31691:18;31687:68;31677:96;;31769:1;31766;31759:12;31677:96;31796:33;;31848:20;;;-1:-1:-1;;;;;;31880:30:45;;31877:50;;;31923:1;31920;31913:12;31877:50;31956:4;31944:17;;-1:-1:-1;32007:1:45;32003:14;;;31987;31983:35;31973:46;;31970:66;;;32032:1;32029;32022:12;33308:127;33369:10;33364:3;33360:20;33357:1;33350:31;33400:4;33397:1;33390:15;33424:4;33421:1;33414:15;33440:168;33480:7;33546:1;33542;33538:6;33534:14;33531:1;33528:21;33523:1;33516:9;33509:17;33505:45;33502:71;;;33553:18;;:::i;:::-;-1:-1:-1;33593:9:45;;33440:168::o;33613:128::-;33653:3;33684:1;33680:6;33677:1;33674:13;33671:39;;;33690:18;;:::i;:::-;-1:-1:-1;33726:9:45;;33613:128::o;33746:125::-;33786:4;33814:1;33811;33808:8;33805:34;;;33819:18;;:::i;:::-;-1:-1:-1;33856:9:45;;33746:125::o;33876:473::-;33941:3;33979:5;33973:12;34006:6;34001:3;33994:19;34032:4;34061:2;34056:3;34052:12;34045:19;;34098:2;34091:5;34087:14;34119:1;34129:195;34143:6;34140:1;34137:13;34129:195;;;34192:50;34238:3;34229:6;34223:13;34192:50;:::i;:::-;34271:4;34262:14;;;;;34299:15;;;;34165:1;34158:9;34129:195;;34354:1410;34744:4;34773:3;34814:2;34803:9;34799:18;34844:6;34833:9;34826:25;34870:2;34908:1;34904;34899:3;34895:11;34891:19;34958:2;34950:6;34946:15;34941:2;34930:9;34926:18;34919:43;34981:2;35019;35014;35003:9;34999:18;34992:30;35042:6;35077;35071:13;35108:6;35100;35093:22;35146:3;35135:9;35131:19;35124:26;;35185:2;35177:6;35173:15;35159:29;;35206:1;35216:414;35230:6;35227:1;35224:13;35216:414;;;35295:6;35289:13;35315:40;35351:3;35346:2;35340:9;35315:40;:::i;:::-;35399:11;;;35393:18;35389:27;;35375:12;;;35368:49;35457:11;;;35451:18;35437:12;;;35430:40;35493:4;35537:11;;;35531:18;35517:12;;;35510:40;35605:15;;;;35570:12;;;;35252:1;35245:9;35216:414;;;35220:3;;35677:9;35672:3;35668:19;35661:4;35650:9;35646:20;35639:49;35705:53;35754:3;35746:6;35705:53;:::i;:::-;35697:61;34354:1410;-1:-1:-1;;;;;;;;;;;;34354:1410:45:o;35769:253::-;35866:6;35919:2;35907:9;35898:7;35894:23;35890:32;35887:52;;;35935:1;35932;35925:12;35887:52;35958:58;36008:7;35997:9;35958:58;:::i;36943:815::-;37005:3;37043:5;37037:12;37070:6;37065:3;37058:19;37096:4;37125:2;37120:3;37116:12;37109:19;;37162:2;37155:5;37151:14;37183:1;37193:540;37207:6;37204:1;37201:13;37193:540;;;37272:6;37266:13;37292:40;37328:3;37323:2;37317:9;37292:40;:::i;:::-;37376:11;;;37370:18;-1:-1:-1;;;;;37366:44:45;37352:12;;;37345:66;37434:4;37478:11;;;37472:18;37458:12;;;37451:40;37514:4;37558:11;;;37552:18;37538:12;;;37531:40;37594:4;37638:11;;;37632:18;37618:12;;;37611:40;37398:3;37671:14;;;;37708:15;;;;37407:1;37222:9;37193:540;;37763:982;37833:3;37871:5;37865:12;37898:6;37893:3;37886:19;37924:4;37953:2;37948:3;37944:12;37937:19;;37990:2;37983:5;37979:14;38011:1;38021:699;38035:6;38032:1;38029:13;38021:699;;;38100:6;38094:13;38120:40;38156:3;38151:2;38145:9;38120:40;:::i;:::-;38199:11;;;38193:18;-1:-1:-1;;;;;38287:21:45;;;38273:12;;;38266:43;38332:4;38376:11;;;38370:18;38356:12;;;38349:40;38412:4;38456:11;;;38450:18;38436:12;;;38429:40;38492:4;38536:11;;;38530:18;38516:12;;;38509:40;38242:3;38620:11;;;38614:18;38610:27;38596:12;;;38589:49;38667:4;38658:14;;;;38695:15;;;;38251:1;38050:9;38021:699;;38750:140;38831:1;38824:5;38821:12;38811:46;;38837:18;;:::i;39017:435::-;39070:3;39108:5;39102:12;39135:6;39130:3;39123:19;39161:4;39190:2;39185:3;39181:12;39174:19;;39227:2;39220:5;39216:14;39248:1;39258:169;39272:6;39269:1;39266:13;39258:169;;;39333:13;;39321:26;;39367:12;;;;39402:15;;;;39294:1;39287:9;39258:169;;39457:135;39533:1;39526:5;39523:12;39513:46;;39539:18;;:::i;39597:1122::-;39666:3;39697;39729:5;39723:12;39756:6;39751:3;39744:19;39782:4;39811:2;39806:3;39802:12;39795:19;;39867:2;39857:6;39854:1;39850:14;39843:5;39839:26;39835:35;39904:2;39897:5;39893:14;39925:1;39935:758;39949:6;39946:1;39943:13;39935:758;;;40036:2;40032:7;40024:5;40018:4;40014:16;40010:30;40005:3;39998:43;40070:6;40064:13;40100:4;40136:2;40130:9;40124:4;40117:23;40187:2;40183;40179:11;40173:18;40204:49;40249:2;40243:4;40239:13;40225:12;40204:49;:::i;:::-;-1:-1:-1;40276:4:45;40321:11;;;40315:18;40300:13;;;40293:41;40357:4;40402:11;;;40396:18;40381:13;;;40374:41;40438:4;40483:11;;;40477:18;40515:13;;;40508:25;;;40554:59;40599:13;;;40477:18;40554:59;:::i;:::-;40671:12;;;;40546:67;-1:-1:-1;;;40636:15:45;;;;39971:1;39964:9;39935:758;;40724:2814;41195:6;41184:9;41177:25;41267:1;41263;41258:3;41254:11;41250:19;41242:6;41238:32;41233:2;41222:9;41218:18;41211:60;41307:3;41302:2;41291:9;41287:18;41280:31;41158:4;41330:3;41368:6;41362:13;41412:3;41406;41395:9;41391:19;41384:32;41425:59;41480:2;41469:9;41465:18;41450:12;41444:19;-1:-1:-1;;;;;12193:31:45;12181:44;;12127:104;41425:59;41539:2;41525:12;41521:21;41515:28;41562:6;41577:54;41627:2;41616:9;41612:18;41596:14;-1:-1:-1;;;;;12193:31:45;12181:44;;12127:104;41577:54;41686:2;41672:12;41668:21;41662:28;41640:50;;41727:2;41721:3;41710:9;41706:19;41699:31;;41753:74;41822:3;41811:9;41807:19;41791:14;41753:74;:::i;:::-;41739:88;;41882:4;41868:12;41864:23;41858:30;41957:3;41953:8;41941:9;41933:6;41929:22;41925:37;41919:3;41908:9;41904:19;41897:66;41986:69;42048:6;42032:14;41986:69;:::i;:::-;41972:83;;;42110:4;42096:12;42092:23;42086:30;42125:62;42182:3;42171:9;42167:19;42151:14;42125:62;:::i;:::-;;42248:3;42234:12;42230:22;42224:29;42218:3;42207:9;42203:19;42196:58;42315:4;42301:12;42297:23;42291:30;42285:3;42274:9;42270:19;42263:59;42383:4;42369:12;42365:23;42359:30;42353:3;42342:9;42338:19;42331:59;42409:6;42476:2;42462:12;42458:21;42452:28;42446:3;42435:9;42431:19;42424:57;42500:6;42567:2;42553:12;42549:21;42543:28;42537:3;42526:9;42522:19;42515:57;42633:2;42619:12;42615:21;42609:28;42603:3;42592:9;42588:19;42581:57;42687:2;42679:6;42675:15;42669:22;42647:44;;42700:56;42750:4;42739:9;42735:20;42719:14;-1:-1:-1;;;;;38961:44:45;38949:57;;38895:117;42700:56;42805:2;42793:15;;42787:22;-1:-1:-1;;;;;38961:44:45;42868:4;42853:20;;38949:57;42923:4;42911:17;;42905:24;42996:22;;;-1:-1:-1;;42992:31:45;;;42972:18;;;42965:59;42905:24;;-1:-1:-1;;;43047:41:45;43000:6;42905:24;43047:41;:::i;:::-;43033:55;;43137:4;43129:6;43125:17;43119:24;43097:46;;43207:2;43195:9;43187:6;43183:22;43179:31;43174:2;43163:9;43159:18;43152:59;;;43231:41;43265:6;43249:14;43231:41;:::i;:::-;43220:52;;;;43319:9;43314:3;43310:19;43303:4;43292:9;43288:20;43281:49;43353:41;43390:3;43382:6;43353:41;:::i;:::-;43339:55;;43444:9;43436:6;43432:22;43425:4;43414:9;43410:20;43403:52;43472:60;43525:6;43517;43472:60;:::i;43830:198::-;43971:2;43956:18;;43983:39;43960:9;44004:6;43983:39;:::i;45014:289::-;45189:6;45178:9;45171:25;45232:2;45227;45216:9;45212:18;45205:30;45152:4;45252:45;45293:2;45282:9;45278:18;45270:6;45252:45;:::i"
            },
            "methodIdentifiers": {
              "cancel((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256)[])": "fd9f1e10",
              "fulfillAdvancedOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes),(uint256,uint8,uint256,uint256,bytes32[])[],bytes32)": "df7b0dac",
              "fulfillAvailableAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)": "fb4c2af9",
              "fulfillAvailableOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)": "ed98a574",
              "fulfillBasicOrder((address,uint256,uint256,address,address,address,uint256,uint256,uint8,uint256,uint256,bytes32,uint256,bytes32,bytes32,uint256,(uint256,address)[],bytes))": "fb0f3ee1",
              "fulfillOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes),bytes32)": "b3a34c4c",
              "getNonce(address)": "2d0335ab",
              "getOrderHash((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256))": "79df72bd",
              "getOrderStatus(bytes32)": "46423aa7",
              "incrementNonce()": "627cdcb9",
              "information()": "f47b7740",
              "matchAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],((uint256,uint256)[],(uint256,uint256)[])[])": "55944a42",
              "matchOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],((uint256,uint256)[],(uint256,uint256)[])[])": "a8174404",
              "name()": "06fdde03",
              "validate(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[])": "88147732"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConsiderationCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CriteriaNotEnabledForItem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InexactFraction\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFulfillmentComponentData\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProof\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"InvalidRestrictedOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MismatchedFulfillmentOfferAndConsiderationComponents\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum Side\",\"name\":\"side\",\"type\":\"uint8\"}],\"name\":\"MissingFulfillmentComponentOnAggregation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferAndConsiderationRequiredOnFulfillment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnresolvedConsiderationCriteria\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnresolvedOfferCriteria\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"NonceIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fulfiller\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct SpentItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct ReceivedItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderComponents[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"cancel\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"cancelled\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"uint120\",\"name\":\"numerator\",\"type\":\"uint120\"},{\"internalType\":\"uint120\",\"name\":\"denominator\",\"type\":\"uint120\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct AdvancedOrder\",\"name\":\"advancedOrder\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"enum Side\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"criteriaProof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct CriteriaResolver[]\",\"name\":\"criteriaResolvers\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"}],\"name\":\"fulfillAdvancedOrder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"fulfilled\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"uint120\",\"name\":\"numerator\",\"type\":\"uint120\"},{\"internalType\":\"uint120\",\"name\":\"denominator\",\"type\":\"uint120\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct AdvancedOrder[]\",\"name\":\"advancedOrders\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"enum Side\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"criteriaProof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct CriteriaResolver[]\",\"name\":\"criteriaResolvers\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[][]\",\"name\":\"offerFulfillments\",\"type\":\"tuple[][]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[][]\",\"name\":\"considerationFulfillments\",\"type\":\"tuple[][]\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"maximumFulfilled\",\"type\":\"uint256\"}],\"name\":\"fulfillAvailableAdvancedOrders\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"availableOrders\",\"type\":\"bool[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ReceivedItem\",\"name\":\"item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct Execution[]\",\"name\":\"executions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Order[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[][]\",\"name\":\"offerFulfillments\",\"type\":\"tuple[][]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[][]\",\"name\":\"considerationFulfillments\",\"type\":\"tuple[][]\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"maximumFulfilled\",\"type\":\"uint256\"}],\"name\":\"fulfillAvailableOrders\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"availableOrders\",\"type\":\"bool[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ReceivedItem\",\"name\":\"item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct Execution[]\",\"name\":\"executions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"considerationToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"considerationIdentifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"offerToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"offerIdentifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"offerAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum BasicOrderType\",\"name\":\"basicOrderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"offererConduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalAdditionalRecipients\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct AdditionalRecipient[]\",\"name\":\"additionalRecipients\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct BasicOrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"}],\"name\":\"fulfillBasicOrder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"fulfilled\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Order\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"}],\"name\":\"fulfillOrder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"fulfilled\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderComponents\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"getOrderHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"getOrderStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isValidated\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isCancelled\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"totalFilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSize\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"incrementNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"information\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"uint120\",\"name\":\"numerator\",\"type\":\"uint120\"},{\"internalType\":\"uint120\",\"name\":\"denominator\",\"type\":\"uint120\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct AdvancedOrder[]\",\"name\":\"advancedOrders\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"enum Side\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"criteriaProof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct CriteriaResolver[]\",\"name\":\"criteriaResolvers\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[]\",\"name\":\"offerComponents\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[]\",\"name\":\"considerationComponents\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Fulfillment[]\",\"name\":\"fulfillments\",\"type\":\"tuple[]\"}],\"name\":\"matchAdvancedOrders\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ReceivedItem\",\"name\":\"item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct Execution[]\",\"name\":\"executions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Order[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[]\",\"name\":\"offerComponents\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[]\",\"name\":\"considerationComponents\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Fulfillment[]\",\"name\":\"fulfillments\",\"type\":\"tuple[]\"}],\"name\":\"matchOrders\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ReceivedItem\",\"name\":\"item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct Execution[]\",\"name\":\"executions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Order[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"validate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"validated\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"0age\",\"custom:coauthor\":\"d1ll0ntransmissions11\",\"custom:version\":\"1\",\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"ConsiderationCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with a consideration item that has not been supplied.\"}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"CriteriaNotEnabledForItem()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with an item that does not expect a criteria to be      resolved.\"}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InexactFraction()\":[{\"details\":\"Revert with an error when attempting to apply a fraction as part of      a partial fill that does not divide the target amount cleanly.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidFulfillmentComponentData()\":[{\"details\":\"Revert with an error when an order or item index are out of range      or a fulfillment component does not match the type, token,      identifier, or conduit preference of the initial consideration item.\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidProof()\":[{\"details\":\"Revert with an error when providing a criteria resolver that      contains an invalid proof with respect to the given item and      chosen identifier.\"}],\"InvalidRestrictedOrder(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that specifies      a restricted submitter as its order type when not submitted by      either the offerrer or the order's zone or approved as valid by the      zone in question via a staticcall to `isValidOrder`.\",\"params\":{\"orderHash\":\"The order hash for the invalid restricted order.\"}}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MismatchedFulfillmentOfferAndConsiderationComponents()\":[{\"details\":\"Revert with an error when the initial offer item named by a      fulfillment component does not match the type, token, identifier,      or conduit preference of the initial consideration item.\"}],\"MissingFulfillmentComponentOnAggregation(uint8)\":[{\"details\":\"Revert with an error when a fulfillment is provided as part of an      call to fulfill available orders that does not declare at least one      component.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OfferAndConsiderationRequiredOnFulfillment()\":[{\"details\":\"Revert with an error when a fulfillment is provided that does not      declare at least one offer component and at least one consideration      component.\"}],\"OfferCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with an offer item that has not been supplied.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order that has not been supplied.\"}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"UnresolvedConsiderationCriteria()\":[{\"details\":\"Revert with an error if a consideration item still has unresolved      criteria after applying all criteria resolvers.\"}],\"UnresolvedOfferCriteria()\":[{\"details\":\"Revert with an error if an offer item still has unresolved criteria      after applying all criteria resolvers.\"}]},\"kind\":\"dev\",\"methods\":{\"cancel((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256)[])\":{\"params\":{\"orders\":\"The orders to cancel.\"},\"returns\":{\"cancelled\":\"A boolean indicating whether the supplied orders have                   been successfully cancelled.\"}},\"constructor\":{\"params\":{\"conduitController\":\"A contract that deploys conduits, or proxies                          that may optionally be used to transfer approved                          ERC20/721/1155 tokens.\"}},\"fulfillAdvancedOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes),(uint256,uint8,uint256,uint256,bytes32[])[],bytes32)\":{\"params\":{\"advancedOrder\":\"The order to fulfill along with the fraction                            of the order to attempt to fill. Note that                            both the offerer and the fulfiller must first                            approve this contract (or their conduit if                            indicated by the order) to transfer any                            relevant tokens on their behalf and that                            contracts must implement `onERC1155Received`                            to receive ERC1155 tokens as consideration.                            Also note that all offer and consideration                            components must have no remainder after                            multiplication of the respective amount with                            the supplied fraction for the partial fill to                            be considered valid.\",\"criteriaResolvers\":\"An array where each element contains a                            reference to a specific offer or                            consideration, a token identifier, and a proof                            that the supplied token identifier is                            contained in the merkle root held by the item                            in question's criteria element. Note that an                            empty criteria indicates that any                            (transferrable) token identifier on the token                            in question is valid and that no associated                            proof needs to be supplied.\",\"fulfillerConduitKey\":\"A bytes32 value indicating what conduit, if                            any, to source the fulfiller's token approvals                            from. The zero hash signifies that no conduit                            should be used (and direct approvals set on                            Consideration).\"},\"returns\":{\"fulfilled\":\"A boolean indicating whether the order has been                   successfully fulfilled.\"}},\"fulfillAvailableAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)\":{\"params\":{\"advancedOrders\":\"The orders to fulfill along with the                                  fraction of those orders to attempt to                                  fill. Note that both the offerer and the                                  fulfiller must first approve this                                  contract (or their conduit if indicated                                  by the order) to transfer any relevant                                  tokens on their behalf and that                                  contracts must implement                                  `onERC1155Received` in order to receive                                  ERC1155 tokens as consideration. Also                                  note that all offer and consideration                                  components must have no remainder after                                  multiplication of the respective amount                                  with the supplied fraction for an                                  order's partial fill amount to be                                  considered valid.\",\"considerationFulfillments\":\"An array of FulfillmentComponent arrays                                  indicating which consideration items to                                  attempt to aggregate when preparing                                  executions.\",\"criteriaResolvers\":\"An array where each element contains a                                  reference to a specific offer or                                  consideration, a token identifier, and a                                  proof that the supplied token identifier                                  is contained in the merkle root held by                                  the item in question's criteria element.                                  Note that an empty criteria indicates                                  that any (transferrable) token                                  identifier on the token in question is                                  valid and that no associated proof needs                                  to be supplied.\",\"fulfillerConduitKey\":\"A bytes32 value indicating what conduit,                                  if any, to source the fulfiller's token                                  approvals from. The zero hash signifies                                  that no conduit should be used (and                                  direct approvals set on Consideration).\",\"maximumFulfilled\":\"The maximum number of orders to fulfill.\",\"offerFulfillments\":\"An array of FulfillmentComponent arrays                                  indicating which offer items to attempt                                  to aggregate when preparing executions.\"},\"returns\":{\"availableOrders\":\"An array of booleans indicating if each order                         with an index corresponding to the index of the                         returned boolean was fulfillable or not.\",\"executions\":\"     An array of elements indicating the sequence of                         transfers performed as part of matching the given                         orders.\"}},\"fulfillAvailableOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)\":{\"params\":{\"considerationFulfillments\":\"An array of FulfillmentComponent arrays                                  indicating which consideration items to                                  attempt to aggregate when preparing                                  executions.\",\"fulfillerConduitKey\":\"A bytes32 value indicating what conduit,                                  if any, to source the fulfiller's token                                  approvals from. The zero hash signifies                                  that no conduit should be used (and                                  direct approvals set on Consideration).\",\"maximumFulfilled\":\"The maximum number of orders to fulfill.\",\"offerFulfillments\":\"An array of FulfillmentComponent arrays                                  indicating which offer items to attempt                                  to aggregate when preparing executions.\",\"orders\":\"The orders to fulfill. Note that both                                  the offerer and the fulfiller must first                                  approve this contract (or the                                  corresponding conduit if indicated) to                                  transfer any relevant tokens on their                                  behalf and that contracts must implement                                  `onERC1155Received` to receive ERC1155                                  tokens as consideration.\"},\"returns\":{\"availableOrders\":\"An array of booleans indicating if each order                         with an index corresponding to the index of the                         returned boolean was fulfillable or not.\",\"executions\":\"     An array of elements indicating the sequence of                         transfers performed as part of matching the given                         orders.\"}},\"fulfillBasicOrder((address,uint256,uint256,address,address,address,uint256,uint256,uint8,uint256,uint256,bytes32,uint256,bytes32,bytes32,uint256,(uint256,address)[],bytes))\":{\"params\":{\"parameters\":\"Additional information on the fulfilled order. Note                   that the offerer and the fulfiller must first approve                   this contract (or their chosen conduit if indicated)                   before any tokens can be transferred. Also note that                   contract recipients of ERC1155 consideration items must                   implement `onERC1155Received` in order to receive those                   items.\"},\"returns\":{\"fulfilled\":\"A boolean indicating whether the order has been                   successfully fulfilled.\"}},\"fulfillOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes),bytes32)\":{\"params\":{\"fulfillerConduitKey\":\"A bytes32 value indicating what conduit, if                            any, to source the fulfiller's token approvals                            from. The zero hash signifies that no conduit                            should be used (and direct approvals set on                            Consideration).\",\"order\":\"The order to fulfill. Note that both the                            offerer and the fulfiller must first approve                            this contract (or the corresponding conduit if                            indicated) to transfer any relevant tokens on                            their behalf and that contracts must implement                            `onERC1155Received` to receive ERC1155 tokens                            as consideration.\"},\"returns\":{\"fulfilled\":\"A boolean indicating whether the order has been                   successfully fulfilled.\"}},\"getNonce(address)\":{\"params\":{\"offerer\":\"The offerer in question.\"},\"returns\":{\"nonce\":\"The current nonce.\"}},\"getOrderHash((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256))\":{\"params\":{\"order\":\"The components of the order.\"},\"returns\":{\"orderHash\":\"The order hash.\"}},\"getOrderStatus(bytes32)\":{\"params\":{\"orderHash\":\"The order hash in question.\"},\"returns\":{\"isCancelled\":\"A boolean indicating whether the order in question                     has been cancelled.\",\"isValidated\":\"A boolean indicating whether the order in question                     has been validated (i.e. previously approved or                     partially filled).\",\"totalFilled\":\"The total portion of the order that has been filled                     (i.e. the \\\"numerator\\\").\",\"totalSize\":\"  The total size of the order that is either filled or                     unfilled (i.e. the \\\"denominator\\\").\"}},\"incrementNonce()\":{\"returns\":{\"newNonce\":\"The new nonce.\"}},\"information()\":{\"returns\":{\"conduitController\":\"The conduit Controller set for this contract.\",\"domainSeparator\":\"  The domain separator for this contract.\",\"version\":\"          The contract version.\"}},\"matchAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],((uint256,uint256)[],(uint256,uint256)[])[])\":{\"params\":{\"advancedOrders\":\"The advanced orders to match. Note that both the                          offerer and fulfiller on each order must first                          approve this contract (or their conduit if                          indicated by the order) to transfer any relevant                          tokens on their behalf and each consideration                          recipient must implement `onERC1155Received` in                          order to receive ERC1155 tokens. Also note that                          the offer and consideration components for each                          order must have no remainder after multiplying                          the respective amount with the supplied fraction                          in order for the group of partial fills to be                          considered valid.\",\"criteriaResolvers\":\"An array where each element contains a reference                          to a specific order as well as that order's                          offer or consideration, a token identifier, and                          a proof that the supplied token identifier is                          contained in the order's merkle root. Note that                          an empty root indicates that any (transferrable)                          token identifier is valid and that no associated                          proof needs to be supplied.\",\"fulfillments\":\"An array of elements allocating offer components                          to consideration components. Note that each                          consideration component must be fully met in                          order for the match operation to be valid.\"},\"returns\":{\"executions\":\"An array of elements indicating the sequence of                    transfers performed as part of matching the given                    orders.\"}},\"matchOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],((uint256,uint256)[],(uint256,uint256)[])[])\":{\"params\":{\"fulfillments\":\"An array of elements allocating offer components                          to consideration components. Note that each                          consideration component must be fully met in                          order for the match operation to be valid.\",\"orders\":\"The orders to match. Note that both the offerer                          and fulfiller on each order must first approve                          this contract (or their conduit if indicated by                          the order) to transfer any relevant tokens on                          their behalf and each consideration recipient                          must implement `onERC1155Received` in order to                          receive ERC1155 tokens.\"},\"returns\":{\"executions\":\"An array of elements indicating the sequence of                    transfers performed as part of matching the given                    orders.\"}},\"name()\":{\"returns\":{\"contractName\":\"The name of this contract.\"}},\"validate(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[])\":{\"params\":{\"orders\":\"The orders to validate.\"},\"returns\":{\"validated\":\"A boolean indicating whether the supplied orders have                   been successfully validated.\"}}},\"title\":\"Consideration\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"cancel((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256)[])\":{\"notice\":\"Cancel an arbitrary number of orders. Note that only the offerer         or the zone of a given order may cancel it. Callers should ensure         that the intended order was cancelled by calling `getOrderStatus`         and confirming that `isCancelled` returns `true`.\"},\"constructor\":{\"notice\":\"Derive and set hashes, reference chainId, and associated domain         separator during deployment.\"},\"fulfillAdvancedOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes),(uint256,uint8,uint256,uint256,bytes32[])[],bytes32)\":{\"notice\":\"Fill an order, fully or partially, with an arbitrary number of         items for offer and consideration alongside criteria resolvers         containing specific token identifiers and associated proofs.\"},\"fulfillAvailableAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)\":{\"notice\":\"Attempt to fill a group of orders, fully or partially, with an         arbitrary number of items for offer and consideration per order         alongside criteria resolvers containing specific token         identifiers and associated proofs. Any order that is not         currently active, has already been fully filled, or has been         cancelled will be omitted. Remaining offer and consideration         items will then be aggregated where possible as indicated by the         supplied offer and consideration component arrays and aggregated         items will be transferred to the fulfiller or to each intended         recipient, respectively. Note that a failing item transfer or an         issue with order formatting will cause the entire batch to fail.\"},\"fulfillAvailableOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)\":{\"notice\":\"Attempt to fill a group of orders, each with an arbitrary number         of items for offer and consideration. Any order that is not         currently active, has already been fully filled, or has been         cancelled will be omitted. Remaining offer and consideration         items will then be aggregated where possible as indicated by the         supplied offer and consideration component arrays and aggregated         items will be transferred to the fulfiller or to each intended         recipient, respectively. Note that a failing item transfer or an         issue with order formatting will cause the entire batch to fail.         Note that this function does not support criteria-based orders or         partial filling of orders (though filling the remainder of a         partially-filled order is supported).\"},\"fulfillBasicOrder((address,uint256,uint256,address,address,address,uint256,uint256,uint8,uint256,uint256,bytes32,uint256,bytes32,bytes32,uint256,(uint256,address)[],bytes))\":{\"notice\":\"Fulfill an order offering an ERC20, ERC721, or ERC1155 item by         supplying Ether (or other native tokens), ERC20 tokens, an ERC721         item, or an ERC1155 item as consideration. Six permutations are         supported: Native token to ERC721, Native token to ERC1155, ERC20         to ERC721, ERC20 to ERC1155, ERC721 to ERC20, and ERC1155 to         ERC20 (with native tokens supplied as msg.value). For an order to         be eligible for fulfillment via this method, it must contain a         single offer item (though that item may have a greater amount if         the item is not an ERC721). An arbitrary number of \\\"additional         recipients\\\" may also be supplied which will each receive native         tokens or ERC20 items from the fulfiller as consideration. Refer         to the documentation for a more comprehensive summary of how to         utilize this method and what orders are compatible with it.\"},\"fulfillOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes),bytes32)\":{\"notice\":\"Fulfill an order with an arbitrary number of items for offer and         consideration. Note that this function does not support         criteria-based orders or partial filling of orders (though         filling the remainder of a partially-filled order is supported).\"},\"getNonce(address)\":{\"notice\":\"Retrieve the current nonce for a given offerer.\"},\"getOrderHash((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256))\":{\"notice\":\"Retrieve the order hash for a given order.\"},\"getOrderStatus(bytes32)\":{\"notice\":\"Retrieve the status of a given order by hash, including whether         the order has been cancelled or validated and the fraction of the         order that has been filled.\"},\"incrementNonce()\":{\"notice\":\"Cancel all orders from a given offerer with a given zone in bulk         by incrementing a nonce. Note that only the offerer may increment         the nonce.\"},\"information()\":{\"notice\":\"Retrieve configuration information for this contract.\"},\"matchAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],((uint256,uint256)[],(uint256,uint256)[])[])\":{\"notice\":\"Match an arbitrary number of full or partial orders, each with an         arbitrary number of items for offer and consideration, supplying         criteria resolvers containing specific token identifiers and         associated proofs as well as fulfillments allocating offer         components to consideration components.\"},\"matchOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],((uint256,uint256)[],(uint256,uint256)[])[])\":{\"notice\":\"Match an arbitrary number of orders, each with an arbitrary         number of items for offer and consideration along with a set of         fulfillments allocating offer components to consideration         components. Note that this function does not support         criteria-based or partial filling of orders (though filling the         remainder of a partially-filled order is supported).\"},\"name()\":{\"notice\":\"Retrieve the name of this contract.\"},\"validate(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[])\":{\"notice\":\"Validate an arbitrary number of orders, thereby registering their         signatures as valid and allowing the fulfiller to skip signature         verification on fulfillment. Note that validated orders may still         be unfulfillable due to invalid item amounts or other factors;         callers should determine whether validated orders are fulfillable         by simulating the fulfillment call prior to execution. Also note         that anyone can validate a signed order, but only the offerer can         validate an order without supplying a signature.\"}},\"notice\":\"Consideration is a generalized ETH/ERC20/ERC721/ERC1155 marketplace.         It minimizes external calls to the greatest extent possible and         provides lightweight methods for common routes as well as more         flexible methods for composing advanced orders or groups of orders.         Each order contains an arbitrary number of items that may be spent         (the \\\"offer\\\") along with an arbitrary number of items that must be         received back by the indicated recipients (the \\\"consideration\\\").\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/Consideration.sol\":\"Consideration\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/Consideration.sol\":{\"keccak256\":\"0x72dedf490027409ade0f9db83dbff651f8cd4364c5fa1e42b8836444318f0cc7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3498b91c5bbc6092b1a89716a39fb624abeb6054d69856fe2e4d3842345aaef5\",\"dweb:/ipfs/QmZMSFfbtTLE4JWwdCaLxDS5VWWrMpYxzhHSPUcesMLUBD\"]},\"seaport/contracts/conduit/lib/ConduitEnums.sol\":{\"keccak256\":\"0x3a9ecf77688f97d1b595be27b49fca3eac93e3f91160d79f0f0063c250fd8aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d596c21d5c7c7b47ca14908cbd7add9c06898c500cf47988446f843c0b28cf96\",\"dweb:/ipfs/QmZf12Y7XHwEWvjd2ZbaUFz4NXsWPFGJF6vNg1HECvXV5m\"]},\"seaport/contracts/conduit/lib/ConduitStructs.sol\":{\"keccak256\":\"0xfd2cec45327e9a6ebc02d7efb9daa1cfdabb26eb803e4b2e9b5e82340d92cfed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea7fa97afdf70ab91449e54f9a4f40e9da16292ab87b86e7e975e6d92f573dc3\",\"dweb:/ipfs/QmaRvo6P8YYPYNgcuP4HVV2wqDuVSB1t6AwMe8jMbcQY3F\"]},\"seaport/contracts/interfaces/AbridgedTokenInterfaces.sol\":{\"keccak256\":\"0x6b4937a65838012d673de632665960836d9b81ce4d90142c02797e4d17361838\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe115b5e3b76cab664b07b242b37221adb36606b114a212798809106c1e0faab\",\"dweb:/ipfs/QmQvEoKtVyYQC5pPoJogvT5yMtumoCffH1Q8BCGLfGzVAM\"]},\"seaport/contracts/interfaces/AmountDerivationErrors.sol\":{\"keccak256\":\"0x1cba27c1c5510ec735e47d5b8f98b50bcf5f96884f8b1a6367987fff7cdc2735\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3394e76c89cd4e558a5a25a8b71e31372ad690f62c45512be98b01cd40948d1b\",\"dweb:/ipfs/QmW2KQeNm7dRXHxYY5SzBVpZxFQ59CkNJqW2LXPdJx3hZX\"]},\"seaport/contracts/interfaces/ConduitControllerInterface.sol\":{\"keccak256\":\"0x86b7ceb6ff7ce653fa7d0d79eeb8b96ec57eedd35f8c87e9838dde6c23f317bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://453fa0365834a50956e513d306371bfb7019124150bf9afd1699599fe6f7852c\",\"dweb:/ipfs/QmXiqKzGdj2A4TsuHtFLTgdLPRFwasbWWibNBRP5cikJod\"]},\"seaport/contracts/interfaces/ConduitInterface.sol\":{\"keccak256\":\"0x6aec074141c2a66f0c06ff006b6b61f5ee3f988c1cee26a51f91e1616af194d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4cda8ec77a8261f3270087331f72443b5dcb686e93297fe9641b757dff108ae1\",\"dweb:/ipfs/QmPuWHXQWuhTUfbe3yB842nS1jRM2iLyJ16rVkDSyLCD2L\"]},\"seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"keccak256\":\"0xf0d0eda6b47217d0e7c2862fdd5d7857cb828f9e0fc52e2c37c6d2b454832a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://374d19e0d9e5ce76e10dce8bada5ee9d1adcd54898c0cba9099d0dd72a5bf996\",\"dweb:/ipfs/QmS49qk49jmkPuMzLbbop5s7eJxbfRzKokQXB2QJjfVPHT\"]},\"seaport/contracts/interfaces/ConsiderationInterface.sol\":{\"keccak256\":\"0x67b79ae6f30efab80173b0dda195b573790b9c470c498b257e7a976c18fefca9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86190d6402279941ce2a139432969de2fe76c31c3751c33690eb2f2a172c2898\",\"dweb:/ipfs/QmW3hqAgXbmQuxKXkfQ5NGK1U1uuoxnzzwEhBM6VKFZYo1\"]},\"seaport/contracts/interfaces/CriteriaResolutionErrors.sol\":{\"keccak256\":\"0x3c63de591ecf89478714308c38953d72b88c7034f9b4ae4605f356a121df969e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a538b46b3ae2bb4331fed4f2936caece352db92694c69255e0a27dcf69243f79\",\"dweb:/ipfs/QmNr2LKznf9kCHL4di5GrjYto1RTD9JgKJv13WT6yqrgNn\"]},\"seaport/contracts/interfaces/EIP1271Interface.sol\":{\"keccak256\":\"0x3c60fdc09b2bc7cb3a615ca82ee1bd776813e75883515efd1e794fe8a3228f29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b17dda7065bffe0ba89c26d413e89c7e7e733f5e74cefba56799ebb57e60908\",\"dweb:/ipfs/QmT2DJBP4WvXYKyFusiSeJ7kbo4UVor4yKCkwEF237CqxZ\"]},\"seaport/contracts/interfaces/FulfillmentApplicationErrors.sol\":{\"keccak256\":\"0x85d34353dec017698bffe508a2cd37970ac35684e9319ca5ce1ec41228313cde\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://304c4f89b90b212a7fed6e29c7f11575c20992845981074e42b6890f86a42808\",\"dweb:/ipfs/QmP1g5tEi8YLbAbFDXGc6Rp37zuQXousunm38bvQbdanu5\"]},\"seaport/contracts/interfaces/ReentrancyErrors.sol\":{\"keccak256\":\"0x9ab27fa5a68f55ad89072ea213c6f12979ae469041ca473d81f800dbdbe9bb48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0cc617da7254d981fd5970d16acc2a6f6fe2fe0bc3e2d0976f7c01a4893430ec\",\"dweb:/ipfs/QmbhqKxfhrfPAjp99LVspxopQG7Mb9L9xdSa38ujCxmvTJ\"]},\"seaport/contracts/interfaces/SignatureVerificationErrors.sol\":{\"keccak256\":\"0xb86f318b159c16087372e12b1e2c37c15fb745be1566bb03812e3814c15fb605\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff051f5cb44654096126c9ec72d1aaebf568e87a01da6200e969e673b8c3e4bf\",\"dweb:/ipfs/QmaPKx8ikPxRzYRubNraLhPdnGmXunZ6WGhzaed18oBi66\"]},\"seaport/contracts/interfaces/TokenTransferrerErrors.sol\":{\"keccak256\":\"0x128fbb0236de5e52c34876c61148e04c12289e92d6bce2270760905617a01b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ed114ea7bf9ce55065d853f0f705eb82cc840672e0c2ab899691ab5703d2e98\",\"dweb:/ipfs/QmXQsajetWBmU7tzjoFm5wyajRKrMMEGXFF7ZQxaH7ZceG\"]},\"seaport/contracts/interfaces/ZoneInteractionErrors.sol\":{\"keccak256\":\"0x7cc23125af35b317beac057bfbe34291f6b2f34f37f7d698f5bc7373b09b4480\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c56917ceed46a2e3029b7daf5331cd6e3a10e3174287c9d2a5cccb5fb6e1568\",\"dweb:/ipfs/QmRdPmvPm2F2hXq4QwXZyavjMis1RmY5XLMZLzM45Cv9hT\"]},\"seaport/contracts/interfaces/ZoneInterface.sol\":{\"keccak256\":\"0x5c5d749fd3de01bd89acf7cb08f11d041b3a600819e18b8a51cebd65285ced46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43788f6ae192a2063f185ccb87853576e4d90ea8f1df19d1334d2e9be62333f3\",\"dweb:/ipfs/QmXSXFPhSNsTv4kvBZbCHwzakoAxvvnvZPSmw7CXg2j1vu\"]},\"seaport/contracts/lib/AmountDeriver.sol\":{\"keccak256\":\"0x2f02fe1e7b22f5ca600416d37f6d3829b10dae8b752ea497ffc2a6a5420ad920\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://978d3a8d7aa0de2d32fde5d25b16f0d43d78d68e8ecefb2d1a80853a10eea806\",\"dweb:/ipfs/Qmam1XT3P6RPYH5tMfNyfm5i5jDrMWYqCArMar9FpDW6ji\"]},\"seaport/contracts/lib/Assertions.sol\":{\"keccak256\":\"0xb2ef1d902d0eefb7aaffc720354dd0352f95442178091f059d31ebe096894586\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6f121104190dd5e5a4e98fcbf024ad300c4b9704768fdb49d81f270c22a8067\",\"dweb:/ipfs/QmWKzhVq1itpqTfeiCELGb1jDcTnBdCwroHgGMzqDuYWN8\"]},\"seaport/contracts/lib/BasicOrderFulfiller.sol\":{\"keccak256\":\"0x6262ae2f6c6a9d6a0da8457160683db0d9868b2caf640b21a1896fece7ec677f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86d3aa0f9ef2940a1c0e12ebe9ae53e4945d488285b14ff930cf311fef4c2c69\",\"dweb:/ipfs/QmRugwrXvDJFXfoWNzSzk4EUQCve4hByRUnfJiusgQGLXb\"]},\"seaport/contracts/lib/ConsiderationBase.sol\":{\"keccak256\":\"0x1015a0bb6fff27278ceec2f76cbf0c775bfb3e8d03cafe8d3549e252e9563ba2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f7d3b48069268df59a77293a7cdc232df35c5b1c8b1974b422a850bedb875f6\",\"dweb:/ipfs/QmSMMnXqsUEWuC1u7BF6coTXK63BXaQYvWqX69doaatKw8\"]},\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]},\"seaport/contracts/lib/CriteriaResolution.sol\":{\"keccak256\":\"0xf65cfc83ff0764d82039c959a9b3bbd09069228882467ab491de64fbcb318a89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5d8cc2ab576be995caf53711b41872f07a8e80d86402380053db8d886924ea06\",\"dweb:/ipfs/QmWi4cS9b1UHX6PJvu59kLEdhp3Gi43crujzfgHNFCc831\"]},\"seaport/contracts/lib/Executor.sol\":{\"keccak256\":\"0x72b4591bebbeb723ad41e9dabd931e4a969a8cff3e6a9b1a82dd2299391834e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3030a05a77aa4375961371f8508327d0a7f102c9b52319a0263a15a498155d70\",\"dweb:/ipfs/QmWr6WFUwJsszCBvMhLUPAz4tz3jTbJzABQwtfRUC5cKzv\"]},\"seaport/contracts/lib/FulfillmentApplier.sol\":{\"keccak256\":\"0x8caa24084d5ee58e8d858bef5cf933cf41d4c94b31b74d3220af0fa73f4ac888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45bdb2fd064cd05b99a980011898bf07c38c847bb2e0d723363d5552a5ccbc87\",\"dweb:/ipfs/QmccTMHU8oe9NdWkJdiEkrRxbL2dw87swZLYT7Tdfr6M8B\"]},\"seaport/contracts/lib/GettersAndDerivers.sol\":{\"keccak256\":\"0xb9d0cf2a84567b6b70e1ddd9e3450dddf8139e5396bcac24c42f46db16228efa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99767431817fd6b157bc199784ca3f3bc2cf024a332ae8e2a5eb7e3db0f2b47d\",\"dweb:/ipfs/QmPWaJet2TPiWc7xEo7QqVpctaLvXPZFep8R8Vi4ZRzzCw\"]},\"seaport/contracts/lib/LowLevelHelpers.sol\":{\"keccak256\":\"0x83085de63b870cfb3940c68d96a40b2cf9afb7280c1afa3034d1c55c80444a94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9ba49a7318a517e836811dfc67989e9f14959a7cd55220853af6b6273309543\",\"dweb:/ipfs/QmUAQr4SReMunUvwBxKPdd8XLPy5GKMEEhPwpD32UYn3kx\"]},\"seaport/contracts/lib/NonceManager.sol\":{\"keccak256\":\"0xe8b6e40830e216912ce483e867151e84cc0b290404220e1ed5fbb69821161f8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4ef49cbc0b5385b64c1f8c9d5cf572dff35ec291970714ef11520de2c01ab9c\",\"dweb:/ipfs/QmfJoNCtAHUYsidmUaiMBP8wMzUYCtg33G8nUqyME5AftL\"]},\"seaport/contracts/lib/OrderCombiner.sol\":{\"keccak256\":\"0x323df1b76c038a4101c9e1627a773ccf85f886678ac486a99b0f64336b5b6023\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28395f3ff6f8cf7419e2050edfaf10996062a500b9942ad49eb0fe3bee3e4ca2\",\"dweb:/ipfs/QmRwwjsTRAhhvpaXJGt98pHghRZbCgzWPbUT29esmcU86h\"]},\"seaport/contracts/lib/OrderFulfiller.sol\":{\"keccak256\":\"0x6710eeff2b52320a330b7b2fbc38d18f58ef1ab8509d818ed8469e8859ef1969\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6991481f10696e4f381c95adc510cfba3d5c973c65eb15b49643282d4059972\",\"dweb:/ipfs/QmPuVVnTxkaY9opZmxsdJpPEogpQccZXG378NFZ6tcJjVm\"]},\"seaport/contracts/lib/OrderValidator.sol\":{\"keccak256\":\"0xeb3e16175a6545c6f320eecc2c2d2e33cf27f30be2e12ae86ad67429b0e14061\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924da093b3d43f0603a8615b6ad2b575d4efe694f0381e3963461159c13fc1ba\",\"dweb:/ipfs/QmVwuoYmZU3BZx8LVfeDdd51geQyS745KLPKx7LuNQiPUz\"]},\"seaport/contracts/lib/ReentrancyGuard.sol\":{\"keccak256\":\"0xec219fb657ce8400835d8d1ff87716247c5fdde51bca31fddf19415abad773db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eca390f7b8fbccc703ad22edd4f35fa896de59912f21d9471d51ef83b961d3c5\",\"dweb:/ipfs/QmXyxcfzgD4SaTtgqGjUjxK4tb76NiPcooMkL9c11yhm2L\"]},\"seaport/contracts/lib/SignatureVerification.sol\":{\"keccak256\":\"0x5833c9bf1ab9c8fbfeb723ff500722e269a1c05b0fe14d8a837e40c88138f4fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0af100e71a40bc871019c7ebd5c786007deacbf58ee98bce204c43811c726dd\",\"dweb:/ipfs/QmSjdy3wSypHCxCdFGZxLFCCRJf7cfVn6MM75KUbj2y3jN\"]},\"seaport/contracts/lib/TokenTransferrer.sol\":{\"keccak256\":\"0xe392cea22226f1b55e35b0295d0cfa156c7764f2509fa416f3946ca748c9605a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddf9b20512bc36f5bbe25f56729aa31a139b1560dfc14beb42d5d09ae8d44b48\",\"dweb:/ipfs/QmSN9GdbtqBcobRSd8kSCxn2GScZhiiAbuxk5djmkatKRD\"]},\"seaport/contracts/lib/TokenTransferrerConstants.sol\":{\"keccak256\":\"0x5ecc368039fd81cc27788a664538ab63f1b5deb9caa8839d9499fadfd1d465cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0e821e5fd5a31cdcaaf334203dd58d80489c1aed2fd2a91a9683a9e342c9653\",\"dweb:/ipfs/QmRKkHF5aLKJ8KrMmMoV9UsCtgtrCQYgeptGK4jKVGM68j\"]},\"seaport/contracts/lib/Verifiers.sol\":{\"keccak256\":\"0x69755b486d816164270d1b37c187ea7a3ce262e9d31153a88279fe6d8cb76cd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://16dc060d4321a17cdcbf1125b076bb9bbf75086a57d7c6eeca7e9845fcd6d76e\",\"dweb:/ipfs/QmSnF21ffxHnfiYRVVRopn2EcJagghQZTTcdDvMoiR9fsM\"]},\"seaport/contracts/lib/ZoneInteraction.sol\":{\"keccak256\":\"0xbabb8f6c0659327e9ae9711d63c0d81f49789c32d1987170d772dac5bd9c0b48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ee495283ba0709d674062d80a6bcba9f54eed8d132283e500980fa63ac5dc217\",\"dweb:/ipfs/QmWQegpmWwk6dNxBpmXpVmPAq6LtQhDKUja9ewHeMsA1rM\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/Seaport.sol": {
        "Seaport": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduitController",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "BadContractSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "BadFraction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BadReturnValueFromERC20OnTransfer",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                }
              ],
              "name": "BadSignatureV",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ConsiderationCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "orderIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "considerationIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "shortfallAmount",
                  "type": "uint256"
                }
              ],
              "name": "ConsiderationNotMet",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "CriteriaNotEnabledForItem",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "identifiers",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "ERC1155BatchTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "EtherTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InexactFraction",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InsufficientEtherSupplied",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidBasicOrderParameterEncoding",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidCallToConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidCanceller",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidERC721TransferAmount",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidFulfillmentComponentData",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "InvalidMsgValue",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidProof",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "InvalidRestrictedOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSigner",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidTime",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MismatchedFulfillmentOfferAndConsiderationComponents",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "enum Side",
                  "name": "side",
                  "type": "uint8"
                }
              ],
              "name": "MissingFulfillmentComponentOnAggregation",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingItemAmount",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingOriginalConsiderationItems",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "NoContract",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoReentrantCalls",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoSpecifiedOrdersAvailable",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OfferAndConsiderationRequiredOnFulfillment",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OfferCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderAlreadyFilled",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OrderCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderIsCancelled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderPartiallyFilled",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "PartialFillsNotEnabledForOrder",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "identifier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnresolvedConsiderationCriteria",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnresolvedOfferCriteria",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                }
              ],
              "name": "NonceIncremented",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderCancelled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fulfiller",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct SpentItem[]",
                  "name": "offer",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address payable",
                      "name": "recipient",
                      "type": "address"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct ReceivedItem[]",
                  "name": "consideration",
                  "type": "tuple[]"
                }
              ],
              "name": "OrderFulfilled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderValidated",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "zone",
                      "type": "address"
                    },
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifierOrCriteria",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endAmount",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OfferItem[]",
                      "name": "offer",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifierOrCriteria",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ConsiderationItem[]",
                      "name": "consideration",
                      "type": "tuple[]"
                    },
                    {
                      "internalType": "enum OrderType",
                      "name": "orderType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "endTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "zoneHash",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "salt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "nonce",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct OrderComponents[]",
                  "name": "orders",
                  "type": "tuple[]"
                }
              ],
              "name": "cancel",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "cancelled",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "uint120",
                      "name": "numerator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "uint120",
                      "name": "denominator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "extraData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct AdvancedOrder",
                  "name": "advancedOrder",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "enum Side",
                      "name": "side",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "index",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32[]",
                      "name": "criteriaProof",
                      "type": "bytes32[]"
                    }
                  ],
                  "internalType": "struct CriteriaResolver[]",
                  "name": "criteriaResolvers",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bytes32",
                  "name": "fulfillerConduitKey",
                  "type": "bytes32"
                }
              ],
              "name": "fulfillAdvancedOrder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "fulfilled",
                  "type": "bool"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "uint120",
                      "name": "numerator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "uint120",
                      "name": "denominator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "extraData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct AdvancedOrder[]",
                  "name": "advancedOrders",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "enum Side",
                      "name": "side",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "index",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32[]",
                      "name": "criteriaProof",
                      "type": "bytes32[]"
                    }
                  ],
                  "internalType": "struct CriteriaResolver[]",
                  "name": "criteriaResolvers",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "itemIndex",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct FulfillmentComponent[][]",
                  "name": "offerFulfillments",
                  "type": "tuple[][]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "itemIndex",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct FulfillmentComponent[][]",
                  "name": "considerationFulfillments",
                  "type": "tuple[][]"
                },
                {
                  "internalType": "bytes32",
                  "name": "fulfillerConduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "maximumFulfilled",
                  "type": "uint256"
                }
              ],
              "name": "fulfillAvailableAdvancedOrders",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "availableOrders",
                  "type": "bool[]"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifier",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ReceivedItem",
                      "name": "item",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct Execution[]",
                  "name": "executions",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Order[]",
                  "name": "orders",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "itemIndex",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct FulfillmentComponent[][]",
                  "name": "offerFulfillments",
                  "type": "tuple[][]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "itemIndex",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct FulfillmentComponent[][]",
                  "name": "considerationFulfillments",
                  "type": "tuple[][]"
                },
                {
                  "internalType": "bytes32",
                  "name": "fulfillerConduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "maximumFulfilled",
                  "type": "uint256"
                }
              ],
              "name": "fulfillAvailableOrders",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "availableOrders",
                  "type": "bool[]"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifier",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ReceivedItem",
                      "name": "item",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct Execution[]",
                  "name": "executions",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "considerationToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "considerationIdentifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "considerationAmount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address payable",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "zone",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "offerToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "offerIdentifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "offerAmount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "enum BasicOrderType",
                      "name": "basicOrderType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "endTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "zoneHash",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "salt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "offererConduitKey",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "fulfillerConduitKey",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "totalOriginalAdditionalRecipients",
                      "type": "uint256"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct AdditionalRecipient[]",
                      "name": "additionalRecipients",
                      "type": "tuple[]"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct BasicOrderParameters",
                  "name": "parameters",
                  "type": "tuple"
                }
              ],
              "name": "fulfillBasicOrder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "fulfilled",
                  "type": "bool"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Order",
                  "name": "order",
                  "type": "tuple"
                },
                {
                  "internalType": "bytes32",
                  "name": "fulfillerConduitKey",
                  "type": "bytes32"
                }
              ],
              "name": "fulfillOrder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "fulfilled",
                  "type": "bool"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                }
              ],
              "name": "getNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "zone",
                      "type": "address"
                    },
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifierOrCriteria",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endAmount",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OfferItem[]",
                      "name": "offer",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifierOrCriteria",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ConsiderationItem[]",
                      "name": "consideration",
                      "type": "tuple[]"
                    },
                    {
                      "internalType": "enum OrderType",
                      "name": "orderType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "endTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "zoneHash",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "salt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "nonce",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct OrderComponents",
                  "name": "order",
                  "type": "tuple"
                }
              ],
              "name": "getOrderHash",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "getOrderStatus",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isValidated",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "isCancelled",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "totalFilled",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalSize",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "incrementNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "information",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "version",
                  "type": "string"
                },
                {
                  "internalType": "bytes32",
                  "name": "domainSeparator",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "conduitController",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "uint120",
                      "name": "numerator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "uint120",
                      "name": "denominator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "extraData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct AdvancedOrder[]",
                  "name": "advancedOrders",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "enum Side",
                      "name": "side",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "index",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32[]",
                      "name": "criteriaProof",
                      "type": "bytes32[]"
                    }
                  ],
                  "internalType": "struct CriteriaResolver[]",
                  "name": "criteriaResolvers",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "orderIndex",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "itemIndex",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct FulfillmentComponent[]",
                      "name": "offerComponents",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "orderIndex",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "itemIndex",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct FulfillmentComponent[]",
                      "name": "considerationComponents",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct Fulfillment[]",
                  "name": "fulfillments",
                  "type": "tuple[]"
                }
              ],
              "name": "matchAdvancedOrders",
              "outputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifier",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ReceivedItem",
                      "name": "item",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct Execution[]",
                  "name": "executions",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Order[]",
                  "name": "orders",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "orderIndex",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "itemIndex",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct FulfillmentComponent[]",
                      "name": "offerComponents",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "orderIndex",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "itemIndex",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct FulfillmentComponent[]",
                      "name": "considerationComponents",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct Fulfillment[]",
                  "name": "fulfillments",
                  "type": "tuple[]"
                }
              ],
              "name": "matchOrders",
              "outputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifier",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ReceivedItem",
                      "name": "item",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct Execution[]",
                  "name": "executions",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "contractName",
                  "type": "string"
                }
              ],
              "stateMutability": "pure",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Order[]",
                  "name": "orders",
                  "type": "tuple[]"
                }
              ],
              "name": "validate",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "validated",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_2519": {
                  "entryPoint": null,
                  "id": 2519,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_2625": {
                  "entryPoint": null,
                  "id": 2625,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_31": {
                  "entryPoint": null,
                  "id": 31,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_3225": {
                  "entryPoint": null,
                  "id": 3225,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_425": {
                  "entryPoint": null,
                  "id": 425,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_4482": {
                  "entryPoint": null,
                  "id": 4482,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_5345": {
                  "entryPoint": null,
                  "id": 5345,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_5599": {
                  "entryPoint": null,
                  "id": 5599,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_6579": {
                  "entryPoint": null,
                  "id": 6579,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_7098": {
                  "entryPoint": null,
                  "id": 7098,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_7733": {
                  "entryPoint": null,
                  "id": 7733,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_8248": {
                  "entryPoint": null,
                  "id": 8248,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_deriveDomainSeparator_3247": {
                  "entryPoint": null,
                  "id": 3247,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_deriveTypehashes_3383": {
                  "entryPoint": 306,
                  "id": 3383,
                  "parameterSlots": 0,
                  "returnSlots": 6
                },
                "@_nameString_444": {
                  "entryPoint": null,
                  "id": 444,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1474,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_bytes32_fromMemory": {
                  "entryPoint": 1524,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_bytes": {
                  "entryPoint": 1561,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_59d7": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_cfcd": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1623,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7686:45",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:45",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:45",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:45",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:45"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:45",
                            "type": ""
                          }
                        ],
                        "src": "14:290:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "407:147:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "453:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "462:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "465:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "455:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "455:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "455:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "428:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "437:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "424:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "424:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "449:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "420:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "420:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "417:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "478:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "494:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "488:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "488:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "478:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "513:35:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "533:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "544:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "529:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "529:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:25:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "365:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "376:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "388:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "396:6:45",
                            "type": ""
                          }
                        ],
                        "src": "309:245:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "614:59:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "631:3:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "636:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "624:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "624:16:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "624:16:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "649:18:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "660:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "665:1:45",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "656:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "656:11:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "649:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_59d7",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "598:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "606:3:45",
                            "type": ""
                          }
                        ],
                        "src": "559:114:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1476:365:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1493:3:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1498:12:45",
                                    "type": "",
                                    "value": "OfferItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1486:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1486:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1486:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1531:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1536:2:45",
                                        "type": "",
                                        "value": "10"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1527:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1527:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1541:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1520:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1520:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1520:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1579:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1584:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1575:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1575:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1589:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1568:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1568:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1568:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1626:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1631:2:45",
                                        "type": "",
                                        "value": "39"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1622:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1622:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1636:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1615:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1615:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1615:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1688:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1693:2:45",
                                        "type": "",
                                        "value": "68"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1684:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1684:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1698:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1677:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1677:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1677:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1741:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1746:2:45",
                                        "type": "",
                                        "value": "88"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1737:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1737:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1751:19:45",
                                    "type": "",
                                    "value": "uint256 endAmount"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1730:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1730:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1730:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1791:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1796:3:45",
                                        "type": "",
                                        "value": "105"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1787:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1787:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1802:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1780:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1780:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1780:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1815:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1826:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1831:3:45",
                                    "type": "",
                                    "value": "106"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1822:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1822:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1815:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1460:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1468:3:45",
                            "type": ""
                          }
                        ],
                        "src": "678:1163:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2745:425:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2762:3:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2767:20:45",
                                    "type": "",
                                    "value": "ConsiderationItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2755:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2755:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2755:33:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2808:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2813:2:45",
                                        "type": "",
                                        "value": "18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2804:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2804:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2818:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2797:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2797:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2797:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2856:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2861:2:45",
                                        "type": "",
                                        "value": "33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2852:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2852:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2866:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2845:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2845:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2845:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2903:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2908:2:45",
                                        "type": "",
                                        "value": "47"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2899:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2899:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2913:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2892:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2892:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2892:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2965:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2970:2:45",
                                        "type": "",
                                        "value": "76"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2961:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2961:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2975:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2954:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2954:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2954:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3018:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3023:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3014:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3014:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3028:20:45",
                                    "type": "",
                                    "value": "uint256 endAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3007:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3007:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3007:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3069:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3074:3:45",
                                        "type": "",
                                        "value": "114"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3065:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3065:13:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320726563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3080:19:45",
                                    "type": "",
                                    "value": "address recipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3058:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3058:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3058:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3120:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3125:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3116:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3116:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3131:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3109:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3109:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3109:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3144:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3155:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3160:3:45",
                                    "type": "",
                                    "value": "132"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3151:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3151:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3144:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2729:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2737:3:45",
                            "type": ""
                          }
                        ],
                        "src": "1846:1324:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3230:78:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3247:3:45"
                                  },
                                  {
                                    "hexValue": "6279746573333220636f6e647569744b65792c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3252:21:45",
                                    "type": "",
                                    "value": "bytes32 conduitKey,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3240:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3240:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3240:34:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3283:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3294:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3299:2:45",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3290:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3290:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_cfcd",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3214:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3222:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3175:133:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3363:72:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3380:3:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206e6f6e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3385:15:45",
                                    "type": "",
                                    "value": "uint256 nonce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3373:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3373:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3373:28:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3410:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3421:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3426:2:45",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3417:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3417:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3410:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3347:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3355:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3313:122:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4844:659:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4861:3:45"
                                  },
                                  {
                                    "hexValue": "4f72646572436f6d706f6e656e747328",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4866:18:45",
                                    "type": "",
                                    "value": "OrderComponents("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4854:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4854:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4854:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4905:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4910:2:45",
                                        "type": "",
                                        "value": "16"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4901:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4901:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373206f6666657265722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4915:18:45",
                                    "type": "",
                                    "value": "address offerer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4894:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4894:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4894:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4954:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4959:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4950:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4950:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373207a6f6e652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4964:15:45",
                                    "type": "",
                                    "value": "address zone,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4943:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4943:37:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4943:37:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5000:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5005:2:45",
                                        "type": "",
                                        "value": "45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4996:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4996:12:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d5b5d206f666665722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5010:20:45",
                                    "type": "",
                                    "value": "OfferItem[] offer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4989:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4989:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4989:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5051:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5056:2:45",
                                        "type": "",
                                        "value": "63"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5047:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5047:12:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5061:34:45",
                                    "type": "",
                                    "value": "ConsiderationItem[] consideratio"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5040:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5040:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5040:56:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5116:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5121:2:45",
                                        "type": "",
                                        "value": "95"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5112:12:45"
                                  },
                                  {
                                    "hexValue": "6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5126:4:45",
                                    "type": "",
                                    "value": "n,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5105:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5105:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5105:26:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5151:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5156:2:45",
                                        "type": "",
                                        "value": "97"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5147:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5147:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206f72646572547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5161:18:45",
                                    "type": "",
                                    "value": "uint8 orderType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5140:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5140:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5140:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5200:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5205:3:45",
                                        "type": "",
                                        "value": "113"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5196:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5196:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620737461727454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5211:20:45",
                                    "type": "",
                                    "value": "uint256 startTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5189:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5189:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5189:43:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5252:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5257:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5248:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5248:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e6454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5263:18:45",
                                    "type": "",
                                    "value": "uint256 endTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5241:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5241:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5241:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5302:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5307:3:45",
                                        "type": "",
                                        "value": "147"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5298:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5298:13:45"
                                  },
                                  {
                                    "hexValue": "62797465733332207a6f6e65486173682c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5313:19:45",
                                    "type": "",
                                    "value": "bytes32 zoneHash,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5291:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5291:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5291:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5353:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5358:3:45",
                                        "type": "",
                                        "value": "164"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5349:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5349:13:45"
                                  },
                                  {
                                    "hexValue": "75696e743235362073616c742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5364:15:45",
                                    "type": "",
                                    "value": "uint256 salt,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5342:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5342:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5342:38:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5389:108:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "5485:3:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5490:3:45",
                                                "type": "",
                                                "value": "177"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5481:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5481:13:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_stringliteral_cfcd",
                                          "nodeType": "YulIdentifier",
                                          "src": "5451:29:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5451:44:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_stringliteral",
                                      "nodeType": "YulIdentifier",
                                      "src": "5426:24:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5426:70:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_stringliteral_59d7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5396:29:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5396:101:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5389:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4828:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4836:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3440:2063:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6205:306:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6222:3:45"
                                  },
                                  {
                                    "hexValue": "454950373132446f6d61696e28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6227:15:45",
                                    "type": "",
                                    "value": "EIP712Domain("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6215:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6215:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6215:28:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6263:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6268:2:45",
                                        "type": "",
                                        "value": "13"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6259:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6259:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e67206e616d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6273:14:45",
                                    "type": "",
                                    "value": "string name,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6252:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6252:36:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6252:36:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6308:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6313:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6304:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6304:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e672076657273696f6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6318:17:45",
                                    "type": "",
                                    "value": "string version,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6297:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6297:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6297:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6356:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6361:2:45",
                                        "type": "",
                                        "value": "40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6352:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6352:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620636861696e49642c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6366:18:45",
                                    "type": "",
                                    "value": "uint256 chainId,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6345:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6345:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6345:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6405:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6410:2:45",
                                        "type": "",
                                        "value": "56"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6401:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6401:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320766572696679696e67436f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6415:27:45",
                                    "type": "",
                                    "value": "address verifyingContract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6394:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6394:49:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6394:49:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6463:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6468:2:45",
                                        "type": "",
                                        "value": "81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6459:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6459:12:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6473:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6452:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6452:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6452:25:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6486:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6497:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6502:2:45",
                                    "type": "",
                                    "value": "82"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6493:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6493:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6486:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6189:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6197:3:45",
                            "type": ""
                          }
                        ],
                        "src": "5508:1003:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6565:287:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6575:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6595:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6589:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6589:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6579:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6610:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6619:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6614:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6681:76:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6706:3:45"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "6711:1:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6702:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6702:11:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6729:5:45"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6736:1:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6725:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6725:13:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "6740:4:45",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6721:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6721:24:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6715:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6715:31:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6695:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6695:52:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6695:52:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6640:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6643:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6637:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6637:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6651:21:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6653:17:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6662:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6665:4:45",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6658:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6658:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6653:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6633:3:45",
                                "statements": []
                              },
                              "src": "6629:128:45"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6783:31:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6796:3:45"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "6801:6:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6792:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6792:16:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6810:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6785:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6785:27:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6785:27:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6772:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6775:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6769:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6769:13:45"
                              },
                              "nodeType": "YulIf",
                              "src": "6766:48:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6823:23:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6834:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6839:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6830:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6830:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6823:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6542:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6549:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6557:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6516:336:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7086:104:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7096:88:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7120:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7145:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "7170:6:45"
                                          },
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "7178:3:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_bytes",
                                          "nodeType": "YulIdentifier",
                                          "src": "7153:16:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7153:29:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "7128:16:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7128:55:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "7103:16:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7103:81:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7096:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7046:3:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7051:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7059:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7067:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7078:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6857:333:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7408:276:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7418:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7430:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7441:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7426:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7426:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7418:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7461:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7472:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7454:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7454:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7454:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7499:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7510:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7495:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7495:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7515:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7488:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7488:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7488:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7542:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7553:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7538:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7538:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7558:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7531:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7531:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7531:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7585:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7596:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7581:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7581:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7601:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7574:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7574:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7574:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7628:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7639:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7624:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7624:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7649:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7665:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7670:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "7661:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7661:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7674:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "7657:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7657:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7645:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7645:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7617:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7617:61:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7617:61:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7345:9:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7356:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7364:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7372:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7380:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7388:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7399:4:45",
                            "type": ""
                          }
                        ],
                        "src": "7195:489:45"
                      }
                    ]
                  },
                  "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 abi_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OfferItem(\")\n        mstore(add(pos, 10), \"uint8 itemType,\")\n        mstore(add(pos, 25), \"address token,\")\n        mstore(add(pos, 39), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 68), \"uint256 startAmount,\")\n        mstore(add(pos, 88), \"uint256 endAmount\")\n        mstore(add(pos, 105), \")\")\n        end := add(pos, 106)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"ConsiderationItem(\")\n        mstore(add(pos, 18), \"uint8 itemType,\")\n        mstore(add(pos, 33), \"address token,\")\n        mstore(add(pos, 47), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 76), \"uint256 startAmount,\")\n        mstore(add(pos, 96), \"uint256 endAmount,\")\n        mstore(add(pos, 114), \"address recipient\")\n        mstore(add(pos, 131), \")\")\n        end := add(pos, 132)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral(pos) -> end\n    {\n        mstore(pos, \"uint256 nonce\")\n        end := add(pos, 13)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address zone,\")\n        mstore(add(pos, 45), \"OfferItem[] offer,\")\n        mstore(add(pos, 63), \"ConsiderationItem[] consideratio\")\n        mstore(add(pos, 95), \"n,\")\n        mstore(add(pos, 97), \"uint8 orderType,\")\n        mstore(add(pos, 113), \"uint256 startTime,\")\n        mstore(add(pos, 131), \"uint256 endTime,\")\n        mstore(add(pos, 147), \"bytes32 zoneHash,\")\n        mstore(add(pos, 164), \"uint256 salt,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral(abi_encode_stringliteral_cfcd(add(pos, 177))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value, i), 0x20)))\n        }\n        if gt(i, length) { mstore(add(pos, length), 0) }\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        end := abi_encode_bytes(value2, abi_encode_bytes(value1, abi_encode_bytes(value0, pos)))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}",
                  "id": 45,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101c06040523480156200001257600080fd5b5060405162005b6438038062005b648339810160408190526200003591620005c2565b808080808080808080806200004962000132565b610120526101005260e05260c081815260a0838152608085815246610140819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610160526001600160a01b03811661018081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa158015620000f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001169190620005f4565b506101a052505060016000555062000684975050505050505050565b600080808080806200015e60408051808201909152600781526614d9585c1bdc9d60ca1b602082015290565b805160209182012060408051808201825260018152603160f81b90840152519097507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc696506000916200026191016909ecccccae492e8cada560b31b81526e1d5a5b9d0e081a5d195b551e5c194b608a1b600a8201526d1859191c995cdcc81d1bdad95b8b60921b60198201527f75696e74323536206964656e7469666965724f7243726974657269612c00000060278201527f75696e74323536207374617274416d6f756e742c0000000000000000000000006044820152701d5a5b9d0c8d4d88195b99105b5bdd5b9d607a1b6058820152602960f81b6069820152606a0190565b60408051601f1981840301815282825271086dedce6d2c8cae4c2e8d2dedc92e8cada560731b60208401526e1d5a5b9d0e081a5d195b551e5c194b608a1b60328401526d1859191c995cdcc81d1bdad95b8b60921b60418401527f75696e74323536206964656e7469666965724f7243726974657269612c000000604f8401527f75696e74323536207374617274416d6f756e742c000000000000000000000000606c840152711d5a5b9d0c8d4d88195b99105b5bdd5b9d0b60721b6080840152701859191c995cdcc81c9958da5c1a595b9d607a1b6092840152602960f81b60a384018190528251808503608401815260a485019093526f09ee4c8cae486dedae0dedccadce8e6560831b60c48501526f1859191c995cdcc81bd999995c995c8b60821b60d48501526c1859191c995cdcc81e9bdb994b609a1b60e48501527113d999995c925d195b56d7481bd999995c8b60721b60f18501527f436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f610103850152611b8b60f21b6101238501526f1d5a5b9d0e081bdc99195c951e5c194b60821b610125850152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b6101358501526f1d5a5b9d0c8d4d88195b99151a5b594b60821b61014785015270189e5d195ccccc881e9bdb9952185cda0b607a1b6101578501526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101688501527f6279746573333220636f6e647569744b65792c000000000000000000000000006101758501526c75696e74323536206e6f6e636560981b6101888501526101958401529250906000906101960160408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b6071830152915060720160408051601f19818403018152908290528051602091820120855186830120855186840120919a50985096506200059f918391859187910162000657565b604051602081830303815290604052805190602001209350505050909192939495565b600060208284031215620005d557600080fd5b81516001600160a01b0381168114620005ed57600080fd5b9392505050565b600080604083850312156200060857600080fd5b505080516020909101519092909150565b6000815160005b818110156200063c576020818501810151868301520162000620565b818111156200064c576000828601525b509290920192915050565b60006200067b620006746200066d848862000619565b8662000619565b8462000619565b95945050505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516154486200071c600039600061353f015260008181610d6c015261351301526000612323015260006122530152600081816108a3015261253b01526000818161083201526123990152600081816107cb01526124b401526000612281015260006122cf015260006122a701526154486000f3fe6080604052600436106100e85760003560e01c8063a81744041161008a578063f47b774011610059578063f47b7740146102c7578063fb0f3ee1146102eb578063fb4c2af9146102fe578063fd9f1e101461031157600080fd5b8063a81744041461026d578063b3a34c4c14610280578063df7b0dac14610293578063ed98a574146102a657600080fd5b806355944a42116100c657806355944a42146101e8578063627cdcb91461020857806379df72bd1461021d578063881477321461023d57600080fd5b806306fdde03146100ed5780632d0335ab1461011857806346423aa714610146575b600080fd5b3480156100f957600080fd5b50610102610331565b60405161010f9190613fde565b60405180910390f35b34801561012457600080fd5b50610138610133366004614016565b610340565b60405190815260200161010f565b34801561015257600080fd5b506101c6610161366004614033565b6000908152600260209081526040918290208251608081018452905460ff8082161515808452610100830490911615159383018490526001600160781b036201000083048116958401869052600160881b909204909116606090920182905293919291565b604080519415158552921515602085015291830152606082015260800161010f565b6101fb6101f63660046145dd565b610360565b60405161010f919061473f565b34801561021457600080fd5b50610138610381565b34801561022957600080fd5b50610138610238366004614752565b61038b565b34801561024957600080fd5b5061025d61025836600461478d565b61051c565b604051901515815260200161010f565b6101fb61027b3660046147ce565b61052f565b61025d61028e366004614839565b6105ad565b61025d6102a1366004614882565b61061e565b6102b96102b43660046148f9565b61063c565b60405161010f9291906149a1565b3480156102d357600080fd5b506102dc6106c5565b60405161010f939291906149f0565b61025d6102f9366004614a23565b6106dd565b6102b961030c366004614a5e565b6106e8565b34801561031d57600080fd5b5061025d61032c36600461478d565b610716565b606061033b610722565b905090565b6001600160a01b0381166000908152600160205260408120545b92915050565b6060610377866103708688614b2e565b858561073b565b9695505050505050565b600061033b610756565b60408051610160810190915260009061035a90806103ac6020860186614016565b6001600160a01b031681526020018460200160208101906103cd9190614016565b6001600160a01b031681526020016103e86040860186614c62565b808060200260200160405190810160405280939291908181526020016000905b828210156104345761042560a08302860136819003810190614caa565b81526020019060010190610408565b505050918352505060200161044c6060860186614cc6565b808060200260200160405190810160405280939291908181526020016000905b828210156104985761048960c08302860136819003810190614d0e565b8152602001906001019061046c565b50505091835250506020016104b360a0860160808701614d2a565b60038111156104c4576104c4614671565b81526020018460a0013581526020018460c0013581526020018460e0013581526020018461010001358152602001846101200135815260200184806060019061050d9190614cc6565b909152506101408401356107b3565b600061052883836108f9565b9392505050565b60606105a261053e8686610ab5565b604080516000808252602082019092529061059a565b6105876040805160a081019091526000808252602082019081526020016000815260200160008152602001606081525090565b8152602001906001900390816105545790505b50858561073b565b90505b949350505050565b60006105286105bb84610b70565b6040805160008082526020820190925290610617565b6106046040805160a081019091526000808252602082019081526020016000815260200160008152602001606081525090565b8152602001906001900390816105d15790505b5084610c1b565b60006105a261062c86614d45565b6106368587614b2e565b84610c1b565b6060806106b461064c8b8b610ab5565b60408051600080825260208201909252906106a8565b6106956040805160a081019091526000808252602082019081526020016000815260200160008152602001606081525090565b8152602001906001900390816106625790505b508a8a8a8a8a8a610d0c565b915091509850989650505050505050565b60606000806106d2610d4b565b925092509250909192565b600061035a82610daa565b6060806107048b6106f98b8d614b2e565b8a8a8a8a8a8a610d0c565b91509150995099975050505050505050565b60006105288383611044565b606060206000526707536561706f727460275260606000f35b606061074b858560018851611245565b6105a285848461155c565b6000610760611687565b503360008181526001602081815260409283902080549092019182905591518181529092917f7ab0fc7de8910a6100b24df423c3d0835534506dca9473d30c3e7df51241b2cf910160405180910390a290565b610140820151604080519084015180516000939284927f000000000000000000000000000000000000000000000000000000000000000092602090910190845b81811015610820578251601f1901805186825260c0822086529052602093840193909201916001016107f3565b506020810260405120945050505060007f00000000000000000000000000000000000000000000000000000000000000009150604051602060608901510160005b8681101561088e578151601f1901805186825260e082208552905260209283019290910190600101610861565b505060408051602087029020601f198a0180517f00000000000000000000000000000000000000000000000000000000000000008252928b01805197815260608c018051938152610140909c019a8b5261018082209390915295909552939097525050925250919050565b6000610903611687565b60008083815b81811015610aa8573687878381811061092457610924614d51565b90506020028101906109369190614d67565b9050366109438280614d87565b90506109526020820182614016565b945061096561096082614d9e565b6116ac565b60008181526002602090815260408083208151608081018352905460ff808216151583526101008204161515938201939093526001600160781b03620100008404811692820192909252600160881b9092041660608201529197506109cf908890839060016116e7565b508051610a9a57610a2286886109e86020870187614daa565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117a092505050565b600087815260026020908152604091829020805460ff19166001179055610a4d918401908401614016565b6001600160a01b0316866001600160a01b03167ffde361574a066b44b3b5fe98a87108b7565e327327954c4faeea56a4e6491a0a89604051610a9191815260200190565b60405180910390a35b836001019350505050610909565b5060019695505050505050565b606081806001600160401b03811115610ad057610ad061404c565b604051908082528060200260200182016040528015610b0957816020015b610af6613e9d565b815260200190600190039081610aee5790505b50915060005b81811015610b6857610b43858583818110610b2c57610b2c614d51565b9050602002810190610b3e9190614d67565b610b70565b838281518110610b5557610b55614d51565b6020908102919091010152600101610b0f565b505092915050565b610b78613e9d565b6040805160a0810190915280610b8e8480614d87565b610b9790614d9e565b815260200160016001600160781b0316815260200160016001600160781b03168152602001838060200190610bcc9190614daa565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050604080516020818101909252928352909201525092915050565b6000610c256117f5565b60606000806000610c398888600187611804565b604080516001808252818301909252939650919450925060009190816020015b610c61613e9d565b815260200190600190039081610c595790505090508881600081518110610c8a57610c8a614d51565b6020026020010181905250610c9f8189611a8d565b600081600081518110610cb457610cb4614d51565b6020026020010151600001519050610cd48185858461012001518c611e0a565b610cf28582600001518360200151338560400151866060015161200e565b610cfc6001600055565b5060019998505050505050505050565b606080610d1c8a8a600086611245565b610d3a8a610d2a898b614e3e565b610d34888a614e3e565b87612073565b909b909a5098505050505050505050565b6060600080610d5861224f565b6040805160018082528183019092529193507f000000000000000000000000000000000000000000000000000000000000000092506020820181803683375050603160f81b6020830152509391925090565b600060046101243590810490600316600182113415811480610de657604051630a61be9f60e41b81523460048201526024015b60405180910390fd5b5060008060006003861160a08102602401359350600287146002881160028903020192506001830181026002861502880103915050610e29888684878786612345565b6000610e3b60808a0160608b01614016565b90506101c46003881160200201356000866005811115610e5d57610e5d614671565b03610ea957610e8883610e7660c08d0160a08e01614016565b84338e60c001358f60e0013587612685565b610ea460408b013583610e9f6102008e018e614f10565b612739565b610cfc565b6040805160208082528183019092526000916020820181803683370190505090506002896005811115610ede57610ede614671565b03610f3e57610f09610ef660c08d0160a08e01614016565b84338e60c001358f60e0013587876127fe565b610f393384610f1b60208f018f614016565b8e604001358f806102000190610f319190614f10565b60008861284b565b61102a565b6003896005811115610f5257610f52614671565b03610f7d57610f09610f6a60c08d0160a08e01614016565b84338e60c001358f60e0013587876128d2565b6004896005811115610f9157610f91614671565b03610fef57610fb9610fa660208d018d614016565b33858e602001358f6040013587876127fe565b610f3983338d60a0016020810190610fd19190614016565b8e60e001358f806102000190610fe79190614f10565b60018861284b565b611012610fff60208d018d614016565b33858e602001358f6040013587876128d2565b61102a83338d60a0016020810190610fd19190614016565b61103381612908565b505060019998505050505050505050565b600061104e611687565b60008083815b81811015610aa8573687878381811061106f5761106f614d51565b90506020028101906110819190614d87565b90506110906020820182614016565b94506110a26040820160208301614016565b9350336001600160a01b038616148015906110c65750336001600160a01b03851614155b156110e45760405163203b1cdd60e21b815260040160405180910390fd5b60006111d3604051806101600160405280886001600160a01b03168152602001876001600160a01b031681526020018480604001906111239190614c62565b808060200260200160405190810160405280939291908181526020016000905b8282101561116f5761116060a08302860136819003810190614caa565b81526020019060010190611143565b50505091835250506020016111876060860186614cc6565b808060200260200160405190810160405280939291908181526020016000905b82821015610498576111c460c08302860136819003810190614d0e565b815260200190600101906111a7565b60008181526002602052604090819020805461ffff1916610100179055519091506001600160a01b0380871691908816907f6bacc01dbe442496068f7d234edd811f1a5f833243e0aec824f86ab861f3c90d906112339085815260200190565b60405180910390a35050600101611054565b61124d6117f5565b83516000816001600160401b038111156112695761126961404c565b604051908082528060200260200182016040528015611292578160200160208202803683370190505b5090506000815260005b828110156114b15760008782815181106112b8576112b8614d51565b60200260200101519050846000036112dd5760006020909101526001810182526114a9565b60008060006112ee848b8b89611804565b925092509250600185018652816000036113155750506000602090920191909152506114a9565b8286868151811061132857611328614d51565b6020908102919091010152835160a081015160c0820151604090920151600019909a019990918290039042839003908183039060005b81518110156113f557600082828151811061137b5761137b614d51565b6020026020010151905060006113968a8a8460800151612931565b905081608001518260600151036113b357606082018190526113c8565b6113c28a8a8460600151612931565b60608301525b6080820181905260608201516113e3908288888b6000612981565b6060909201919091525060010161135e565b5088516060015160005b815181101561149d57600082828151811061141c5761141c614d51565b6020026020010151905060006114378b8b8460800151612931565b905081608001518260600151036114545760608201819052611469565b6114638b8b8460600151612931565b60608301525b608082018190526060820151611484908289898c6001612981565b60608301525060a08101516080909101526001016113ff565b50505050505050505050505b60010161129c565b506114bc8686611a8d565b8315330260005b83811015611552576000801b8382815181106114e1576114e1614d51565b6020026020010151031561154a57600088828151811061150357611503614d51565b602002602001015160000151905061154884838151811061152657611526614d51565b602002602001015182600001518360200151868560400151866060015161200e565b505b6001016114c3565b5050505050505050565b606081806001600160401b038111156115775761157761404c565b6040519080825280602002602001820160405280156115b057816020015b61159d613ed1565b8152602001906001900390816115955790505b5091506000805b8281101561166557368686838181106115d2576115d2614d51565b90506020028101906115e49190614d67565b90506000611608896115f68480614f10565b6116036020870187614f10565b6129dc565b905080602001516001600160a01b03168160000151608001516001600160a01b03160361163a5760018401935061165b565b80868585038151811061164f5761164f614d51565b60200260200101819052505b50506001016115b7565b508015611673578083510383525b5061167e8583612ccd565b50509392505050565b6001600054146116aa57604051637fa8a98760e01b815260040160405180910390fd5b565b60006116c2826060015151836101400151612ee2565b81516001600160a01b031660009081526001602052604090205461035a9083906107b3565b600083602001511561171d57811561171557604051630694555d60e21b815260048101869052602401610ddd565b5060006105a5565b60408401516001600160781b0316156117955782156117525760405163ee9e0e6360e01b815260048101869052602401610ddd565b83606001516001600160781b031684604001516001600160781b031610611795578115611715576040516310fda3e160e01b815260048101869052602401610ddd565b506001949350505050565b336001600160a01b038416036117b557505050565b60006117e26117c261224f565b61190160f01b600090815260029190915260228581526042822091905290565b90506117ef848284612f03565b50505050565b6117fd611687565b6002600055565b600080600080876000015190506118248160a001518260c0015188613046565b611838575060009250829150819050611a83565b602088015160408901516001600160781b0391821691168082118061185b575081155b1561187957604051632d02959960e11b815260040160405180910390fd5b808210801561188d57506080830151600116155b156118ab5760405163a11b63ff60e01b815260040160405180910390fd5b6118b4836116ac565b95506118d68a8a89898760e00151886080015189600001518a6020015161308c565b60008681526002602090815260408083208151608081018352905460ff808216151583526101008204161515938201939093526001600160781b03620100008404811692820192909252600160881b9092041660608201529061193d90889083908c6116e7565b611952575060009450849350611a8392505050565b805161196b5761196b8460000151888d606001516117a0565b604081015160608201516001600160781b0391821691168015611a2f578360010361199b578094508093506119c7565b8381146119c7576119ac8483614f6f565b91506119b88186614f6f565b94506119c48185614f6f565b93505b836119d28684614f8e565b11156119de5781840394505b600089815260026020526040902080546001600160781b03868116600160881b026001600160881b03868a019290921662010000026001600160881b03199093169290921760011716179055611a78565b600089815260026020526040902080546001600160781b03868116600160881b026001600160881b0391891662010000026001600160881b031990931692909217600117161790555b509295509093505050505b9450945094915050565b8051825160005b82811015611cd4576000848281518110611ab057611ab0614d51565b60200260200101519050600081600001519050838110611ae3576040516321a561b160e21b815260040160405180910390fd5b868181518110611af557611af5614d51565b6020026020010151602001516001600160781b0316600003611b18575050611ccc565b6000878281518110611b2c57611b2c614d51565b60209081029190910101515160408401519091506000808086602001516001811115611b5a57611b5a614671565b03611bf457604084015180518410611b8557604051635fd9fc6760e11b815260040160405180910390fd5b6000818581518110611b9957611b99614d51565b602090810291909101015180516040820151909550935090506004841460030381816005811115611bcc57611bcc614671565b90816005811115611bdf57611bdf614671565b90525050606088015160409091015250611c85565b606084015180518410611c1a576040516330446bef60e11b815260040160405180910390fd5b6000818581518110611c2e57611c2e614d51565b602090810291909101015180516040820151909550935090506004841460030381816005811115611c6157611c61614671565b90816005811115611c7457611c74614671565b905250506060880151604090910152505b611c8f8260031090565b611cac57604051634a75b57b60e11b815260040160405180910390fd5b8015611cc557611cc5866060015182886080015161316d565b5050505050505b600101611a94565b5060005b81811015611e03576000858281518110611cf457611cf4614d51565b6020026020010151905080602001516001600160781b0316600003611d195750611dfb565b6000868381518110611d2d57611d2d614d51565b60200260200101516000015190506000816060015151905060005b81811015611da457611d7b83606001518281518110611d6957611d69614d51565b60200260200101516000015160031090565b15611d9c5760405160016202297360e61b0319815260040160405180910390fd5b600101611d48565b505060408101515160005b81811015611df657611dd083604001518281518110611d6957611d69614d51565b15611dee5760405163a6cfc67360e01b815260040160405180910390fd5b600101611daf565b505050505b600101611cd8565b5050505050565b60008560a001518660c00151611e209190614fa6565b905060008660a0015142611e349190614fa6565b90506000611e428284614fa6565b60408051602080825281830190925291925034916000916020820181803683370190505090506131dd60005b8b6040015151811015611f265760008c604001518281518110611e9357611e93614d51565b602002602001015190506000611eb8826060015183608001518f8f8c8c8f600061329a565b606083018190523360808401529050600082516005811115611edc57611edc614671565b03611f085785811115611f0257604051631a783b8d60e01b815260040160405180910390fd5b80860395505b611f1c828f600001518d888863ffffffff16565b5050600101611e6e565b506131dd905060005b8b6060015151811015611fe75760008c606001518281518110611f5457611f54614d51565b602002602001015190506000611f79826060015183608001518f8f8c8c8f600161329a565b6060830181905260a083015160808401529050600082516005811115611fa157611fa1614671565b03611fcd5785811115611fc757604051631a783b8d60e01b815260040160405180910390fd5b80860395505b611fdd82338c888863ffffffff16565b5050600101611f2f565b5050611ff281612908565b81156120025761200233836132e6565b50505050505050505050565b60608290506060829050856001600160a01b0316876001600160a01b03167f9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f318a8886866040516120619493929190614ff7565b60405180910390a35050505050505050565b8251825160609182916120868183614f8e565b6001600160401b0381111561209d5761209d61404c565b6040519080825280602002602001820160405280156120d657816020015b6120c3613ed1565b8152602001906001900390816120bb5790505b5092506000805b8381101561216f5760008982815181106120f9576120f9614d51565b6020026020010151905060006121128c6000848c61333a565b905080602001516001600160a01b03168160000151608001516001600160a01b03160361214457600184019350612165565b80878585038151811061215957612159614d51565b60200260200101819052505b50506001016120dd565b5060005b8281101561220757600088828151811061218f5761218f614d51565b6020026020010151905060006121a88c6001848c61333a565b905080602001516001600160a01b03168160000151608001516001600160a01b0316036121da576001840193506121fd565b80878588860103815181106121f1576121f1614d51565b60200260200101819052505b5050600101612173565b508015612215578084510384525b5082516000036122385760405163d5da9a1b60e01b815260040160405180910390fd5b6122428884612ccd565b9350505094509492505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146123205761033b604080517f000000000000000000000000000000000000000000000000000000000000000060208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b61234d6117f5565b6123638661012001358761014001356001613046565b5061236c6133d5565b61239461237d610200880188614f10565b61238991506001614f8e565b876101e00135612ee2565b6000807f00000000000000000000000000000000000000000000000000000000000000009050806080528560a0526060602460c037604060646101203760e06080206101605261026435602081026102a0016001610264350181526020810190508781526080602460208301376101608760a0528660c052600060e05261020435925060005b83811015612465578060400261028401602081610100376040816101203760208301925060e0608020835260a08401935089845288602085015260408160608601375060010161241a565b60206001850102610160206060526102643593505b838110156124ab578060400261028401915060a083019250888352876020840152604082606085013760010161247a565b505050505060007f00000000000000000000000000000000000000000000000000000000000000009050806080528260a052606060c460c03760206101046101203760c0608020600052602060002060e052602061026435026102000160018152836020820152606060c4604083013750506084356001600160a01b0381166000908152600160205260408120547f000000000000000000000000000000000000000000000000000000000000000060808190529091506040608460a03760605161010052886101205260a061014461014037816101e0526101806080209350505050602061026435026101800181815233602082015260806040820152610120606082015260a061026435026101e00160a4356084357f9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f318385a35050600060605261262081886101600135888a606001602081019061260b9190614016565b61261b60a08d0160808e01614016565b613416565b61267c8161263460808a0160608b01614016565b6126426102208b018b614daa565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061346692505050565b50505050505050565b80156126e15760006040519050632671a55160e11b815260206004820152600160248201528760448201528660648201528560848201528460a48201528360c48201528260e48201526126db8282610104613508565b5061267c565b60028760058111156126f5576126f5614671565b0361272c578160011461271b5760405163efcc00b160e01b815260040160405180910390fd5b612727868686866135f8565b61267c565b61267c86868686866136b9565b348160005b818110156127ac573685858381811061275957612759614d51565b6040029190910191505080358481111561278657604051631a783b8d60e01b815260040160405180910390fd5b61279f6127996040840160208501614016565b826132e6565b909303925060010161273e565b50818611156127ce57604051631a783b8d60e01b815260040160405180910390fd5b6127d885876132e6565b858211156127ec576127ec338784036132e6565b6127f66001600055565b505050505050565b612808818361379d565b8161283a578260011461282e5760405163efcc00b160e01b815260040160405180910390fd5b612727878787876135f8565b61267c828260028a8a8a8a8a6137bc565b602082026101e403358360005b818110156128b9573687878381811061287357612873614d51565b60400291909101915050803586156128925761288f818b614fa6565b99505b6128af8b8e6128a76040860160208701614016565b84898b61383c565b5050600101612858565b506128c8888b8b8a868861383c565b6120026001600055565b6128db83613877565b6128e5818361379d565b816128f75761272787878787876136b9565b61267c828260038a8a8a8a8a6137bc565b80516040146129145750565b6000612921826020015190565b905061292d8183613898565b5050565b6000828403612941575080610528565b600083858409159050806129685760405163c63cf08960e01b815260040160405180910390fd5b60006129748685614f6f565b9490940495945050505050565b60008587146129d15760008215612999575060001983015b6000816129a6888a614f6f565b6129b0888c614f6f565b6129ba9190614f8e565b6129c49190614f8e565b8590049250610377915050565b509395945050505050565b6129e4613ed1565b8315806129ef575081155b15612a0d57604051634c74edb760e11b815260040160405180910390fd5b612a15613ed1565b612a72878585808060200260200160405190810160405280939291908181526020016000905b82821015612a6757612a5860408302860136819003810190615091565b81526020019060010190612a3b565b5050505050836138bc565b805160408051602080890282018101909252878152612ad1918a91908a908a90819060009085015b82821015612ac657612ab760408302860136819003810190615091565b81526020019060010190612a9a565b505050505085613a68565b80516005811115612ae457612ae4614671565b8351516005811115612af857612af8614671565b141580612b23575080602001516001600160a01b03168360000151602001516001600160a01b031614155b80612b3a5750806040015183600001516040015114155b15612b58576040516309cfb45560e01b815260040160405180910390fd5b82600001516060015181606001511115612c0f57600085856000818110612b8157612b81614d51565b905060400201803603810190612b979190615091565b90508360000151606001518260600151612bb19190614fa6565b89826000015181518110612bc757612bc7614d51565b60200260200101516000015160600151826020015181518110612bec57612bec614d51565b602090810291909101015160609081019190915284518101519083015250612ca1565b600087876000818110612c2457612c24614d51565b905060400201803603810190612c3a9190615091565b90508160600151846000015160600151612c549190614fa6565b89826000015181518110612c6a57612c6a614d51565b60200260200101516000015160400151826020015181518110612c8f57612c8f614d51565b60200260200101516060018181525050505b60608082015184519091015260809081015183516001600160a01b039091169101525095945050505050565b8151606090806001600160401b03811115612cea57612cea61404c565b604051908082528060200260200182016040528015612d13578160200160208202803683370190505b50915060005b81811015612df9576000858281518110612d3557612d35614d51565b6020026020010151905080602001516001600160781b0316600003612d5a5750612df1565b6001848381518110612d6e57612d6e614d51565b9115156020928302919091019091015280516060015160005b8151811015612ded576000828281518110612da457612da4614d51565b602002602001015160600151905080600014612de4576040516314bea84160e31b8152600481018690526024810183905260448101829052606401610ddd565b50600101612d87565b5050505b600101612d19565b5060408051602080825281830190925234916000919060208201818036833701905050905060005b8551811015612eb5576000868281518110612e3e57612e3e614d51565b60209081029190910101518051909150600081516005811115612e6357612e63614671565b03612e97578481606001511115612e8d57604051631a783b8d60e01b815260040160405180910390fd5b8060600151850394505b612eab8183602001518460400151876131dd565b5050600101612e21565b50612ebf81612908565b8115612ecf57612ecf33836132e6565b612ed96001600055565b50505092915050565b8082101561292d57604051632335530b60e11b815260040160405180910390fd5b60008060008351604003612f3457505050602081015160408201516001600160ff1b0381169060ff1c601b01612f9a565b8351604103612f8f5750505060208101516040820151606083015160001a601b8114801590612f6757508060ff16601c14155b15612f8a57604051630f801e8560e11b815260ff82166004820152602401610ddd565b612f9a565b6127f6868686613bf2565b6040805160008082526020820180845288905260ff841692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015612fee573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661302257604051638baa579f60e01b815260040160405180910390fd5b866001600160a01b0316816001600160a01b03161461267c5761267c878787613bf2565b6000428411806130565750428311155b1561308257811561307a576040516337bf561360e11b815260040160405180910390fd5b506000610528565b5060019392505050565b60018360038111156130a0576130a0614671565b1180156130b65750336001600160a01b03821614155b80156130cb5750336001600160a01b03831614155b15611552576080880151511580156130e257508651155b156130f8576130f381868487613c69565b611552565b600061315682633313157060e01b88338d8c8e60405160240161311f959493929190615265565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613cb5565b90506131628187613cca565b505050505050505050565b60008360208301602084510281015b808210156131b9578151808411801561319c5781600052846020526131a5565b84600052816020525b50506040600020925060208201915061317c565b505083149050806117ef576040516309bde33960e01b815260040160405180910390fd5b6000845160058111156131f2576131f2614671565b0361320e57613209846080015185606001516132e6565b6117ef565b60018451600581111561322357613223614671565b036132425761320984602001518486608001518760600151868661383c565b60028451600581111561325757613257614671565b0361327b5761320984602001518486608001518760400151886060015187876127fe565b6117ef84602001518486608001518760400151886060015187876128d2565b60008789036132b5576132ae87878a612931565b90506132da565b6132d76132c388888c612931565b6132ce89898c612931565b87878787612981565b90505b98975050505050505050565b6132ef81613877565b600080600080600085875af19050806133355761330a613d24565b60405163470c7c1d60e01b81526001600160a01b038416600482015260248101839052604401610ddd565b505050565b613342613ed1565b8251600003613366578360405163375c24c160e01b8152600401610ddd91906153eb565b600084600181111561337a5761337a614671565b0361338f5761338a858483613a68565b6133a8565b61339a8584836138bc565b336020820152604081018290525b8051606001516000036105a557602081015181516001600160a01b03909116608090910152949350505050565b610244356102606102643560400201146004356020146102243561024014161680613413576040516339f3e3fd60e01b815260040160405180910390fd5b50565b600183600381111561342a5761342a614671565b1180156134405750336001600160a01b03821614155b80156134555750336001600160a01b03831614155b15611e0357611e0381868487613c69565b6000838152600260209081526040918290208251608081018452905460ff808216151583526101008204161515928201929092526001600160781b03620100008304811693820193909352600160881b90910490911660608201526134ce84826001806116e7565b5080516134e0576134e08385846117a0565b5050506000908152600260205260409020710100000000000000000000000000000100019055565b6040805160ff60a01b7f000000000000000000000000000000000000000000000000000000000000000017600090815260208681527f000000000000000000000000000000000000000000000000000000000000000084526055600b20929093528080526001600160a01b039091169181848682865af19050806135b25761358e613d24565b60405163344f54f560e21b81526001600160a01b0383166004820152602401610ddd565b6000516001600160e01b03198116632671a55160e11b146127f657604051630e7ccd9360e11b8152600481018790526001600160a01b0384166024820152604401610ddd565b833b61361357632f8aeb3960e11b6000528360045260246000fd5b6040516323b872dd60e01b6000528360045282602452816044526000806064600080895af1806136aa573d156136845760203d0460208304816003028183111561366b57818303600302610200838002858002030401015b5a602082011015613680573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b6136d457632f8aeb3960e11b6000528460045260246000fd5b60405160805160a05160c051637921219560e11b6000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af180613781573d1561375c5760203d0460208604816003028183111561374357818303600302610200838002858002030401015b5a602082011015613758573d6000803e3d6000fd5b5050505b63f486bc8760e01b600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b60006137aa836020015190565b90508181146133355761333583612908565b600060208851036137f75750604080885260208089018a9052632671a55160e11b918901919091526044880152600160648801819052613806565b50606487018051600101908190525b603c60c082028901038781528660208201528560408201528460608201528360808201528260a082015250505050505050505050565b61384583613877565b61384f818361379d565b816138655761386086868686613d69565b6127f6565b6127f68282600189898960008a6137bc565b806000036134135760405163246cf94560e21b815260040160405180910390fd5b6064810151604082019060c0026044016138b3848383613508565b50506020905250565b6138e8565b637fda727960e01b60005260206000fd5b634e487b7160e01b600052601160045260246000fd5b60208201805151845181106138ff576138ff6138c1565b6020810260208601015160608151015160208451015181518110613925576139256138c1565b6020810260208301015160008060208601511561394c575050606081018051600090915280155b885183518152602084015160208201526040840151604082015260a084015160808201526060812060208c51028c015b808b1015613a235760208b019a508a515199508d518a1061399f5761399f6138c1565b60208a0260208f010151985060208901511561397c57606089510151975060208b5101519650875187106139d5576139d56138c1565b602087026020890101519550606086018051860181511587821060011b1786179550809650506000815250606086208214608084015160a08801511416613a1e57613a1e6138c1565b61397c565b50506060018290528060018114613a415760028114613a5257613a5a565b63246cf94560e21b60005260206000fd5b613a5a6138d2565b505050505050505050505050565b6020820180515184518110613a7f57613a7f6138c1565b602081026020860101518051604081015160208551015181518110613aa657613aa66138c1565b60208102602083010151600080602087015115613acd575050606081018051600090915280155b8951336080820152835181526020840151602082015260408401516040820152865160208c015261012087015160408c015260608120905060208c51028c015b808b1015613bc15760208b019a508a515199508d518a10613b3057613b306138c1565b60208a0260208f0101519850602089015115613b0d57885197506040880151965060208b510151955086518610613b6957613b696138c1565b602086026020880101519450606085018051850181511586821060011b178517945080955050600081525060608520821460408d01516101208a01511460208e01518a51141616613bbc57613bbc6138c1565b613b0d565b50508160608b5101528060018114613a415760028103613be357613be36138d2565b50505050505050505050505050565b6000613c1384631626ba7e60e01b858560405160240161311f9291906153f9565b905080613c3b57613c22613d24565b604051634f7fb80d60e01b815260040160405180910390fd5b613c4b630b135d3f60e11b613e6f565b156117ef57604051632057875960e21b815260040160405180910390fd5b604051602481018490523360448201526001600160a01b038316606482015260848101829052600090613ca99086906303874c7760e21b9060a40161311f565b9050611e038185613cca565b6000806000835160208501865afa9392505050565b81613cf357613cd7613d24565b604051633ed4053f60e21b815260048101829052602401610ddd565b613d036303874c7760e21b613e6f565b1561292d57604051633ed4053f60e21b815260048101829052602401610ddd565b3d156116aa5760203d046020604051048160030281831115613d5457818303600302610200838002858002030401015b5a602082011015613335573d6000803e3d6000fd5b6040516323b872dd60e01b600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d15158116613e5f5780873b151516613e5f5780613e4a5781613e29573d15613e035760203d04602084048160030281831115613dea57818303600302610200838002858002030401015b5a602082011015613dff573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005286600452856024528460445260006064528360845260a46000fd5b639889192360e01b6000528660045285602452846044528360645260846000fd5b632f8aeb3960e11b6000528660045260246000fd5b5050604052505060006060525050565b60008060203d03613e855760206000803e506000515b6001600160e01b031990811692169190911415919050565b6040518060a00160405280613eb0613f14565b81526000602082018190526040820152606080820181905260809091015290565b60408051610100810182526000606082018181526080830182905260a0830182905260c0830182905260e083018290528252602082018190529181019190915290565b60405180610160016040528060006001600160a01b0316815260200160006001600160a01b03168152602001606081526020016060815260200160006003811115613f6157613f61614671565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c09091015290565b6000815180845260005b81811015613fb757602081850181015186830182015201613f9b565b81811115613fc9576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006105286020830184613f91565b6001600160a01b038116811461341357600080fd5b803561401181613ff1565b919050565b60006020828403121561402857600080fd5b813561052881613ff1565b60006020828403121561404557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156140845761408461404c565b60405290565b60405161016081016001600160401b03811182821017156140845761408461404c565b604051601f8201601f191681016001600160401b03811182821017156140d5576140d561404c565b604052919050565b60006001600160401b038211156140f6576140f661404c565b5060051b60200190565b80356006811061401157600080fd5b600060a0828403121561412157600080fd5b614129614062565b905061413482614100565b8152602082013561414481613ff1565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b600082601f83011261418057600080fd5b81356020614195614190836140dd565b6140ad565b82815260a092830285018201928282019190878511156141b457600080fd5b8387015b858110156141d7576141ca898261410f565b84529284019281016141b8565b5090979650505050505050565b600060c082840312156141f657600080fd5b60405160c081018181106001600160401b03821117156142185761421861404c565b60405290508061422783614100565b8152602083013561423781613ff1565b8060208301525060408301356040820152606083013560608201526080830135608082015260a083013561426a81613ff1565b60a0919091015292915050565b600082601f83011261428857600080fd5b81356020614298614190836140dd565b82815260c092830285018201928282019190878511156142b757600080fd5b8387015b858110156141d7576142cd89826141e4565b84529284019281016142bb565b80356004811061401157600080fd5b600061016082840312156142fc57600080fd5b61430461408a565b905061430f82614006565b815261431d60208301614006565b602082015260408201356001600160401b038082111561433c57600080fd5b6143488583860161416f565b6040840152606084013591508082111561436157600080fd5b5061436e84828501614277565b606083015250614380608083016142da565b608082015260a082013560a082015260c082013560c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525092915050565b80356001600160781b038116811461401157600080fd5b600082601f8301126143f557600080fd5b81356001600160401b0381111561440e5761440e61404c565b614421601f8201601f19166020016140ad565b81815284602083860101111561443657600080fd5b816020850160208301376000918101602001919091529392505050565b600060a0828403121561446557600080fd5b61446d614062565b905081356001600160401b038082111561448657600080fd5b614492858386016142e9565b83526144a0602085016143cd565b60208401526144b1604085016143cd565b604084015260608401359150808211156144ca57600080fd5b6144d6858386016143e4565b606084015260808401359150808211156144ef57600080fd5b506144fc848285016143e4565b60808301525092915050565b600082601f83011261451957600080fd5b81356020614529614190836140dd565b82815260059290921b8401810191818101908684111561454857600080fd5b8286015b848110156145875780356001600160401b0381111561456b5760008081fd5b6145798986838b0101614453565b84525091830191830161454c565b509695505050505050565b60008083601f8401126145a457600080fd5b5081356001600160401b038111156145bb57600080fd5b6020830191508360208260051b85010111156145d657600080fd5b9250929050565b6000806000806000606086880312156145f557600080fd5b85356001600160401b038082111561460c57600080fd5b61461889838a01614508565b9650602088013591508082111561462e57600080fd5b61463a89838a01614592565b9096509450604088013591508082111561465357600080fd5b5061466088828901614592565b969995985093965092949392505050565b634e487b7160e01b600052602160045260246000fd5b6006811061469757614697614671565b9052565b6146a6828251614687565b6020818101516001600160a01b0390811691840191909152604080830151908401526060808301519084015260809182015116910152565b600081518084526020808501945080840160005b8381101561473457815161470788825161469b565b808401516001600160a01b031660a08901526040015160c088015260e090960195908201906001016146f2565b509495945050505050565b60208152600061052860208301846146de565b60006020828403121561476457600080fd5b81356001600160401b0381111561477a57600080fd5b8201610160818503121561052857600080fd5b600080602083850312156147a057600080fd5b82356001600160401b038111156147b657600080fd5b6147c285828601614592565b90969095509350505050565b600080600080604085870312156147e457600080fd5b84356001600160401b03808211156147fb57600080fd5b61480788838901614592565b9096509450602087013591508082111561482057600080fd5b5061482d87828801614592565b95989497509550505050565b6000806040838503121561484c57600080fd5b82356001600160401b0381111561486257600080fd5b83016040818603121561487457600080fd5b946020939093013593505050565b6000806000806060858703121561489857600080fd5b84356001600160401b03808211156148af57600080fd5b9086019060a082890312156148c357600080fd5b909450602086013590808211156148d957600080fd5b506148e687828801614592565b9598909750949560400135949350505050565b60008060008060008060008060a0898b03121561491557600080fd5b88356001600160401b038082111561492c57600080fd5b6149388c838d01614592565b909a50985060208b013591508082111561495157600080fd5b61495d8c838d01614592565b909850965060408b013591508082111561497657600080fd5b506149838b828c01614592565b999c989b509699959896976060870135966080013595509350505050565b604080825283519082018190526000906020906060840190828701845b828110156149dc5781511515845292840192908401906001016149be565b5050508381038285015261037781866146de565b606081526000614a036060830186613f91565b6020830194909452506001600160a01b0391909116604090910152919050565b600060208284031215614a3557600080fd5b81356001600160401b03811115614a4b57600080fd5b8201610240818503121561052857600080fd5b600080600080600080600080600060c08a8c031215614a7c57600080fd5b89356001600160401b0380821115614a9357600080fd5b614a9f8d838e01614508565b9a5060208c0135915080821115614ab557600080fd5b614ac18d838e01614592565b909a50985060408c0135915080821115614ada57600080fd5b614ae68d838e01614592565b909850965060608c0135915080821115614aff57600080fd5b50614b0c8c828d01614592565b9a9d999c50979a96999598959660808101359660a09091013595509350505050565b6000614b3c614190846140dd565b83815260208082019190600586811b860136811115614b5a57600080fd5b865b81811015614c555780356001600160401b0380821115614b7c5760008081fd5b818a01915060a08236031215614b925760008081fd5b614b9a614062565b823581528683013560028110614bb05760008081fd5b81880152604083810135908201526060808401359082015260808084013583811115614bdc5760008081fd5b939093019236601f850112614bf357600092508283fd5b83359250614c03614190846140dd565b83815292871b84018801928881019036851115614c205760008081fd5b948901945b84861015614c3e57853582529489019490890190614c25565b918301919091525088525050948301948301614b5c565b5092979650505050505050565b6000808335601e19843603018112614c7957600080fd5b8301803591506001600160401b03821115614c9357600080fd5b602001915060a0810236038213156145d657600080fd5b600060a08284031215614cbc57600080fd5b610528838361410f565b6000808335601e19843603018112614cdd57600080fd5b8301803591506001600160401b03821115614cf757600080fd5b602001915060c0810236038213156145d657600080fd5b600060c08284031215614d2057600080fd5b61052883836141e4565b600060208284031215614d3c57600080fd5b610528826142da565b600061035a3683614453565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112614d7d57600080fd5b9190910192915050565b6000823561015e19833603018112614d7d57600080fd5b600061035a36836142e9565b6000808335601e19843603018112614dc157600080fd5b8301803591506001600160401b03821115614ddb57600080fd5b6020019150368190038213156145d657600080fd5b600060408284031215614e0257600080fd5b604051604081018181106001600160401b0382111715614e2457614e2461404c565b604052823581526020928301359281019290925250919050565b6000614e4c614190846140dd565b80848252602080830192508560051b850136811115614e6a57600080fd5b855b81811015614f045780356001600160401b03811115614e8b5760008081fd5b870136601f820112614e9d5760008081fd5b8035614eab614190826140dd565b81815260069190911b82018501908581019036831115614ecb5760008081fd5b928601925b82841015614ef457614ee23685614df0565b82528682019150604084019350614ed0565b8852505050938201938201614e6c565b50919695505050505050565b6000808335601e19843603018112614f2757600080fd5b8301803591506001600160401b03821115614f4157600080fd5b6020019150600681901b36038213156145d657600080fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615614f8957614f89614f59565b500290565b60008219821115614fa157614fa1614f59565b500190565b600082821015614fb857614fb8614f59565b500390565b600081518084526020808501945080840160005b8381101561473457614fe487835161469b565b60a0969096019590820190600101614fd1565b60006080808301878452602060018060a01b03808916828701526040848188015283895180865260a089019150848b01955060005b8181101561506d578651615041848251614687565b80870151861684880152848101518585015260609081015190840152958501959187019160010161502c565b50508781036060890152615081818a614fbd565b9c9b505050505050505050505050565b6000604082840312156150a357600080fd5b6105288383614df0565b600081518084526020808501945080840160005b838110156147345781516150d6888251614687565b838101516001600160a01b03168885015260408082015190890152606080820151908901526080908101519088015260a090960195908201906001016150c1565b600081518084526020808501945080840160005b83811015614734578151615140888251614687565b808401516001600160a01b0390811689860152604080830151908a0152606080830151908a0152608080830151908a015260a091820151169088015260c0909601959082019060010161512b565b6004811061469757614697614671565b600081518084526020808501945080840160005b83811015614734578151875295820195908201906001016151b2565b6002811061469757614697614671565b600082825180855260208086019550808260051b84010181860160005b848110156141d757601f19868403018952815160a08151855285820151615224878701826151ce565b5060408281015190860152606080830151908601526080918201519185018190526152518186018361519e565b9a86019a94505050908301906001016151fb565b85815260018060a01b038516602082015260a060408201526000610140855160a08085015261529f82850182516001600160a01b03169052565b60208101516101606152bb818701836001600160a01b03169052565b6040830151915080610180870152506152d86102a08601826150ad565b9050606082015161013f19868303016101a08701526152f78282615117565b915050608082015161530d6101c087018261518e565b5060a08201516101e086015260c082015161020086015260e082015161022086015261010080830151610240870152610120808401516102608801528484015161028088015260208a0151945061536f60c08801866001600160781b03169052565b60408a01516001600160781b031660e088015260608a0151878403609f19908101848a015290955093506153a38386613f91565b945060808a0151925083878603018188015250506153c18382613f91565b9250505082810360608401526153d7818661519e565b905082810360808401526132da81856151de565b6020810161035a82846151ce565b8281526040602082015260006105a56040830184613f9156fea2646970667358221220337a1990bf93bd9b7c70054f5e27e0da8850c8fe4a29b2b59e75a7923094510f64736f6c634300080d0033",
              "opcodes": "PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x5B64 CODESIZE SUB DUP1 PUSH3 0x5B64 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x35 SWAP2 PUSH3 0x5C2 JUMP JUMPDEST DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH3 0x49 PUSH3 0x132 JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH2 0x100 MSTORE PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x160 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x180 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH3 0xF0 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 PUSH3 0x116 SWAP2 SWAP1 PUSH3 0x5F4 JUMP JUMPDEST POP PUSH2 0x1A0 MSTORE POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP PUSH3 0x684 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH3 0x15E PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x7 DUP2 MSTORE PUSH7 0x14D9585C1BDC9D PUSH1 0xCA SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP8 POP PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP7 POP PUSH1 0x0 SWAP2 PUSH3 0x261 SWAP2 ADD PUSH10 0x9ECCCCCAE492E8CADA5 PUSH1 0xB3 SHL DUP2 MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0xA DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x19 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x27 DUP3 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D PUSH1 0x7A SHL PUSH1 0x58 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x69 DUP3 ADD MSTORE PUSH1 0x6A ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE PUSH18 0x86DEDCE6D2C8CAE4C2E8D2DEDC92E8CADA5 PUSH1 0x73 SHL PUSH1 0x20 DUP5 ADD MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0x32 DUP5 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x41 DUP5 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x4F DUP5 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x6C DUP5 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D0B PUSH1 0x72 SHL PUSH1 0x80 DUP5 ADD MSTORE PUSH17 0x1859191C995CDCC81C9958DA5C1A595B9D PUSH1 0x7A SHL PUSH1 0x92 DUP5 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0xA3 DUP5 ADD DUP2 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB PUSH1 0x84 ADD DUP2 MSTORE PUSH1 0xA4 DUP6 ADD SWAP1 SWAP4 MSTORE PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL PUSH1 0xC4 DUP6 ADD MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0xD4 DUP6 ADD MSTORE PUSH13 0x1859191C995CDCC81E9BDB994B PUSH1 0x9A SHL PUSH1 0xE4 DUP6 ADD MSTORE PUSH18 0x13D999995C925D195B56D7481BD999995C8B PUSH1 0x72 SHL PUSH1 0xF1 DUP6 ADD MSTORE PUSH32 0x436F6E73696465726174696F6E4974656D5B5D20636F6E73696465726174696F PUSH2 0x103 DUP6 ADD MSTORE PUSH2 0x1B8B PUSH1 0xF2 SHL PUSH2 0x123 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0E081BDC99195C951E5C194B PUSH1 0x82 SHL PUSH2 0x125 DUP6 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH2 0x135 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH2 0x147 DUP6 ADD MSTORE PUSH17 0x189E5D195CCCCC881E9BDB9952185CDA0B PUSH1 0x7A SHL PUSH2 0x157 DUP6 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x168 DUP6 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x175 DUP6 ADD MSTORE PUSH13 0x75696E74323536206E6F6E6365 PUSH1 0x98 SHL PUSH2 0x188 DUP6 ADD MSTORE PUSH2 0x195 DUP5 ADD MSTORE SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x196 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 DUP6 MLOAD DUP7 DUP4 ADD KECCAK256 DUP6 MLOAD DUP7 DUP5 ADD KECCAK256 SWAP2 SWAP11 POP SWAP9 POP SWAP7 POP PUSH3 0x59F SWAP2 DUP4 SWAP2 DUP6 SWAP2 DUP8 SWAP2 ADD PUSH3 0x657 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP POP POP POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x5D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x5ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x63C JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH3 0x620 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH3 0x64C JUMPI PUSH1 0x0 DUP3 DUP7 ADD MSTORE JUMPDEST POP SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x67B PUSH3 0x674 PUSH3 0x66D DUP5 DUP9 PUSH3 0x619 JUMP JUMPDEST DUP7 PUSH3 0x619 JUMP JUMPDEST DUP5 PUSH3 0x619 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH2 0x5448 PUSH3 0x71C PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x353F ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0xD6C ADD MSTORE PUSH2 0x3513 ADD MSTORE PUSH1 0x0 PUSH2 0x2323 ADD MSTORE PUSH1 0x0 PUSH2 0x2253 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x8A3 ADD MSTORE PUSH2 0x253B ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x832 ADD MSTORE PUSH2 0x2399 ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x7CB ADD MSTORE PUSH2 0x24B4 ADD MSTORE PUSH1 0x0 PUSH2 0x2281 ADD MSTORE PUSH1 0x0 PUSH2 0x22CF ADD MSTORE PUSH1 0x0 PUSH2 0x22A7 ADD MSTORE PUSH2 0x5448 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA8174404 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xF47B7740 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xF47B7740 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xFB0F3EE1 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0xFB4C2AF9 EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0xFD9F1E10 EQ PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA8174404 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xB3A34C4C EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0xDF7B0DAC EQ PUSH2 0x293 JUMPI DUP1 PUSH4 0xED98A574 EQ PUSH2 0x2A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x55944A42 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x55944A42 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x627CDCB9 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x79DF72BD EQ PUSH2 0x21D JUMPI DUP1 PUSH4 0x88147732 EQ PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x2D0335AB EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x46423AA7 EQ PUSH2 0x146 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x331 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x3FDE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x340 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x161 CALLDATASIZE PUSH1 0x4 PUSH2 0x4033 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x80 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP1 DUP5 MSTORE PUSH2 0x100 DUP4 DIV SWAP1 SWAP2 AND ISZERO ISZERO SWAP4 DUP4 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB PUSH3 0x10000 DUP4 DIV DUP2 AND SWAP6 DUP5 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x88 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND PUSH1 0x60 SWAP1 SWAP3 ADD DUP3 SWAP1 MSTORE SWAP4 SWAP2 SWAP3 SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 ISZERO ISZERO DUP6 MSTORE SWAP3 ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE SWAP2 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x1FB PUSH2 0x1F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x473F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x381 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x238 CALLDATASIZE PUSH1 0x4 PUSH2 0x4752 JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x249 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x258 CALLDATASIZE PUSH1 0x4 PUSH2 0x478D JUMP JUMPDEST PUSH2 0x51C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x1FB PUSH2 0x27B CALLDATASIZE PUSH1 0x4 PUSH2 0x47CE JUMP JUMPDEST PUSH2 0x52F JUMP JUMPDEST PUSH2 0x25D PUSH2 0x28E CALLDATASIZE PUSH1 0x4 PUSH2 0x4839 JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST PUSH2 0x25D PUSH2 0x2A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4882 JUMP JUMPDEST PUSH2 0x61E JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x2B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x48F9 JUMP JUMPDEST PUSH2 0x63C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP3 SWAP2 SWAP1 PUSH2 0x49A1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DC PUSH2 0x6C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x49F0 JUMP JUMPDEST PUSH2 0x25D PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A23 JUMP JUMPDEST PUSH2 0x6DD JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x30C CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5E JUMP JUMPDEST PUSH2 0x6E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x32C CALLDATASIZE PUSH1 0x4 PUSH2 0x478D JUMP JUMPDEST PUSH2 0x716 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x33B PUSH2 0x722 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x377 DUP7 PUSH2 0x370 DUP7 DUP9 PUSH2 0x4B2E JUMP JUMPDEST DUP6 DUP6 PUSH2 0x73B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33B PUSH2 0x756 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x160 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x35A SWAP1 DUP1 PUSH2 0x3AC PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x4016 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3CD SWAP2 SWAP1 PUSH2 0x4016 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3E8 PUSH1 0x40 DUP7 ADD DUP7 PUSH2 0x4C62 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x434 JUMPI PUSH2 0x425 PUSH1 0xA0 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x4CAA JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x408 JUMP JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x20 ADD PUSH2 0x44C PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0x4CC6 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x498 JUMPI PUSH2 0x489 PUSH1 0xC0 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x4D0E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x46C JUMP JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x20 ADD PUSH2 0x4B3 PUSH1 0xA0 DUP7 ADD PUSH1 0x80 DUP8 ADD PUSH2 0x4D2A JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4C4 JUMPI PUSH2 0x4C4 PUSH2 0x4671 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xA0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xC0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xE0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x100 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x120 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP1 PUSH1 0x60 ADD SWAP1 PUSH2 0x50D SWAP2 SWAP1 PUSH2 0x4CC6 JUMP JUMPDEST SWAP1 SWAP2 MSTORE POP PUSH2 0x140 DUP5 ADD CALLDATALOAD PUSH2 0x7B3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 DUP4 DUP4 PUSH2 0x8F9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5A2 PUSH2 0x53E DUP7 DUP7 PUSH2 0xAB5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH2 0x59A JUMP JUMPDEST PUSH2 0x587 PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x554 JUMPI SWAP1 POP JUMPDEST POP DUP6 DUP6 PUSH2 0x73B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 PUSH2 0x5BB DUP5 PUSH2 0xB70 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH2 0x617 JUMP JUMPDEST PUSH2 0x604 PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x5D1 JUMPI SWAP1 POP JUMPDEST POP DUP5 PUSH2 0xC1B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A2 PUSH2 0x62C DUP7 PUSH2 0x4D45 JUMP JUMPDEST PUSH2 0x636 DUP6 DUP8 PUSH2 0x4B2E JUMP JUMPDEST DUP5 PUSH2 0xC1B JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x6B4 PUSH2 0x64C DUP12 DUP12 PUSH2 0xAB5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH2 0x6A8 JUMP JUMPDEST PUSH2 0x695 PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x662 JUMPI SWAP1 POP JUMPDEST POP DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xD0C JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x6D2 PUSH2 0xD4B JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35A DUP3 PUSH2 0xDAA JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x704 DUP12 PUSH2 0x6F9 DUP12 DUP14 PUSH2 0x4B2E JUMP JUMPDEST DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xD0C JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 DUP4 DUP4 PUSH2 0x1044 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x20 PUSH1 0x0 MSTORE PUSH8 0x7536561706F7274 PUSH1 0x27 MSTORE PUSH1 0x60 PUSH1 0x0 RETURN JUMPDEST PUSH1 0x60 PUSH2 0x74B DUP6 DUP6 PUSH1 0x1 DUP9 MLOAD PUSH2 0x1245 JUMP JUMPDEST PUSH2 0x5A2 DUP6 DUP5 DUP5 PUSH2 0x155C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x760 PUSH2 0x1687 JUMP JUMPDEST POP CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP2 DUP3 SWAP1 SSTORE SWAP2 MLOAD DUP2 DUP2 MSTORE SWAP1 SWAP3 SWAP2 PUSH32 0x7AB0FC7DE8910A6100B24DF423C3D0835534506DCA9473D30C3E7DF51241B2CF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 SWAP1 JUMP JUMPDEST PUSH2 0x140 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP1 DUP5 ADD MLOAD DUP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 PUSH32 0x0 SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x820 JUMPI DUP3 MLOAD PUSH1 0x1F NOT ADD DUP1 MLOAD DUP7 DUP3 MSTORE PUSH1 0xC0 DUP3 KECCAK256 DUP7 MSTORE SWAP1 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x7F3 JUMP JUMPDEST POP PUSH1 0x20 DUP2 MUL PUSH1 0x40 MLOAD KECCAK256 SWAP5 POP POP POP POP PUSH1 0x0 PUSH32 0x0 SWAP2 POP PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x60 DUP10 ADD MLOAD ADD PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x88E JUMPI DUP2 MLOAD PUSH1 0x1F NOT ADD DUP1 MLOAD DUP7 DUP3 MSTORE PUSH1 0xE0 DUP3 KECCAK256 DUP6 MSTORE SWAP1 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x861 JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP8 MUL SWAP1 KECCAK256 PUSH1 0x1F NOT DUP11 ADD DUP1 MLOAD PUSH32 0x0 DUP3 MSTORE SWAP3 DUP12 ADD DUP1 MLOAD SWAP8 DUP2 MSTORE PUSH1 0x60 DUP13 ADD DUP1 MLOAD SWAP4 DUP2 MSTORE PUSH2 0x140 SWAP1 SWAP13 ADD SWAP11 DUP12 MSTORE PUSH2 0x180 DUP3 KECCAK256 SWAP4 SWAP1 SWAP2 MSTORE SWAP6 SWAP1 SWAP6 MSTORE SWAP4 SWAP1 SWAP8 MSTORE POP POP SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x903 PUSH2 0x1687 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xAA8 JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x924 JUMPI PUSH2 0x924 PUSH2 0x4D51 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x936 SWAP2 SWAP1 PUSH2 0x4D67 JUMP JUMPDEST SWAP1 POP CALLDATASIZE PUSH2 0x943 DUP3 DUP1 PUSH2 0x4D87 JUMP JUMPDEST SWAP1 POP PUSH2 0x952 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x4016 JUMP JUMPDEST SWAP5 POP PUSH2 0x965 PUSH2 0x960 DUP3 PUSH2 0x4D9E JUMP JUMPDEST PUSH2 0x16AC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x80 DUP2 ADD DUP4 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB PUSH3 0x10000 DUP5 DIV DUP2 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x88 SHL SWAP1 SWAP3 DIV AND PUSH1 0x60 DUP3 ADD MSTORE SWAP2 SWAP8 POP PUSH2 0x9CF SWAP1 DUP9 SWAP1 DUP4 SWAP1 PUSH1 0x1 PUSH2 0x16E7 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0xA9A JUMPI PUSH2 0xA22 DUP7 DUP9 PUSH2 0x9E8 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x4DAA 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 0x17A0 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0xA4D SWAP2 DUP5 ADD SWAP1 DUP5 ADD PUSH2 0x4016 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFDE361574A066B44B3B5FE98A87108B7565E327327954C4FAEEA56A4E6491A0A DUP10 PUSH1 0x40 MLOAD PUSH2 0xA91 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP POP POP POP PUSH2 0x909 JUMP JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xAD0 JUMPI PUSH2 0xAD0 PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xB09 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xAF6 PUSH2 0x3E9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xAEE JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB68 JUMPI PUSH2 0xB43 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xB2C JUMPI PUSH2 0xB2C PUSH2 0x4D51 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xB3E SWAP2 SWAP1 PUSH2 0x4D67 JUMP JUMPDEST PUSH2 0xB70 JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB55 JUMPI PUSH2 0xB55 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xB0F JUMP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xB78 PUSH2 0x3E9D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH2 0xB8E DUP5 DUP1 PUSH2 0x4D87 JUMP JUMPDEST PUSH2 0xB97 SWAP1 PUSH2 0x4D9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xBCC SWAP2 SWAP1 PUSH2 0x4DAA 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 DUP3 SWAP1 MSTORE POP SWAP4 DUP6 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP1 SWAP3 MSTORE SWAP3 DUP4 MSTORE SWAP1 SWAP3 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC25 PUSH2 0x17F5 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xC39 DUP9 DUP9 PUSH1 0x1 DUP8 PUSH2 0x1804 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xC61 PUSH2 0x3E9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xC59 JUMPI SWAP1 POP POP SWAP1 POP DUP9 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC8A JUMPI PUSH2 0xC8A PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH2 0xC9F DUP2 DUP10 PUSH2 0x1A8D JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xCB4 JUMPI PUSH2 0xCB4 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH2 0xCD4 DUP2 DUP6 DUP6 DUP5 PUSH2 0x120 ADD MLOAD DUP13 PUSH2 0x1E0A JUMP JUMPDEST PUSH2 0xCF2 DUP6 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD CALLER DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD PUSH2 0x200E JUMP JUMPDEST PUSH2 0xCFC PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0xD1C DUP11 DUP11 PUSH1 0x0 DUP7 PUSH2 0x1245 JUMP JUMPDEST PUSH2 0xD3A DUP11 PUSH2 0xD2A DUP10 DUP12 PUSH2 0x4E3E JUMP JUMPDEST PUSH2 0xD34 DUP9 DUP11 PUSH2 0x4E3E JUMP JUMPDEST DUP8 PUSH2 0x2073 JUMP JUMPDEST SWAP1 SWAP12 SWAP1 SWAP11 POP SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0xD58 PUSH2 0x224F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP3 POP PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP4 ADD MSTORE POP SWAP4 SWAP2 SWAP3 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH2 0x124 CALLDATALOAD SWAP1 DUP2 DIV SWAP1 PUSH1 0x3 AND PUSH1 0x1 DUP3 GT CALLVALUE ISZERO DUP2 EQ DUP1 PUSH2 0xDE6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA61BE9F PUSH1 0xE4 SHL DUP2 MSTORE CALLVALUE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x3 DUP7 GT PUSH1 0xA0 DUP2 MUL PUSH1 0x24 ADD CALLDATALOAD SWAP4 POP PUSH1 0x2 DUP8 EQ PUSH1 0x2 DUP9 GT PUSH1 0x2 DUP10 SUB MUL ADD SWAP3 POP PUSH1 0x1 DUP4 ADD DUP2 MUL PUSH1 0x2 DUP7 ISZERO MUL DUP9 ADD SUB SWAP2 POP POP PUSH2 0xE29 DUP9 DUP7 DUP5 DUP8 DUP8 DUP7 PUSH2 0x2345 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE3B PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x4016 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C4 PUSH1 0x3 DUP9 GT PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x0 DUP7 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xE5D JUMPI PUSH2 0xE5D PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0xEA9 JUMPI PUSH2 0xE88 DUP4 PUSH2 0xE76 PUSH1 0xC0 DUP14 ADD PUSH1 0xA0 DUP15 ADD PUSH2 0x4016 JUMP JUMPDEST DUP5 CALLER DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP16 PUSH1 0xE0 ADD CALLDATALOAD DUP8 PUSH2 0x2685 JUMP JUMPDEST PUSH2 0xEA4 PUSH1 0x40 DUP12 ADD CALLDATALOAD DUP4 PUSH2 0xE9F PUSH2 0x200 DUP15 ADD DUP15 PUSH2 0x4F10 JUMP JUMPDEST PUSH2 0x2739 JUMP JUMPDEST PUSH2 0xCFC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x2 DUP10 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xEDE JUMPI PUSH2 0xEDE PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0xF3E JUMPI PUSH2 0xF09 PUSH2 0xEF6 PUSH1 0xC0 DUP14 ADD PUSH1 0xA0 DUP15 ADD PUSH2 0x4016 JUMP JUMPDEST DUP5 CALLER DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP16 PUSH1 0xE0 ADD CALLDATALOAD DUP8 DUP8 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0xF39 CALLER DUP5 PUSH2 0xF1B PUSH1 0x20 DUP16 ADD DUP16 PUSH2 0x4016 JUMP JUMPDEST DUP15 PUSH1 0x40 ADD CALLDATALOAD DUP16 DUP1 PUSH2 0x200 ADD SWAP1 PUSH2 0xF31 SWAP2 SWAP1 PUSH2 0x4F10 JUMP JUMPDEST PUSH1 0x0 DUP9 PUSH2 0x284B JUMP JUMPDEST PUSH2 0x102A JUMP JUMPDEST PUSH1 0x3 DUP10 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xF52 JUMPI PUSH2 0xF52 PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0xF7D JUMPI PUSH2 0xF09 PUSH2 0xF6A PUSH1 0xC0 DUP14 ADD PUSH1 0xA0 DUP15 ADD PUSH2 0x4016 JUMP JUMPDEST DUP5 CALLER DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP16 PUSH1 0xE0 ADD CALLDATALOAD DUP8 DUP8 PUSH2 0x28D2 JUMP JUMPDEST PUSH1 0x4 DUP10 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xF91 JUMPI PUSH2 0xF91 PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0xFEF JUMPI PUSH2 0xFB9 PUSH2 0xFA6 PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x4016 JUMP JUMPDEST CALLER DUP6 DUP15 PUSH1 0x20 ADD CALLDATALOAD DUP16 PUSH1 0x40 ADD CALLDATALOAD DUP8 DUP8 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0xF39 DUP4 CALLER DUP14 PUSH1 0xA0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xFD1 SWAP2 SWAP1 PUSH2 0x4016 JUMP JUMPDEST DUP15 PUSH1 0xE0 ADD CALLDATALOAD DUP16 DUP1 PUSH2 0x200 ADD SWAP1 PUSH2 0xFE7 SWAP2 SWAP1 PUSH2 0x4F10 JUMP JUMPDEST PUSH1 0x1 DUP9 PUSH2 0x284B JUMP JUMPDEST PUSH2 0x1012 PUSH2 0xFFF PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x4016 JUMP JUMPDEST CALLER DUP6 DUP15 PUSH1 0x20 ADD CALLDATALOAD DUP16 PUSH1 0x40 ADD CALLDATALOAD DUP8 DUP8 PUSH2 0x28D2 JUMP JUMPDEST PUSH2 0x102A DUP4 CALLER DUP14 PUSH1 0xA0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xFD1 SWAP2 SWAP1 PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x1033 DUP2 PUSH2 0x2908 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x104E PUSH2 0x1687 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xAA8 JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x106F JUMPI PUSH2 0x106F PUSH2 0x4D51 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1081 SWAP2 SWAP1 PUSH2 0x4D87 JUMP JUMPDEST SWAP1 POP PUSH2 0x1090 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x4016 JUMP JUMPDEST SWAP5 POP PUSH2 0x10A2 PUSH1 0x40 DUP3 ADD PUSH1 0x20 DUP4 ADD PUSH2 0x4016 JUMP JUMPDEST SWAP4 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x10C6 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x10E4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x203B1CDD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11D3 PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP1 PUSH1 0x40 ADD SWAP1 PUSH2 0x1123 SWAP2 SWAP1 PUSH2 0x4C62 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x116F JUMPI PUSH2 0x1160 PUSH1 0xA0 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x4CAA JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1143 JUMP JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x20 ADD PUSH2 0x1187 PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0x4CC6 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x498 JUMPI PUSH2 0x11C4 PUSH1 0xC0 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x4D0E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x11A7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0x100 OR SWAP1 SSTORE MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP2 SWAP1 DUP9 AND SWAP1 PUSH32 0x6BACC01DBE442496068F7D234EDD811F1A5F833243E0AEC824F86AB861F3C90D SWAP1 PUSH2 0x1233 SWAP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x1054 JUMP JUMPDEST PUSH2 0x124D PUSH2 0x17F5 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1269 JUMPI PUSH2 0x1269 PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1292 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x14B1 JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x12B8 JUMPI PUSH2 0x12B8 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP5 PUSH1 0x0 SUB PUSH2 0x12DD JUMPI PUSH1 0x0 PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 DUP2 ADD DUP3 MSTORE PUSH2 0x14A9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x12EE DUP5 DUP12 DUP12 DUP10 PUSH2 0x1804 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x1 DUP6 ADD DUP7 MSTORE DUP2 PUSH1 0x0 SUB PUSH2 0x1315 JUMPI POP POP PUSH1 0x0 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x14A9 JUMP JUMPDEST DUP3 DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x1328 JUMPI PUSH2 0x1328 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP4 MLOAD PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD PUSH1 0x0 NOT SWAP1 SWAP11 ADD SWAP10 SWAP1 SWAP2 DUP3 SWAP1 SUB SWAP1 TIMESTAMP DUP4 SWAP1 SUB SWAP1 DUP2 DUP4 SUB SWAP1 PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x13F5 JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x137B JUMPI PUSH2 0x137B PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1396 DUP11 DUP11 DUP5 PUSH1 0x80 ADD MLOAD PUSH2 0x2931 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x80 ADD MLOAD DUP3 PUSH1 0x60 ADD MLOAD SUB PUSH2 0x13B3 JUMPI PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x13C8 JUMP JUMPDEST PUSH2 0x13C2 DUP11 DUP11 DUP5 PUSH1 0x60 ADD MLOAD PUSH2 0x2931 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x13E3 SWAP1 DUP3 DUP9 DUP9 DUP12 PUSH1 0x0 PUSH2 0x2981 JUMP JUMPDEST PUSH1 0x60 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH1 0x1 ADD PUSH2 0x135E JUMP JUMPDEST POP DUP9 MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x149D JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x141C JUMPI PUSH2 0x141C PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1437 DUP12 DUP12 DUP5 PUSH1 0x80 ADD MLOAD PUSH2 0x2931 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x80 ADD MLOAD DUP3 PUSH1 0x60 ADD MLOAD SUB PUSH2 0x1454 JUMPI PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x1469 JUMP JUMPDEST PUSH2 0x1463 DUP12 DUP12 DUP5 PUSH1 0x60 ADD MLOAD PUSH2 0x2931 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x1484 SWAP1 DUP3 DUP10 DUP10 DUP13 PUSH1 0x1 PUSH2 0x2981 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x13FF JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x129C JUMP JUMPDEST POP PUSH2 0x14BC DUP7 DUP7 PUSH2 0x1A8D JUMP JUMPDEST DUP4 ISZERO CALLER MUL PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1552 JUMPI PUSH1 0x0 DUP1 SHL DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x14E1 JUMPI PUSH2 0x14E1 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB ISZERO PUSH2 0x154A JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1503 JUMPI PUSH2 0x1503 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH2 0x1548 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1526 JUMPI PUSH2 0x1526 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD DUP7 DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD PUSH2 0x200E JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x14C3 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1577 JUMPI PUSH2 0x1577 PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x15B0 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x159D PUSH2 0x3ED1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1595 JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1665 JUMPI CALLDATASIZE DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x15D2 JUMPI PUSH2 0x15D2 PUSH2 0x4D51 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x15E4 SWAP2 SWAP1 PUSH2 0x4D67 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1608 DUP10 PUSH2 0x15F6 DUP5 DUP1 PUSH2 0x4F10 JUMP JUMPDEST PUSH2 0x1603 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x4F10 JUMP JUMPDEST PUSH2 0x29DC JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x163A JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP PUSH2 0x165B JUMP JUMPDEST DUP1 DUP7 DUP6 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x164F JUMPI PUSH2 0x164F PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x15B7 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x1673 JUMPI DUP1 DUP4 MLOAD SUB DUP4 MSTORE JUMPDEST POP PUSH2 0x167E DUP6 DUP4 PUSH2 0x2CCD JUMP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x16AA JUMPI PUSH1 0x40 MLOAD PUSH4 0x7FA8A987 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16C2 DUP3 PUSH1 0x60 ADD MLOAD MLOAD DUP4 PUSH2 0x140 ADD MLOAD PUSH2 0x2EE2 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x35A SWAP1 DUP4 SWAP1 PUSH2 0x7B3 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x171D JUMPI DUP2 ISZERO PUSH2 0x1715 JUMPI PUSH1 0x40 MLOAD PUSH4 0x694555D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDDD JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x5A5 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND ISZERO PUSH2 0x1795 JUMPI DUP3 ISZERO PUSH2 0x1752 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEE9E0E63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDDD JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND LT PUSH2 0x1795 JUMPI DUP2 ISZERO PUSH2 0x1715 JUMPI PUSH1 0x40 MLOAD PUSH4 0x10FDA3E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDDD JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SUB PUSH2 0x17B5 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17E2 PUSH2 0x17C2 PUSH2 0x224F JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x22 DUP6 DUP2 MSTORE PUSH1 0x42 DUP3 KECCAK256 SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x17EF DUP5 DUP3 DUP5 PUSH2 0x2F03 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x17FD PUSH2 0x1687 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP8 PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH2 0x1824 DUP2 PUSH1 0xA0 ADD MLOAD DUP3 PUSH1 0xC0 ADD MLOAD DUP9 PUSH2 0x3046 JUMP JUMPDEST PUSH2 0x1838 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1A83 JUMP JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD PUSH1 0x40 DUP10 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP1 DUP3 GT DUP1 PUSH2 0x185B JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x1879 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2D029599 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 LT DUP1 ISZERO PUSH2 0x188D JUMPI POP PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x1 AND ISZERO JUMPDEST ISZERO PUSH2 0x18AB JUMPI PUSH1 0x40 MLOAD PUSH4 0xA11B63FF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x18B4 DUP4 PUSH2 0x16AC JUMP JUMPDEST SWAP6 POP PUSH2 0x18D6 DUP11 DUP11 DUP10 DUP10 DUP8 PUSH1 0xE0 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD DUP10 PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD PUSH2 0x308C JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x80 DUP2 ADD DUP4 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB PUSH3 0x10000 DUP5 DIV DUP2 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x88 SHL SWAP1 SWAP3 DIV AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 PUSH2 0x193D SWAP1 DUP9 SWAP1 DUP4 SWAP1 DUP13 PUSH2 0x16E7 JUMP JUMPDEST PUSH2 0x1952 JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x1A83 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x196B JUMPI PUSH2 0x196B DUP5 PUSH1 0x0 ADD MLOAD DUP9 DUP14 PUSH1 0x60 ADD MLOAD PUSH2 0x17A0 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP1 ISZERO PUSH2 0x1A2F JUMPI DUP4 PUSH1 0x1 SUB PUSH2 0x199B JUMPI DUP1 SWAP5 POP DUP1 SWAP4 POP PUSH2 0x19C7 JUMP JUMPDEST DUP4 DUP2 EQ PUSH2 0x19C7 JUMPI PUSH2 0x19AC DUP5 DUP4 PUSH2 0x4F6F JUMP JUMPDEST SWAP2 POP PUSH2 0x19B8 DUP2 DUP7 PUSH2 0x4F6F JUMP JUMPDEST SWAP5 POP PUSH2 0x19C4 DUP2 DUP6 PUSH2 0x4F6F JUMP JUMPDEST SWAP4 POP JUMPDEST DUP4 PUSH2 0x19D2 DUP7 DUP5 PUSH2 0x4F8E JUMP JUMPDEST GT ISZERO PUSH2 0x19DE JUMPI DUP2 DUP5 SUB SWAP5 POP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB DUP7 DUP2 AND PUSH1 0x1 PUSH1 0x88 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB DUP7 DUP11 ADD SWAP3 SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0x1 OR AND OR SWAP1 SSTORE PUSH2 0x1A78 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB DUP7 DUP2 AND PUSH1 0x1 PUSH1 0x88 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB SWAP2 DUP10 AND PUSH3 0x10000 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0x1 OR AND OR SWAP1 SSTORE JUMPDEST POP SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1CD4 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1AB0 JUMPI PUSH2 0x1AB0 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD SWAP1 POP DUP4 DUP2 LT PUSH2 0x1AE3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x21A561B1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1AF5 JUMPI PUSH2 0x1AF5 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND PUSH1 0x0 SUB PUSH2 0x1B18 JUMPI POP POP PUSH2 0x1CCC JUMP JUMPDEST PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B2C JUMPI PUSH2 0x1B2C PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD MLOAD PUSH1 0x40 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP1 DUP1 DUP7 PUSH1 0x20 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1B5A JUMPI PUSH2 0x1B5A PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x1BF4 JUMPI PUSH1 0x40 DUP5 ADD MLOAD DUP1 MLOAD DUP5 LT PUSH2 0x1B85 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5FD9FC67 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1B99 JUMPI PUSH2 0x1B99 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD DUP1 MLOAD PUSH1 0x40 DUP3 ADD MLOAD SWAP1 SWAP6 POP SWAP4 POP SWAP1 POP PUSH1 0x4 DUP5 EQ PUSH1 0x3 SUB DUP2 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1BCC JUMPI PUSH2 0x1BCC PUSH2 0x4671 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1BDF JUMPI PUSH2 0x1BDF PUSH2 0x4671 JUMP JUMPDEST SWAP1 MSTORE POP POP PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE POP PUSH2 0x1C85 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD DUP1 MLOAD DUP5 LT PUSH2 0x1C1A JUMPI PUSH1 0x40 MLOAD PUSH4 0x30446BEF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1C2E JUMPI PUSH2 0x1C2E PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD DUP1 MLOAD PUSH1 0x40 DUP3 ADD MLOAD SWAP1 SWAP6 POP SWAP4 POP SWAP1 POP PUSH1 0x4 DUP5 EQ PUSH1 0x3 SUB DUP2 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1C61 JUMPI PUSH2 0x1C61 PUSH2 0x4671 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1C74 JUMPI PUSH2 0x1C74 PUSH2 0x4671 JUMP JUMPDEST SWAP1 MSTORE POP POP PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE POP JUMPDEST PUSH2 0x1C8F DUP3 PUSH1 0x3 LT SWAP1 JUMP JUMPDEST PUSH2 0x1CAC JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A75B57B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x1CC5 JUMPI PUSH2 0x1CC5 DUP7 PUSH1 0x60 ADD MLOAD DUP3 DUP9 PUSH1 0x80 ADD MLOAD PUSH2 0x316D JUMP JUMPDEST POP POP POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1A94 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1E03 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1CF4 JUMPI PUSH2 0x1CF4 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND PUSH1 0x0 SUB PUSH2 0x1D19 JUMPI POP PUSH2 0x1DFB JUMP JUMPDEST PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1D2D JUMPI PUSH2 0x1D2D PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x60 ADD MLOAD MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1DA4 JUMPI PUSH2 0x1D7B DUP4 PUSH1 0x60 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1D69 JUMPI PUSH2 0x1D69 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x3 LT SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1D9C JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x22973 PUSH1 0xE6 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x1D48 JUMP JUMPDEST POP POP PUSH1 0x40 DUP2 ADD MLOAD MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1DF6 JUMPI PUSH2 0x1DD0 DUP4 PUSH1 0x40 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1D69 JUMPI PUSH2 0x1D69 PUSH2 0x4D51 JUMP JUMPDEST ISZERO PUSH2 0x1DEE JUMPI PUSH1 0x40 MLOAD PUSH4 0xA6CFC673 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x1DAF JUMP JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1CD8 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0xA0 ADD MLOAD DUP7 PUSH1 0xC0 ADD MLOAD PUSH2 0x1E20 SWAP2 SWAP1 PUSH2 0x4FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0xA0 ADD MLOAD TIMESTAMP PUSH2 0x1E34 SWAP2 SWAP1 PUSH2 0x4FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E42 DUP3 DUP5 PUSH2 0x4FA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP CALLVALUE SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0x31DD PUSH1 0x0 JUMPDEST DUP12 PUSH1 0x40 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1F26 JUMPI PUSH1 0x0 DUP13 PUSH1 0x40 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1E93 JUMPI PUSH2 0x1E93 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1EB8 DUP3 PUSH1 0x60 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD DUP16 DUP16 DUP13 DUP13 DUP16 PUSH1 0x0 PUSH2 0x329A JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE CALLER PUSH1 0x80 DUP5 ADD MSTORE SWAP1 POP PUSH1 0x0 DUP3 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1EDC JUMPI PUSH2 0x1EDC PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x1F08 JUMPI DUP6 DUP2 GT ISZERO PUSH2 0x1F02 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP7 SUB SWAP6 POP JUMPDEST PUSH2 0x1F1C DUP3 DUP16 PUSH1 0x0 ADD MLOAD DUP14 DUP9 DUP9 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1E6E JUMP JUMPDEST POP PUSH2 0x31DD SWAP1 POP PUSH1 0x0 JUMPDEST DUP12 PUSH1 0x60 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1FE7 JUMPI PUSH1 0x0 DUP13 PUSH1 0x60 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1F54 JUMPI PUSH2 0x1F54 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1F79 DUP3 PUSH1 0x60 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD DUP16 DUP16 DUP13 DUP13 DUP16 PUSH1 0x1 PUSH2 0x329A JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE SWAP1 POP PUSH1 0x0 DUP3 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1FA1 JUMPI PUSH2 0x1FA1 PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x1FCD JUMPI DUP6 DUP2 GT ISZERO PUSH2 0x1FC7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP7 SUB SWAP6 POP JUMPDEST PUSH2 0x1FDD DUP3 CALLER DUP13 DUP9 DUP9 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1F2F JUMP JUMPDEST POP POP PUSH2 0x1FF2 DUP2 PUSH2 0x2908 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2002 JUMPI PUSH2 0x2002 CALLER DUP4 PUSH2 0x32E6 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SWAP1 POP PUSH1 0x60 DUP3 SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9D9AF8E38D66C62E2C12F0225249FD9D721C54B83F48D9352C97C6CACDCB6F31 DUP11 DUP9 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x2061 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4FF7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP3 MLOAD DUP3 MLOAD PUSH1 0x60 SWAP2 DUP3 SWAP2 PUSH2 0x2086 DUP2 DUP4 PUSH2 0x4F8E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x209D JUMPI PUSH2 0x209D PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x20D6 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x20C3 PUSH2 0x3ED1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x20BB JUMPI SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x216F JUMPI PUSH1 0x0 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x20F9 JUMPI PUSH2 0x20F9 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x2112 DUP13 PUSH1 0x0 DUP5 DUP13 PUSH2 0x333A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x2144 JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP PUSH2 0x2165 JUMP JUMPDEST DUP1 DUP8 DUP6 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x2159 JUMPI PUSH2 0x2159 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x20DD JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2207 JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x218F JUMPI PUSH2 0x218F PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x21A8 DUP13 PUSH1 0x1 DUP5 DUP13 PUSH2 0x333A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x21DA JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP PUSH2 0x21FD JUMP JUMPDEST DUP1 DUP8 DUP6 DUP9 DUP7 ADD SUB DUP2 MLOAD DUP2 LT PUSH2 0x21F1 JUMPI PUSH2 0x21F1 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2173 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x2215 JUMPI DUP1 DUP5 MLOAD SUB DUP5 MSTORE JUMPDEST POP DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x2238 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD5DA9A1B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2242 DUP9 DUP5 PUSH2 0x2CCD JUMP JUMPDEST SWAP4 POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x2320 JUMPI PUSH2 0x33B PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x234D PUSH2 0x17F5 JUMP JUMPDEST PUSH2 0x2363 DUP7 PUSH2 0x120 ADD CALLDATALOAD DUP8 PUSH2 0x140 ADD CALLDATALOAD PUSH1 0x1 PUSH2 0x3046 JUMP JUMPDEST POP PUSH2 0x236C PUSH2 0x33D5 JUMP JUMPDEST PUSH2 0x2394 PUSH2 0x237D PUSH2 0x200 DUP9 ADD DUP9 PUSH2 0x4F10 JUMP JUMPDEST PUSH2 0x2389 SWAP2 POP PUSH1 0x1 PUSH2 0x4F8E JUMP JUMPDEST DUP8 PUSH2 0x1E0 ADD CALLDATALOAD PUSH2 0x2EE2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 SWAP1 POP DUP1 PUSH1 0x80 MSTORE DUP6 PUSH1 0xA0 MSTORE PUSH1 0x60 PUSH1 0x24 PUSH1 0xC0 CALLDATACOPY PUSH1 0x40 PUSH1 0x64 PUSH2 0x120 CALLDATACOPY PUSH1 0xE0 PUSH1 0x80 KECCAK256 PUSH2 0x160 MSTORE PUSH2 0x264 CALLDATALOAD PUSH1 0x20 DUP2 MUL PUSH2 0x2A0 ADD PUSH1 0x1 PUSH2 0x264 CALLDATALOAD ADD DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP DUP8 DUP2 MSTORE PUSH1 0x80 PUSH1 0x24 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH2 0x160 DUP8 PUSH1 0xA0 MSTORE DUP7 PUSH1 0xC0 MSTORE PUSH1 0x0 PUSH1 0xE0 MSTORE PUSH2 0x204 CALLDATALOAD SWAP3 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2465 JUMPI DUP1 PUSH1 0x40 MUL PUSH2 0x284 ADD PUSH1 0x20 DUP2 PUSH2 0x100 CALLDATACOPY PUSH1 0x40 DUP2 PUSH2 0x120 CALLDATACOPY PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0xE0 PUSH1 0x80 KECCAK256 DUP4 MSTORE PUSH1 0xA0 DUP5 ADD SWAP4 POP DUP10 DUP5 MSTORE DUP9 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 PUSH1 0x60 DUP7 ADD CALLDATACOPY POP PUSH1 0x1 ADD PUSH2 0x241A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 DUP6 ADD MUL PUSH2 0x160 KECCAK256 PUSH1 0x60 MSTORE PUSH2 0x264 CALLDATALOAD SWAP4 POP JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24AB JUMPI DUP1 PUSH1 0x40 MUL PUSH2 0x284 ADD SWAP2 POP PUSH1 0xA0 DUP4 ADD SWAP3 POP DUP9 DUP4 MSTORE DUP8 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 PUSH1 0x60 DUP6 ADD CALLDATACOPY PUSH1 0x1 ADD PUSH2 0x247A JUMP JUMPDEST POP POP POP POP POP PUSH1 0x0 PUSH32 0x0 SWAP1 POP DUP1 PUSH1 0x80 MSTORE DUP3 PUSH1 0xA0 MSTORE PUSH1 0x60 PUSH1 0xC4 PUSH1 0xC0 CALLDATACOPY PUSH1 0x20 PUSH2 0x104 PUSH2 0x120 CALLDATACOPY PUSH1 0xC0 PUSH1 0x80 KECCAK256 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0xE0 MSTORE PUSH1 0x20 PUSH2 0x264 CALLDATALOAD MUL PUSH2 0x200 ADD PUSH1 0x1 DUP2 MSTORE DUP4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0xC4 PUSH1 0x40 DUP4 ADD CALLDATACOPY POP POP PUSH1 0x84 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH32 0x0 PUSH1 0x80 DUP2 SWAP1 MSTORE SWAP1 SWAP2 POP PUSH1 0x40 PUSH1 0x84 PUSH1 0xA0 CALLDATACOPY PUSH1 0x60 MLOAD PUSH2 0x100 MSTORE DUP9 PUSH2 0x120 MSTORE PUSH1 0xA0 PUSH2 0x144 PUSH2 0x140 CALLDATACOPY DUP2 PUSH2 0x1E0 MSTORE PUSH2 0x180 PUSH1 0x80 KECCAK256 SWAP4 POP POP POP POP PUSH1 0x20 PUSH2 0x264 CALLDATALOAD MUL PUSH2 0x180 ADD DUP2 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x120 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 PUSH2 0x264 CALLDATALOAD MUL PUSH2 0x1E0 ADD PUSH1 0xA4 CALLDATALOAD PUSH1 0x84 CALLDATALOAD PUSH32 0x9D9AF8E38D66C62E2C12F0225249FD9D721C54B83F48D9352C97C6CACDCB6F31 DUP4 DUP6 LOG3 POP POP PUSH1 0x0 PUSH1 0x60 MSTORE PUSH2 0x2620 DUP2 DUP9 PUSH2 0x160 ADD CALLDATALOAD DUP9 DUP11 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x260B SWAP2 SWAP1 PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x261B PUSH1 0xA0 DUP14 ADD PUSH1 0x80 DUP15 ADD PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x3416 JUMP JUMPDEST PUSH2 0x267C DUP2 PUSH2 0x2634 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x2642 PUSH2 0x220 DUP12 ADD DUP12 PUSH2 0x4DAA 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 0x3466 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x26E1 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP PUSH4 0x2671A551 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE DUP8 PUSH1 0x44 DUP3 ADD MSTORE DUP7 PUSH1 0x64 DUP3 ADD MSTORE DUP6 PUSH1 0x84 DUP3 ADD MSTORE DUP5 PUSH1 0xA4 DUP3 ADD MSTORE DUP4 PUSH1 0xC4 DUP3 ADD MSTORE DUP3 PUSH1 0xE4 DUP3 ADD MSTORE PUSH2 0x26DB DUP3 DUP3 PUSH2 0x104 PUSH2 0x3508 JUMP JUMPDEST POP PUSH2 0x267C JUMP JUMPDEST PUSH1 0x2 DUP8 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x26F5 JUMPI PUSH2 0x26F5 PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x272C JUMPI DUP2 PUSH1 0x1 EQ PUSH2 0x271B JUMPI PUSH1 0x40 MLOAD PUSH4 0xEFCC00B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2727 DUP7 DUP7 DUP7 DUP7 PUSH2 0x35F8 JUMP JUMPDEST PUSH2 0x267C JUMP JUMPDEST PUSH2 0x267C DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x36B9 JUMP JUMPDEST CALLVALUE DUP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x27AC JUMPI CALLDATASIZE DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x2759 JUMPI PUSH2 0x2759 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x40 MUL SWAP2 SWAP1 SWAP2 ADD SWAP2 POP POP DUP1 CALLDATALOAD DUP5 DUP2 GT ISZERO PUSH2 0x2786 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x279F PUSH2 0x2799 PUSH1 0x40 DUP5 ADD PUSH1 0x20 DUP6 ADD PUSH2 0x4016 JUMP JUMPDEST DUP3 PUSH2 0x32E6 JUMP JUMPDEST SWAP1 SWAP4 SUB SWAP3 POP PUSH1 0x1 ADD PUSH2 0x273E JUMP JUMPDEST POP DUP2 DUP7 GT ISZERO PUSH2 0x27CE JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x27D8 DUP6 DUP8 PUSH2 0x32E6 JUMP JUMPDEST DUP6 DUP3 GT ISZERO PUSH2 0x27EC JUMPI PUSH2 0x27EC CALLER DUP8 DUP5 SUB PUSH2 0x32E6 JUMP JUMPDEST PUSH2 0x27F6 PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2808 DUP2 DUP4 PUSH2 0x379D JUMP JUMPDEST DUP2 PUSH2 0x283A JUMPI DUP3 PUSH1 0x1 EQ PUSH2 0x282E JUMPI PUSH1 0x40 MLOAD PUSH4 0xEFCC00B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2727 DUP8 DUP8 DUP8 DUP8 PUSH2 0x35F8 JUMP JUMPDEST PUSH2 0x267C DUP3 DUP3 PUSH1 0x2 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x37BC JUMP JUMPDEST PUSH1 0x20 DUP3 MUL PUSH2 0x1E4 SUB CALLDATALOAD DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x28B9 JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x2873 JUMPI PUSH2 0x2873 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x40 MUL SWAP2 SWAP1 SWAP2 ADD SWAP2 POP POP DUP1 CALLDATALOAD DUP7 ISZERO PUSH2 0x2892 JUMPI PUSH2 0x288F DUP2 DUP12 PUSH2 0x4FA6 JUMP JUMPDEST SWAP10 POP JUMPDEST PUSH2 0x28AF DUP12 DUP15 PUSH2 0x28A7 PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x4016 JUMP JUMPDEST DUP5 DUP10 DUP12 PUSH2 0x383C JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2858 JUMP JUMPDEST POP PUSH2 0x28C8 DUP9 DUP12 DUP12 DUP11 DUP7 DUP9 PUSH2 0x383C JUMP JUMPDEST PUSH2 0x2002 PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH2 0x28DB DUP4 PUSH2 0x3877 JUMP JUMPDEST PUSH2 0x28E5 DUP2 DUP4 PUSH2 0x379D JUMP JUMPDEST DUP2 PUSH2 0x28F7 JUMPI PUSH2 0x2727 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x36B9 JUMP JUMPDEST PUSH2 0x267C DUP3 DUP3 PUSH1 0x3 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x37BC JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 EQ PUSH2 0x2914 JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2921 DUP3 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x292D DUP2 DUP4 PUSH2 0x3898 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 SUB PUSH2 0x2941 JUMPI POP DUP1 PUSH2 0x528 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP5 MULMOD ISZERO SWAP1 POP DUP1 PUSH2 0x2968 JUMPI PUSH1 0x40 MLOAD PUSH4 0xC63CF089 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2974 DUP7 DUP6 PUSH2 0x4F6F JUMP JUMPDEST SWAP5 SWAP1 SWAP5 DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 DUP8 EQ PUSH2 0x29D1 JUMPI PUSH1 0x0 DUP3 ISZERO PUSH2 0x2999 JUMPI POP PUSH1 0x0 NOT DUP4 ADD JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x29A6 DUP9 DUP11 PUSH2 0x4F6F JUMP JUMPDEST PUSH2 0x29B0 DUP9 DUP13 PUSH2 0x4F6F JUMP JUMPDEST PUSH2 0x29BA SWAP2 SWAP1 PUSH2 0x4F8E JUMP JUMPDEST PUSH2 0x29C4 SWAP2 SWAP1 PUSH2 0x4F8E JUMP JUMPDEST DUP6 SWAP1 DIV SWAP3 POP PUSH2 0x377 SWAP2 POP POP JUMP JUMPDEST POP SWAP4 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x29E4 PUSH2 0x3ED1 JUMP JUMPDEST DUP4 ISZERO DUP1 PUSH2 0x29EF JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x2A0D JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C74EDB7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2A15 PUSH2 0x3ED1 JUMP JUMPDEST PUSH2 0x2A72 DUP8 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x2A67 JUMPI PUSH2 0x2A58 PUSH1 0x40 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x5091 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2A3B JUMP JUMPDEST POP POP POP POP POP DUP4 PUSH2 0x38BC JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP8 DUP2 MSTORE PUSH2 0x2AD1 SWAP2 DUP11 SWAP2 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP2 SWAP1 PUSH1 0x0 SWAP1 DUP6 ADD JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x2AC6 JUMPI PUSH2 0x2AB7 PUSH1 0x40 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x5091 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2A9A JUMP JUMPDEST POP POP POP POP POP DUP6 PUSH2 0x3A68 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2AE4 JUMPI PUSH2 0x2AE4 PUSH2 0x4671 JUMP JUMPDEST DUP4 MLOAD MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2AF8 JUMPI PUSH2 0x2AF8 PUSH2 0x4671 JUMP JUMPDEST EQ ISZERO DUP1 PUSH2 0x2B23 JUMPI POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST DUP1 PUSH2 0x2B3A JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x40 ADD MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x2B58 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9CFB455 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD DUP2 PUSH1 0x60 ADD MLOAD GT ISZERO PUSH2 0x2C0F JUMPI PUSH1 0x0 DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x2B81 JUMPI PUSH2 0x2B81 PUSH2 0x4D51 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2B97 SWAP2 SWAP1 PUSH2 0x5091 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x2BB1 SWAP2 SWAP1 PUSH2 0x4FA6 JUMP JUMPDEST DUP10 DUP3 PUSH1 0x0 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2BC7 JUMPI PUSH2 0x2BC7 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2BEC JUMPI PUSH2 0x2BEC PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x60 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MLOAD DUP2 ADD MLOAD SWAP1 DUP4 ADD MSTORE POP PUSH2 0x2CA1 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP8 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x2C24 JUMPI PUSH2 0x2C24 PUSH2 0x4D51 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2C3A SWAP2 SWAP1 PUSH2 0x5091 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x60 ADD MLOAD DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH2 0x2C54 SWAP2 SWAP1 PUSH2 0x4FA6 JUMP JUMPDEST DUP10 DUP3 PUSH1 0x0 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2C6A JUMPI PUSH2 0x2C6A PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2C8F JUMPI PUSH2 0x2C8F PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP POP JUMPDEST PUSH1 0x60 DUP1 DUP3 ADD MLOAD DUP5 MLOAD SWAP1 SWAP2 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 ADD MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x60 SWAP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2CEA JUMPI PUSH2 0x2CEA PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2D13 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2DF9 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2D35 JUMPI PUSH2 0x2D35 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND PUSH1 0x0 SUB PUSH2 0x2D5A JUMPI POP PUSH2 0x2DF1 JUMP JUMPDEST PUSH1 0x1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2D6E JUMPI PUSH2 0x2D6E PUSH2 0x4D51 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x2DED JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2DA4 JUMPI PUSH2 0x2DA4 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x2DE4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x14BEA841 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xDDD JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2D87 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2D19 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE CALLVALUE SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x2EB5 JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2E3E JUMPI PUSH2 0x2E3E PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD DUP1 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2E63 JUMPI PUSH2 0x2E63 PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x2E97 JUMPI DUP5 DUP2 PUSH1 0x60 ADD MLOAD GT ISZERO PUSH2 0x2E8D JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD DUP6 SUB SWAP5 POP JUMPDEST PUSH2 0x2EAB DUP2 DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD DUP8 PUSH2 0x31DD JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2E21 JUMP JUMPDEST POP PUSH2 0x2EBF DUP2 PUSH2 0x2908 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2ECF JUMPI PUSH2 0x2ECF CALLER DUP4 PUSH2 0x32E6 JUMP JUMPDEST PUSH2 0x2ED9 PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x292D JUMPI PUSH1 0x40 MLOAD PUSH4 0x2335530B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x40 SUB PUSH2 0x2F34 JUMPI POP POP POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP2 AND SWAP1 PUSH1 0xFF SHR PUSH1 0x1B ADD PUSH2 0x2F9A JUMP JUMPDEST DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x2F8F JUMPI POP POP POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x0 BYTE PUSH1 0x1B DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2F67 JUMPI POP DUP1 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x2F8A JUMPI PUSH1 0x40 MLOAD PUSH4 0xF801E85 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0xFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDDD JUMP JUMPDEST PUSH2 0x2F9A JUMP JUMPDEST PUSH2 0x27F6 DUP7 DUP7 DUP7 PUSH2 0x3BF2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP9 SWAP1 MSTORE PUSH1 0xFF DUP5 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 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 0x2FEE 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 0x3022 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8BAA579F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x267C JUMPI PUSH2 0x267C DUP8 DUP8 DUP8 PUSH2 0x3BF2 JUMP JUMPDEST PUSH1 0x0 TIMESTAMP DUP5 GT DUP1 PUSH2 0x3056 JUMPI POP TIMESTAMP DUP4 GT ISZERO JUMPDEST ISZERO PUSH2 0x3082 JUMPI DUP2 ISZERO PUSH2 0x307A JUMPI PUSH1 0x40 MLOAD PUSH4 0x37BF5613 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x528 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x30A0 JUMPI PUSH2 0x30A0 PUSH2 0x4671 JUMP JUMPDEST GT DUP1 ISZERO PUSH2 0x30B6 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x30CB JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1552 JUMPI PUSH1 0x80 DUP9 ADD MLOAD MLOAD ISZERO DUP1 ISZERO PUSH2 0x30E2 JUMPI POP DUP7 MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x30F8 JUMPI PUSH2 0x30F3 DUP2 DUP7 DUP5 DUP8 PUSH2 0x3C69 JUMP JUMPDEST PUSH2 0x1552 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3156 DUP3 PUSH4 0x33131570 PUSH1 0xE0 SHL DUP9 CALLER DUP14 DUP13 DUP15 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x311F SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5265 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3CB5 JUMP JUMPDEST SWAP1 POP PUSH2 0x3162 DUP2 DUP8 PUSH2 0x3CCA JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP5 MLOAD MUL DUP2 ADD JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x31B9 JUMPI DUP2 MLOAD DUP1 DUP5 GT DUP1 ISZERO PUSH2 0x319C JUMPI DUP2 PUSH1 0x0 MSTORE DUP5 PUSH1 0x20 MSTORE PUSH2 0x31A5 JUMP JUMPDEST DUP5 PUSH1 0x0 MSTORE DUP2 PUSH1 0x20 MSTORE JUMPDEST POP POP PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP3 POP PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x317C JUMP JUMPDEST POP POP DUP4 EQ SWAP1 POP DUP1 PUSH2 0x17EF JUMPI PUSH1 0x40 MLOAD PUSH4 0x9BDE339 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x31F2 JUMPI PUSH2 0x31F2 PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x320E JUMPI PUSH2 0x3209 DUP5 PUSH1 0x80 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x32E6 JUMP JUMPDEST PUSH2 0x17EF JUMP JUMPDEST PUSH1 0x1 DUP5 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x3223 JUMPI PUSH2 0x3223 PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x3242 JUMPI PUSH2 0x3209 DUP5 PUSH1 0x20 ADD MLOAD DUP5 DUP7 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD DUP7 DUP7 PUSH2 0x383C JUMP JUMPDEST PUSH1 0x2 DUP5 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x3257 JUMPI PUSH2 0x3257 PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x327B JUMPI PUSH2 0x3209 DUP5 PUSH1 0x20 ADD MLOAD DUP5 DUP7 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD DUP8 DUP8 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0x17EF DUP5 PUSH1 0x20 ADD MLOAD DUP5 DUP7 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD DUP8 DUP8 PUSH2 0x28D2 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP10 SUB PUSH2 0x32B5 JUMPI PUSH2 0x32AE DUP8 DUP8 DUP11 PUSH2 0x2931 JUMP JUMPDEST SWAP1 POP PUSH2 0x32DA JUMP JUMPDEST PUSH2 0x32D7 PUSH2 0x32C3 DUP9 DUP9 DUP13 PUSH2 0x2931 JUMP JUMPDEST PUSH2 0x32CE DUP10 DUP10 DUP13 PUSH2 0x2931 JUMP JUMPDEST DUP8 DUP8 DUP8 DUP8 PUSH2 0x2981 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x32EF DUP2 PUSH2 0x3877 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP8 GAS CALL SWAP1 POP DUP1 PUSH2 0x3335 JUMPI PUSH2 0x330A PUSH2 0x3D24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x470C7C1D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xDDD JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x3342 PUSH2 0x3ED1 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x3366 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x375C24C1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDDD SWAP2 SWAP1 PUSH2 0x53EB JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x337A JUMPI PUSH2 0x337A PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x338F JUMPI PUSH2 0x338A DUP6 DUP5 DUP4 PUSH2 0x3A68 JUMP JUMPDEST PUSH2 0x33A8 JUMP JUMPDEST PUSH2 0x339A DUP6 DUP5 DUP4 PUSH2 0x38BC JUMP JUMPDEST CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP3 SWAP1 MSTORE JUMPDEST DUP1 MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x0 SUB PUSH2 0x5A5 JUMPI PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x244 CALLDATALOAD PUSH2 0x260 PUSH2 0x264 CALLDATALOAD PUSH1 0x40 MUL ADD EQ PUSH1 0x4 CALLDATALOAD PUSH1 0x20 EQ PUSH2 0x224 CALLDATALOAD PUSH2 0x240 EQ AND AND DUP1 PUSH2 0x3413 JUMPI PUSH1 0x40 MLOAD PUSH4 0x39F3E3FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x342A JUMPI PUSH2 0x342A PUSH2 0x4671 JUMP JUMPDEST GT DUP1 ISZERO PUSH2 0x3440 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3455 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1E03 JUMPI PUSH2 0x1E03 DUP2 DUP7 DUP5 DUP8 PUSH2 0x3C69 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x80 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB PUSH3 0x10000 DUP4 DIV DUP2 AND SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x88 SHL SWAP1 SWAP2 DIV SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x34CE DUP5 DUP3 PUSH1 0x1 DUP1 PUSH2 0x16E7 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x34E0 JUMPI PUSH2 0x34E0 DUP4 DUP6 DUP5 PUSH2 0x17A0 JUMP JUMPDEST POP POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH18 0x10000000000000000000000000000010001 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF PUSH1 0xA0 SHL PUSH32 0x0 OR PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 DUP2 MSTORE PUSH32 0x0 DUP5 MSTORE PUSH1 0x55 PUSH1 0xB KECCAK256 SWAP3 SWAP1 SWAP4 MSTORE DUP1 DUP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 DUP2 DUP5 DUP7 DUP3 DUP7 GAS CALL SWAP1 POP DUP1 PUSH2 0x35B2 JUMPI PUSH2 0x358E PUSH2 0x3D24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x344F54F5 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDDD JUMP JUMPDEST PUSH1 0x0 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x2671A551 PUSH1 0xE1 SHL EQ PUSH2 0x27F6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE7CCD93 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xDDD JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x3613 JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x36AA JUMPI RETURNDATASIZE ISZERO PUSH2 0x3684 JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x366B JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x3680 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x36D4 JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH4 0x79212195 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0x3781 JUMPI RETURNDATASIZE ISZERO PUSH2 0x375C JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x3743 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x3758 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37AA DUP4 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x3335 JUMPI PUSH2 0x3335 DUP4 PUSH2 0x2908 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP9 MLOAD SUB PUSH2 0x37F7 JUMPI POP PUSH1 0x40 DUP1 DUP9 MSTORE PUSH1 0x20 DUP1 DUP10 ADD DUP11 SWAP1 MSTORE PUSH4 0x2671A551 PUSH1 0xE1 SHL SWAP2 DUP10 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x1 PUSH1 0x64 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x3806 JUMP JUMPDEST POP PUSH1 0x64 DUP8 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 MSTORE JUMPDEST PUSH1 0x3C PUSH1 0xC0 DUP3 MUL DUP10 ADD SUB DUP8 DUP2 MSTORE DUP7 PUSH1 0x20 DUP3 ADD MSTORE DUP6 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE DUP4 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3845 DUP4 PUSH2 0x3877 JUMP JUMPDEST PUSH2 0x384F DUP2 DUP4 PUSH2 0x379D JUMP JUMPDEST DUP2 PUSH2 0x3865 JUMPI PUSH2 0x3860 DUP7 DUP7 DUP7 DUP7 PUSH2 0x3D69 JUMP JUMPDEST PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x27F6 DUP3 DUP3 PUSH1 0x1 DUP10 DUP10 DUP10 PUSH1 0x0 DUP11 PUSH2 0x37BC JUMP JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x3413 JUMPI PUSH1 0x40 MLOAD PUSH4 0x246CF945 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x64 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD SWAP1 PUSH1 0xC0 MUL PUSH1 0x44 ADD PUSH2 0x38B3 DUP5 DUP4 DUP4 PUSH2 0x3508 JUMP JUMPDEST POP POP PUSH1 0x20 SWAP1 MSTORE POP JUMP JUMPDEST PUSH2 0x38E8 JUMP JUMPDEST PUSH4 0x7FDA7279 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD DUP1 MLOAD MLOAD DUP5 MLOAD DUP2 LT PUSH2 0x38FF JUMPI PUSH2 0x38FF PUSH2 0x38C1 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL PUSH1 0x20 DUP7 ADD ADD MLOAD PUSH1 0x60 DUP2 MLOAD ADD MLOAD PUSH1 0x20 DUP5 MLOAD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x3925 JUMPI PUSH2 0x3925 PUSH2 0x38C1 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL PUSH1 0x20 DUP4 ADD ADD MLOAD PUSH1 0x0 DUP1 PUSH1 0x20 DUP7 ADD MLOAD ISZERO PUSH2 0x394C JUMPI POP POP PUSH1 0x60 DUP2 ADD DUP1 MLOAD PUSH1 0x0 SWAP1 SWAP2 MSTORE DUP1 ISZERO JUMPDEST DUP9 MLOAD DUP4 MLOAD DUP2 MSTORE PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xA0 DUP5 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x60 DUP2 KECCAK256 PUSH1 0x20 DUP13 MLOAD MUL DUP13 ADD JUMPDEST DUP1 DUP12 LT ISZERO PUSH2 0x3A23 JUMPI PUSH1 0x20 DUP12 ADD SWAP11 POP DUP11 MLOAD MLOAD SWAP10 POP DUP14 MLOAD DUP11 LT PUSH2 0x399F JUMPI PUSH2 0x399F PUSH2 0x38C1 JUMP JUMPDEST PUSH1 0x20 DUP11 MUL PUSH1 0x20 DUP16 ADD ADD MLOAD SWAP9 POP PUSH1 0x20 DUP10 ADD MLOAD ISZERO PUSH2 0x397C JUMPI PUSH1 0x60 DUP10 MLOAD ADD MLOAD SWAP8 POP PUSH1 0x20 DUP12 MLOAD ADD MLOAD SWAP7 POP DUP8 MLOAD DUP8 LT PUSH2 0x39D5 JUMPI PUSH2 0x39D5 PUSH2 0x38C1 JUMP JUMPDEST PUSH1 0x20 DUP8 MUL PUSH1 0x20 DUP10 ADD ADD MLOAD SWAP6 POP PUSH1 0x60 DUP7 ADD DUP1 MLOAD DUP7 ADD DUP2 MLOAD ISZERO DUP8 DUP3 LT PUSH1 0x1 SHL OR DUP7 OR SWAP6 POP DUP1 SWAP7 POP POP PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x60 DUP7 KECCAK256 DUP3 EQ PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0xA0 DUP9 ADD MLOAD EQ AND PUSH2 0x3A1E JUMPI PUSH2 0x3A1E PUSH2 0x38C1 JUMP JUMPDEST PUSH2 0x397C JUMP JUMPDEST POP POP PUSH1 0x60 ADD DUP3 SWAP1 MSTORE DUP1 PUSH1 0x1 DUP2 EQ PUSH2 0x3A41 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x3A52 JUMPI PUSH2 0x3A5A JUMP JUMPDEST PUSH4 0x246CF945 PUSH1 0xE2 SHL PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x3A5A PUSH2 0x38D2 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP1 MLOAD MLOAD DUP5 MLOAD DUP2 LT PUSH2 0x3A7F JUMPI PUSH2 0x3A7F PUSH2 0x38C1 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL PUSH1 0x20 DUP7 ADD ADD MLOAD DUP1 MLOAD PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x20 DUP6 MLOAD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x3AA6 JUMPI PUSH2 0x3AA6 PUSH2 0x38C1 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL PUSH1 0x20 DUP4 ADD ADD MLOAD PUSH1 0x0 DUP1 PUSH1 0x20 DUP8 ADD MLOAD ISZERO PUSH2 0x3ACD JUMPI POP POP PUSH1 0x60 DUP2 ADD DUP1 MLOAD PUSH1 0x0 SWAP1 SWAP2 MSTORE DUP1 ISZERO JUMPDEST DUP10 MLOAD CALLER PUSH1 0x80 DUP3 ADD MSTORE DUP4 MLOAD DUP2 MSTORE PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE DUP7 MLOAD PUSH1 0x20 DUP13 ADD MSTORE PUSH2 0x120 DUP8 ADD MLOAD PUSH1 0x40 DUP13 ADD MSTORE PUSH1 0x60 DUP2 KECCAK256 SWAP1 POP PUSH1 0x20 DUP13 MLOAD MUL DUP13 ADD JUMPDEST DUP1 DUP12 LT ISZERO PUSH2 0x3BC1 JUMPI PUSH1 0x20 DUP12 ADD SWAP11 POP DUP11 MLOAD MLOAD SWAP10 POP DUP14 MLOAD DUP11 LT PUSH2 0x3B30 JUMPI PUSH2 0x3B30 PUSH2 0x38C1 JUMP JUMPDEST PUSH1 0x20 DUP11 MUL PUSH1 0x20 DUP16 ADD ADD MLOAD SWAP9 POP PUSH1 0x20 DUP10 ADD MLOAD ISZERO PUSH2 0x3B0D JUMPI DUP9 MLOAD SWAP8 POP PUSH1 0x40 DUP9 ADD MLOAD SWAP7 POP PUSH1 0x20 DUP12 MLOAD ADD MLOAD SWAP6 POP DUP7 MLOAD DUP7 LT PUSH2 0x3B69 JUMPI PUSH2 0x3B69 PUSH2 0x38C1 JUMP JUMPDEST PUSH1 0x20 DUP7 MUL PUSH1 0x20 DUP9 ADD ADD MLOAD SWAP5 POP PUSH1 0x60 DUP6 ADD DUP1 MLOAD DUP6 ADD DUP2 MLOAD ISZERO DUP7 DUP3 LT PUSH1 0x1 SHL OR DUP6 OR SWAP5 POP DUP1 SWAP6 POP POP PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x60 DUP6 KECCAK256 DUP3 EQ PUSH1 0x40 DUP14 ADD MLOAD PUSH2 0x120 DUP11 ADD MLOAD EQ PUSH1 0x20 DUP15 ADD MLOAD DUP11 MLOAD EQ AND AND PUSH2 0x3BBC JUMPI PUSH2 0x3BBC PUSH2 0x38C1 JUMP JUMPDEST PUSH2 0x3B0D JUMP JUMPDEST POP POP DUP2 PUSH1 0x60 DUP12 MLOAD ADD MSTORE DUP1 PUSH1 0x1 DUP2 EQ PUSH2 0x3A41 JUMPI PUSH1 0x2 DUP2 SUB PUSH2 0x3BE3 JUMPI PUSH2 0x3BE3 PUSH2 0x38D2 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C13 DUP5 PUSH4 0x1626BA7E PUSH1 0xE0 SHL DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x311F SWAP3 SWAP2 SWAP1 PUSH2 0x53F9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3C3B JUMPI PUSH2 0x3C22 PUSH2 0x3D24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4F7FB80D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3C4B PUSH4 0xB135D3F PUSH1 0xE1 SHL PUSH2 0x3E6F JUMP JUMPDEST ISZERO PUSH2 0x17EF JUMPI PUSH1 0x40 MLOAD PUSH4 0x20578759 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE CALLER PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3CA9 SWAP1 DUP7 SWAP1 PUSH4 0x3874C77 PUSH1 0xE2 SHL SWAP1 PUSH1 0xA4 ADD PUSH2 0x311F JUMP JUMPDEST SWAP1 POP PUSH2 0x1E03 DUP2 DUP6 PUSH2 0x3CCA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS STATICCALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x3CF3 JUMPI PUSH2 0x3CD7 PUSH2 0x3D24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3ED4053F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDDD JUMP JUMPDEST PUSH2 0x3D03 PUSH4 0x3874C77 PUSH1 0xE2 SHL PUSH2 0x3E6F JUMP JUMPDEST ISZERO PUSH2 0x292D JUMPI PUSH1 0x40 MLOAD PUSH4 0x3ED4053F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDDD JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x16AA JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 PUSH1 0x40 MLOAD DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x3D54 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x3335 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x3E5F JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x3E5F JUMPI DUP1 PUSH2 0x3E4A JUMPI DUP2 PUSH2 0x3E29 JUMPI RETURNDATASIZE ISZERO PUSH2 0x3E03 JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x3DEA JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x3DFF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x98891923 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 RETURNDATASIZE SUB PUSH2 0x3E85 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 DUP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 EQ ISZERO SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x3EB0 PUSH2 0x3F14 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x80 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP4 ADD DUP3 SWAP1 MSTORE DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F61 JUMPI PUSH2 0x3F61 PUSH2 0x4671 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3FB7 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x3F9B JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x3FC9 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP 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 0x528 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3F91 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4011 DUP2 PUSH2 0x3FF1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4028 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x528 DUP2 PUSH2 0x3FF1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4045 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD 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 0xA0 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4084 JUMPI PUSH2 0x4084 PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x160 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4084 JUMPI PUSH2 0x4084 PUSH2 0x404C 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 0x40D5 JUMPI PUSH2 0x40D5 PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x40F6 JUMPI PUSH2 0x40F6 PUSH2 0x404C JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x6 DUP2 LT PUSH2 0x4011 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4129 PUSH2 0x4062 JUMP JUMPDEST SWAP1 POP PUSH2 0x4134 DUP3 PUSH2 0x4100 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x4144 DUP2 PUSH2 0x3FF1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x4195 PUSH2 0x4190 DUP4 PUSH2 0x40DD JUMP JUMPDEST PUSH2 0x40AD JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xA0 SWAP3 DUP4 MUL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP3 ADD SWAP2 SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0x41B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x41D7 JUMPI PUSH2 0x41CA DUP10 DUP3 PUSH2 0x410F JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 DUP2 ADD PUSH2 0x41B8 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x4218 JUMPI PUSH2 0x4218 PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 POP DUP1 PUSH2 0x4227 DUP4 PUSH2 0x4100 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4237 DUP2 PUSH2 0x3FF1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD PUSH2 0x426A DUP2 PUSH2 0x3FF1 JUMP JUMPDEST PUSH1 0xA0 SWAP2 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x4298 PUSH2 0x4190 DUP4 PUSH2 0x40DD JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xC0 SWAP3 DUP4 MUL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP3 ADD SWAP2 SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0x42B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x41D7 JUMPI PUSH2 0x42CD DUP10 DUP3 PUSH2 0x41E4 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 DUP2 ADD PUSH2 0x42BB JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0x4011 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x42FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4304 PUSH2 0x408A JUMP JUMPDEST SWAP1 POP PUSH2 0x430F DUP3 PUSH2 0x4006 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x431D PUSH1 0x20 DUP4 ADD PUSH2 0x4006 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x433C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4348 DUP6 DUP4 DUP7 ADD PUSH2 0x416F JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436E DUP5 DUP3 DUP6 ADD PUSH2 0x4277 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH2 0x4380 PUSH1 0x80 DUP4 ADD PUSH2 0x42DA JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP3 ADD CALLDATALOAD PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP3 ADD CALLDATALOAD PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 DUP1 DUP4 ADD CALLDATALOAD DUP2 DUP4 ADD MSTORE POP PUSH2 0x120 DUP1 DUP4 ADD CALLDATALOAD DUP2 DUP4 ADD MSTORE POP PUSH2 0x140 DUP1 DUP4 ADD CALLDATALOAD DUP2 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4011 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x43F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x440E JUMPI PUSH2 0x440E PUSH2 0x404C JUMP JUMPDEST PUSH2 0x4421 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x40AD JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x4436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x446D PUSH2 0x4062 JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4492 DUP6 DUP4 DUP7 ADD PUSH2 0x42E9 JUMP JUMPDEST DUP4 MSTORE PUSH2 0x44A0 PUSH1 0x20 DUP6 ADD PUSH2 0x43CD JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x44B1 PUSH1 0x40 DUP6 ADD PUSH2 0x43CD JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x44CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x44D6 DUP6 DUP4 DUP7 ADD PUSH2 0x43E4 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x44EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44FC DUP5 DUP3 DUP6 ADD PUSH2 0x43E4 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x4529 PUSH2 0x4190 DUP4 PUSH2 0x40DD JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x4548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4587 JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x456B JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x4579 DUP10 DUP7 DUP4 DUP12 ADD ADD PUSH2 0x4453 JUMP JUMPDEST DUP5 MSTORE POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x454C JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x45A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x45BB 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 0x45D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x45F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x460C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4618 DUP10 DUP4 DUP11 ADD PUSH2 0x4508 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x462E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x463A DUP10 DUP4 DUP11 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4660 DUP9 DUP3 DUP10 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x6 DUP2 LT PUSH2 0x4697 JUMPI PUSH2 0x4697 PUSH2 0x4671 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x46A6 DUP3 DUP3 MLOAD PUSH2 0x4687 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MSTORE PUSH1 0x80 SWAP2 DUP3 ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4734 JUMPI DUP2 MLOAD PUSH2 0x4707 DUP9 DUP3 MLOAD PUSH2 0x469B JUMP JUMPDEST DUP1 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP10 ADD MSTORE PUSH1 0x40 ADD MLOAD PUSH1 0xC0 DUP9 ADD MSTORE PUSH1 0xE0 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x46F2 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x528 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x46DE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4764 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x477A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH2 0x160 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x47A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47C2 DUP6 DUP3 DUP7 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x47E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x47FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4807 DUP9 DUP4 DUP10 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4820 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x482D DUP8 DUP3 DUP9 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x484C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4862 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x40 DUP2 DUP7 SUB SLT ISZERO PUSH2 0x4874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x48AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP7 ADD SWAP1 PUSH1 0xA0 DUP3 DUP10 SUB SLT ISZERO PUSH2 0x48C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x48D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48E6 DUP8 DUP3 DUP9 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP6 SWAP9 SWAP1 SWAP8 POP SWAP5 SWAP6 PUSH1 0x40 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4915 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x492C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4938 DUP13 DUP4 DUP14 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH1 0x20 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x495D DUP13 DUP4 DUP14 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x40 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4976 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4983 DUP12 DUP3 DUP13 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 SWAP6 SWAP9 SWAP7 SWAP8 PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x80 ADD CALLDATALOAD SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x49DC JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x49BE JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE PUSH2 0x377 DUP2 DUP7 PUSH2 0x46DE JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x4A03 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x3F91 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4A4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH2 0x240 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x4A7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4A93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A9F DUP14 DUP4 DUP15 ADD PUSH2 0x4508 JUMP JUMPDEST SWAP11 POP PUSH1 0x20 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4AB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4AC1 DUP14 DUP4 DUP15 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH1 0x40 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4ADA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4AE6 DUP14 DUP4 DUP15 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x60 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4AFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B0C DUP13 DUP3 DUP14 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP11 SWAP14 SWAP10 SWAP13 POP SWAP8 SWAP11 SWAP7 SWAP10 SWAP6 SWAP9 SWAP6 SWAP7 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP7 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B3C PUSH2 0x4190 DUP5 PUSH2 0x40DD JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP2 SWAP1 PUSH1 0x5 DUP7 DUP2 SHL DUP7 ADD CALLDATASIZE DUP2 GT ISZERO PUSH2 0x4B5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4C55 JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4B7C JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP PUSH1 0xA0 DUP3 CALLDATASIZE SUB SLT ISZERO PUSH2 0x4B92 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x4B9A PUSH2 0x4062 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE DUP7 DUP4 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x4BB0 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP9 ADD MSTORE PUSH1 0x40 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x4BDC JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP4 SWAP1 SWAP4 ADD SWAP3 CALLDATASIZE PUSH1 0x1F DUP6 ADD SLT PUSH2 0x4BF3 JUMPI PUSH1 0x0 SWAP3 POP DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x4C03 PUSH2 0x4190 DUP5 PUSH2 0x40DD JUMP JUMPDEST DUP4 DUP2 MSTORE SWAP3 DUP8 SHL DUP5 ADD DUP9 ADD SWAP3 DUP9 DUP2 ADD SWAP1 CALLDATASIZE DUP6 GT ISZERO PUSH2 0x4C20 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP5 DUP10 ADD SWAP5 JUMPDEST DUP5 DUP7 LT ISZERO PUSH2 0x4C3E JUMPI DUP6 CALLDATALOAD DUP3 MSTORE SWAP5 DUP10 ADD SWAP5 SWAP1 DUP10 ADD SWAP1 PUSH2 0x4C25 JUMP JUMPDEST SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 MSTORE POP POP SWAP5 DUP4 ADD SWAP5 DUP4 ADD PUSH2 0x4B5C JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4C79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4C93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP PUSH1 0xA0 DUP2 MUL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x45D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4CBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x528 DUP4 DUP4 PUSH2 0x410F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4CDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4CF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP PUSH1 0xC0 DUP2 MUL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x45D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x528 DUP4 DUP4 PUSH2 0x41E4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x528 DUP3 PUSH2 0x42DA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35A CALLDATASIZE DUP4 PUSH2 0x4453 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 PUSH1 0x3E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4D7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x15E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4D7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x35A CALLDATASIZE DUP4 PUSH2 0x42E9 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4DC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4DDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x45D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x4E24 JUMPI PUSH2 0x4E24 PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MSTORE 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 PUSH2 0x4E4C PUSH2 0x4190 DUP5 PUSH2 0x40DD JUMP JUMPDEST DUP1 DUP5 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP6 PUSH1 0x5 SHL DUP6 ADD CALLDATASIZE DUP2 GT ISZERO PUSH2 0x4E6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4F04 JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4E8B JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP8 ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT PUSH2 0x4E9D JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4EAB PUSH2 0x4190 DUP3 PUSH2 0x40DD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x6 SWAP2 SWAP1 SWAP2 SHL DUP3 ADD DUP6 ADD SWAP1 DUP6 DUP2 ADD SWAP1 CALLDATASIZE DUP4 GT ISZERO PUSH2 0x4ECB JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP3 DUP7 ADD SWAP3 JUMPDEST DUP3 DUP5 LT ISZERO PUSH2 0x4EF4 JUMPI PUSH2 0x4EE2 CALLDATASIZE DUP6 PUSH2 0x4DF0 JUMP JUMPDEST DUP3 MSTORE DUP7 DUP3 ADD SWAP2 POP PUSH1 0x40 DUP5 ADD SWAP4 POP PUSH2 0x4ED0 JUMP JUMPDEST DUP9 MSTORE POP POP POP SWAP4 DUP3 ADD SWAP4 DUP3 ADD PUSH2 0x4E6C JUMP JUMPDEST POP SWAP2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4F27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4F41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP PUSH1 0x6 DUP2 SWAP1 SHL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x45D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x4F89 JUMPI PUSH2 0x4F89 PUSH2 0x4F59 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x4FA1 JUMPI PUSH2 0x4FA1 PUSH2 0x4F59 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x4FB8 JUMPI PUSH2 0x4FB8 PUSH2 0x4F59 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4734 JUMPI PUSH2 0x4FE4 DUP8 DUP4 MLOAD PUSH2 0x469B JUMP JUMPDEST PUSH1 0xA0 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4FD1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP1 DUP4 ADD DUP8 DUP5 MSTORE PUSH1 0x20 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND DUP3 DUP8 ADD MSTORE PUSH1 0x40 DUP5 DUP2 DUP9 ADD MSTORE DUP4 DUP10 MLOAD DUP1 DUP7 MSTORE PUSH1 0xA0 DUP10 ADD SWAP2 POP DUP5 DUP12 ADD SWAP6 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x506D JUMPI DUP7 MLOAD PUSH2 0x5041 DUP5 DUP3 MLOAD PUSH2 0x4687 JUMP JUMPDEST DUP1 DUP8 ADD MLOAD DUP7 AND DUP5 DUP9 ADD MSTORE DUP5 DUP2 ADD MLOAD DUP6 DUP6 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 ADD MLOAD SWAP1 DUP5 ADD MSTORE SWAP6 DUP6 ADD SWAP6 SWAP2 DUP8 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x502C JUMP JUMPDEST POP POP DUP8 DUP2 SUB PUSH1 0x60 DUP10 ADD MSTORE PUSH2 0x5081 DUP2 DUP11 PUSH2 0x4FBD JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x50A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x528 DUP4 DUP4 PUSH2 0x4DF0 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4734 JUMPI DUP2 MLOAD PUSH2 0x50D6 DUP9 DUP3 MLOAD PUSH2 0x4687 JUMP JUMPDEST DUP4 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP6 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP10 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP10 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP9 ADD MSTORE PUSH1 0xA0 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x50C1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4734 JUMPI DUP2 MLOAD PUSH2 0x5140 DUP9 DUP3 MLOAD PUSH2 0x4687 JUMP JUMPDEST DUP1 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP10 DUP7 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP11 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP11 ADD MSTORE PUSH1 0x80 DUP1 DUP4 ADD MLOAD SWAP1 DUP11 ADD MSTORE PUSH1 0xA0 SWAP2 DUP3 ADD MLOAD AND SWAP1 DUP9 ADD MSTORE PUSH1 0xC0 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x512B JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x4697 JUMPI PUSH2 0x4697 PUSH2 0x4671 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4734 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x51B2 JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x4697 JUMPI PUSH2 0x4697 PUSH2 0x4671 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MLOAD DUP1 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP6 POP DUP1 DUP3 PUSH1 0x5 SHL DUP5 ADD ADD DUP2 DUP7 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x41D7 JUMPI PUSH1 0x1F NOT DUP7 DUP5 SUB ADD DUP10 MSTORE DUP2 MLOAD PUSH1 0xA0 DUP2 MLOAD DUP6 MSTORE DUP6 DUP3 ADD MLOAD PUSH2 0x5224 DUP8 DUP8 ADD DUP3 PUSH2 0x51CE JUMP JUMPDEST POP PUSH1 0x40 DUP3 DUP2 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH1 0x80 SWAP2 DUP3 ADD MLOAD SWAP2 DUP6 ADD DUP2 SWAP1 MSTORE PUSH2 0x5251 DUP2 DUP7 ADD DUP4 PUSH2 0x519E JUMP JUMPDEST SWAP11 DUP7 ADD SWAP11 SWAP5 POP POP POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x51FB JUMP JUMPDEST DUP6 DUP2 MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x140 DUP6 MLOAD PUSH1 0xA0 DUP1 DUP6 ADD MSTORE PUSH2 0x529F DUP3 DUP6 ADD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x160 PUSH2 0x52BB DUP2 DUP8 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD SWAP2 POP DUP1 PUSH2 0x180 DUP8 ADD MSTORE POP PUSH2 0x52D8 PUSH2 0x2A0 DUP7 ADD DUP3 PUSH2 0x50AD JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x13F NOT DUP7 DUP4 SUB ADD PUSH2 0x1A0 DUP8 ADD MSTORE PUSH2 0x52F7 DUP3 DUP3 PUSH2 0x5117 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x530D PUSH2 0x1C0 DUP8 ADD DUP3 PUSH2 0x518E JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x1E0 DUP7 ADD MSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x200 DUP7 ADD MSTORE PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x220 DUP7 ADD MSTORE PUSH2 0x100 DUP1 DUP4 ADD MLOAD PUSH2 0x240 DUP8 ADD MSTORE PUSH2 0x120 DUP1 DUP5 ADD MLOAD PUSH2 0x260 DUP9 ADD MSTORE DUP5 DUP5 ADD MLOAD PUSH2 0x280 DUP9 ADD MSTORE PUSH1 0x20 DUP11 ADD MLOAD SWAP5 POP PUSH2 0x536F PUSH1 0xC0 DUP9 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND PUSH1 0xE0 DUP9 ADD MSTORE PUSH1 0x60 DUP11 ADD MLOAD DUP8 DUP5 SUB PUSH1 0x9F NOT SWAP1 DUP2 ADD DUP5 DUP11 ADD MSTORE SWAP1 SWAP6 POP SWAP4 POP PUSH2 0x53A3 DUP4 DUP7 PUSH2 0x3F91 JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP11 ADD MLOAD SWAP3 POP DUP4 DUP8 DUP7 SUB ADD DUP2 DUP9 ADD MSTORE POP POP PUSH2 0x53C1 DUP4 DUP3 PUSH2 0x3F91 JUMP JUMPDEST SWAP3 POP POP POP DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x53D7 DUP2 DUP7 PUSH2 0x519E JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x32DA DUP2 DUP6 PUSH2 0x51DE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x35A DUP3 DUP5 PUSH2 0x51CE JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x5A5 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3F91 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLER PUSH27 0x1990BF93BD9B7C70054F5E27E0DA8850C8FE4A29B2B59E75A79230 SWAP5 MLOAD 0xF PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "771:1277:1:-:0;;;1170:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1223:17;;;;;;;;;;1967:19:23;:17;:19::i;:::-;1760:226;;;;;;;;;;;;;;-1:-1:-1;1760:226:23;;;2087:13;2075:25;;;;-1:-1:-1;2761:187:23;;-1:-1:-1;2761:187:23;;;7454:25:45;;;;7495:18;;;7488:34;;;;-1:-1:-1;7538:18:45;;7531:34;;;;7581:18;;;7574:34;2929:4:23;7624:19:45;;;7617:61;2761:187:23;;;;;;;;;;7426:19:45;;2761:187:23;;;2738:220;;;;;2110:44;;-1:-1:-1;;;;;2213:67:23;;;;;;2420:42;;;-1:-1:-1;;;2420:42:23;;;;:40;;:42;;;;;;;;;;;;;2213:67;2420:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2372:100:23;;-1:-1:-1;;2287:1:24;657:16:36;:31;-1:-1:-1;771:1277:1;;-1:-1:-1;;;;;;;;771:1277:1;4735:3021:23;4824:16;;;;;;5140:13;2023:16:1;;;;;;;;;;;;-1:-1:-1;;;2023:16:1;;;;;1899:147;5140:13:23;5124:31;;;;;;;5252:10;;;;;;;;;;;-1:-1:-1;;;5252:10:23;;;;5384:264;5124:31;;-1:-1:-1;5242:21:23;;-1:-1:-1;;;5384:264:23;;;-1:-1:-1;;;1486:25:45;;-1:-1:-1;;;1536:2:45;1527:12;;1520:39;-1:-1:-1;;;1584:2:45;1575:12;;1568:38;1636:31;1631:2;1622:12;;1615:53;1698:22;1693:2;1684:12;;1677:44;-1:-1:-1;;;1746:2:45;1737:12;;1730:41;-1:-1:-1;;;1796:3:45;1787:13;;1780:26;1831:3;1822:13;;678:1163;5384:264:23;;;;-1:-1:-1;;5384:264:23;;;;;;;;;-1:-1:-1;;;5384:264:23;5785:310;;2755:33:45;-1:-1:-1;;;2804:12:45;;;2797:39;-1:-1:-1;;;2852:12:45;;;2845:38;2913:31;2899:12;;;2892:53;2975:22;2961:12;;;2954:44;-1:-1:-1;;;3014:12:45;;;3007:42;-1:-1:-1;;;3065:13:45;;;3058:42;-1:-1:-1;;;3116:13:45;;;3109:26;;;5785:310:23;;;;;;;;;3151:13:45;;;5785:310:23;;;-1:-1:-1;;;6260:488:23;;;4854:31:45;-1:-1:-1;;;4901:12:45;;;4894:40;-1:-1:-1;;;4950:12:45;;;4943:37;-1:-1:-1;;;4996:12:45;;;4989:42;5061:34;5047:12;;;5040:56;-1:-1:-1;;;5112:12:45;;;5105:26;-1:-1:-1;;;5147:12:45;;;5140:40;-1:-1:-1;;;5196:13:45;;;5189:43;-1:-1:-1;;;5248:13:45;;;5241:41;-1:-1:-1;;;5298:13:45;;;5291:42;-1:-1:-1;;;5349:13:45;;;5342:38;3252:21;5481:13;;;3240:34;-1:-1:-1;;;3290:12:45;;;3373:28;3417:12;;;624:16;5384:264:23;-1:-1:-1;5785:310:23;-1:-1:-1;;656:11:45;;6260:488:23;;;-1:-1:-1;;6260:488:23;;;;;;;;;;-1:-1:-1;;;6260:488:23;6893:248;;6215:28:45;-1:-1:-1;;;6259:12:45;;;6252:36;-1:-1:-1;;;6304:12:45;;;6297:39;-1:-1:-1;;;6352:12:45;;;6345:40;6415:27;6401:12;;;6394:49;-1:-1:-1;;;6459:12:45;;;6452:25;6260:488:23;-1:-1:-1;6493:12:45;;6893:248:23;;;-1:-1:-1;;6893:248:23;;;;;;;;;;6870:281;;6893:248;6870:281;;;;7261:30;;;;;;7409:38;;;;;;6870:281;;-1:-1:-1;7261:30:23;-1:-1:-1;7409:38:23;-1:-1:-1;7577:162:23;;7611:32;;7419:27;;7271:19;;7577:162;;:::i;:::-;;;;;;;;;;;;;7554:195;;;;;;7538:211;;5051:2705;;;4735:3021;;;;;;:::o;14:290:45:-;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:45;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:45:o;309:245::-;388:6;396;449:2;437:9;428:7;424:23;420:32;417:52;;;465:1;462;455:12;417:52;-1:-1:-1;;488:16:45;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:45:o;6516:336::-;6557:3;6595:5;6589:12;6619:1;6629:128;6643:6;6640:1;6637:13;6629:128;;;6740:4;6725:13;;;6721:24;;6715:31;6702:11;;;6695:52;6658:12;6629:128;;;6775:6;6772:1;6769:13;6766:48;;;6810:1;6801:6;6796:3;6792:16;6785:27;6766:48;-1:-1:-1;6830:16:45;;;;;6516:336;-1:-1:-1;;6516:336:45:o;6857:333::-;7078:3;7103:81;7128:55;7153:29;7178:3;7170:6;7153:29;:::i;:::-;7145:6;7128:55;:::i;:::-;7120:6;7103:81;:::i;:::-;7096:88;6857:333;-1:-1:-1;;;;;6857:333:45:o;7195:489::-;771:1277:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_aggregateAvailable_5290": {
                  "entryPoint": 13114,
                  "id": 5290,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_aggregateValidFulfillmentConsiderationItems_5324": {
                  "entryPoint": 14524,
                  "id": 5324,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_aggregateValidFulfillmentOfferItems_5307": {
                  "entryPoint": 14952,
                  "id": 5307,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_applyCriteriaResolvers_4415": {
                  "entryPoint": 6797,
                  "id": 4415,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_applyFraction_2490": {
                  "entryPoint": 12954,
                  "id": 2490,
                  "parameterSlots": 8,
                  "returnSlots": 1
                },
                "@_applyFractionsAndTransferEach_6943": {
                  "entryPoint": 7690,
                  "id": 6943,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@_applyFulfillment_5207": {
                  "entryPoint": 10716,
                  "id": 5207,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@_assertConsiderationLengthAndGetNoncedOrderHash_2545": {
                  "entryPoint": 5804,
                  "id": 2545,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_assertConsiderationLengthIsNotLessThanOriginalConsiderationLength_2562": {
                  "entryPoint": 12002,
                  "id": 2562,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_assertIsValidOrderStaticcallSuccess_8591": {
                  "entryPoint": 15562,
                  "id": 8591,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_assertNonReentrant_7767": {
                  "entryPoint": 5767,
                  "id": 7767,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_assertNonZeroAmount_2577": {
                  "entryPoint": 14455,
                  "id": 2577,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_assertRestrictedAdvancedOrderValidity_8560": {
                  "entryPoint": 12428,
                  "id": 8560,
                  "parameterSlots": 8,
                  "returnSlots": 0
                },
                "@_assertRestrictedBasicOrderValidity_8439": {
                  "entryPoint": 13334,
                  "id": 8439,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@_assertValidBasicOrderParameterOffsets_2593": {
                  "entryPoint": 13269,
                  "id": 2593,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_assertValidEIP1271Signature_7916": {
                  "entryPoint": 15346,
                  "id": 7916,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_assertValidSignature_7871": {
                  "entryPoint": 12035,
                  "id": 7871,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_callConduitUsingOffsets_4963": {
                  "entryPoint": 13576,
                  "id": 4963,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_callIsValidOrder_8473": {
                  "entryPoint": 15465,
                  "id": 8473,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_cancel_7564": {
                  "entryPoint": 4164,
                  "id": 7564,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_clearReentrancyGuard_7754": {
                  "entryPoint": null,
                  "id": 7754,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_convertOrderToAdvanced_7010": {
                  "entryPoint": 2928,
                  "id": 7010,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_convertOrdersToAdvanced_7062": {
                  "entryPoint": 2741,
                  "id": 7062,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_deriveConduit_5405": {
                  "entryPoint": null,
                  "id": 5405,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_deriveDomainSeparator_3247": {
                  "entryPoint": null,
                  "id": 3247,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_deriveEIP712Digest_5464": {
                  "entryPoint": null,
                  "id": 5464,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_deriveOrderHash_5384": {
                  "entryPoint": 1971,
                  "id": 5384,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_doesNotMatchMagic_5504": {
                  "entryPoint": 15983,
                  "id": 5504,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_doesNotSupportPartialFills_7713": {
                  "entryPoint": null,
                  "id": 7713,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_domainSeparator_5421": {
                  "entryPoint": 8783,
                  "id": 5421,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_emitOrderFulfilledEvent_6987": {
                  "entryPoint": 8206,
                  "id": 6987,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_executeAvailableFulfillments_6207": {
                  "entryPoint": 8307,
                  "id": 6207,
                  "parameterSlots": 4,
                  "returnSlots": 2
                },
                "@_fulfillAdvancedOrders_6540": {
                  "entryPoint": 5468,
                  "id": 6540,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@_fulfillAvailableAdvancedOrders_5655": {
                  "entryPoint": 3340,
                  "id": 5655,
                  "parameterSlots": 8,
                  "returnSlots": 2
                },
                "@_getAccumulatorConduitKey_4973": {
                  "entryPoint": null,
                  "id": 4973,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_getFraction_2434": {
                  "entryPoint": 10545,
                  "id": 2434,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@_getNonce_5560": {
                  "entryPoint": null,
                  "id": 5560,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_getOrderStatus_7702": {
                  "entryPoint": null,
                  "id": 7702,
                  "parameterSlots": 1,
                  "returnSlots": 4
                },
                "@_incrementNonce_5545": {
                  "entryPoint": 1878,
                  "id": 5545,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_information_5452": {
                  "entryPoint": 3403,
                  "id": 5452,
                  "parameterSlots": 0,
                  "returnSlots": 3
                },
                "@_insert_5017": {
                  "entryPoint": 14268,
                  "id": 5017,
                  "parameterSlots": 8,
                  "returnSlots": 0
                },
                "@_isItemWithCriteria_4426": {
                  "entryPoint": null,
                  "id": 4426,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_locateCurrentAmount_2396": {
                  "entryPoint": 10625,
                  "id": 2396,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "@_matchAdvancedOrders_6438": {
                  "entryPoint": 1851,
                  "id": 6438,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_name_434": {
                  "entryPoint": 1826,
                  "id": 434,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_performERC1155Transfer_7970": {
                  "entryPoint": 14009,
                  "id": 7970,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@_performERC20Transfer_7940": {
                  "entryPoint": 15721,
                  "id": 7940,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_performERC721Transfer_7954": {
                  "entryPoint": 13816,
                  "id": 7954,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_performFinalChecksAndExecuteOrders_6404": {
                  "entryPoint": 11469,
                  "id": 6404,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_prepareBasicFulfillmentFromCalldata_2965": {
                  "entryPoint": 9029,
                  "id": 2965,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_revertWithReasonIfOneIsReturned_5487": {
                  "entryPoint": 15652,
                  "id": 5487,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_setReentrancyGuard_7745": {
                  "entryPoint": 6133,
                  "id": 7745,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_staticcall_5481": {
                  "entryPoint": 15541,
                  "id": 5481,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_transferERC1155_4843": {
                  "entryPoint": 10450,
                  "id": 4843,
                  "parameterSlots": 7,
                  "returnSlots": 0
                },
                "@_transferERC20AndFinalize_3151": {
                  "entryPoint": 10315,
                  "id": 3151,
                  "parameterSlots": 8,
                  "returnSlots": 0
                },
                "@_transferERC20_4722": {
                  "entryPoint": 14396,
                  "id": 4722,
                  "parameterSlots": 6,
                  "returnSlots": 0
                },
                "@_transferERC721_4784": {
                  "entryPoint": 10238,
                  "id": 4784,
                  "parameterSlots": 7,
                  "returnSlots": 0
                },
                "@_transferEthAndFinalize_3066": {
                  "entryPoint": 10041,
                  "id": 3066,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_transferEth_4663": {
                  "entryPoint": 13030,
                  "id": 4663,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_transferIndividual721Or1155Item_4634": {
                  "entryPoint": 9861,
                  "id": 4634,
                  "parameterSlots": 7,
                  "returnSlots": 0
                },
                "@_transfer_4565": {
                  "entryPoint": 12765,
                  "id": 4565,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_triggerIfArmedAndNotAccumulatable_4867": {
                  "entryPoint": 14237,
                  "id": 4867,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_triggerIfArmed_4892": {
                  "entryPoint": 10504,
                  "id": 4892,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_trigger_4915": {
                  "entryPoint": 14488,
                  "id": 4915,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_validateAndFulfillAdvancedOrder_6676": {
                  "entryPoint": 3099,
                  "id": 6676,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@_validateAndFulfillBasicOrder_2865": {
                  "entryPoint": 3498,
                  "id": 2865,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@_validateBasicOrderAndUpdateStatus_7162": {
                  "entryPoint": 13414,
                  "id": 7162,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_validateOrderAndUpdateStatus_7441": {
                  "entryPoint": 6148,
                  "id": 7441,
                  "parameterSlots": 4,
                  "returnSlots": 3
                },
                "@_validateOrdersAndPrepareToFulfill_6016": {
                  "entryPoint": 4677,
                  "id": 6016,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_validate_7670": {
                  "entryPoint": 2297,
                  "id": 7670,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@_verifyOrderStatus_8378": {
                  "entryPoint": 5863,
                  "id": 8378,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@_verifyProof_4449": {
                  "entryPoint": 12653,
                  "id": 4449,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_verifySignature_8316": {
                  "entryPoint": 6048,
                  "id": 8316,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "@_verifyTime_8284": {
                  "entryPoint": 12358,
                  "id": 8284,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "@cancel_269": {
                  "entryPoint": 1814,
                  "id": 269,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@fulfillAdvancedOrder_101": {
                  "entryPoint": 1566,
                  "id": 101,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@fulfillAvailableAdvancedOrders_192": {
                  "entryPoint": 1768,
                  "id": 192,
                  "parameterSlots": 9,
                  "returnSlots": 2
                },
                "@fulfillAvailableOrders_148": {
                  "entryPoint": 1596,
                  "id": 148,
                  "parameterSlots": 8,
                  "returnSlots": 2
                },
                "@fulfillBasicOrder_48": {
                  "entryPoint": 1757,
                  "id": 48,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@fulfillOrder_76": {
                  "entryPoint": 1453,
                  "id": 76,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getNonce_379": {
                  "entryPoint": 832,
                  "id": 379,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getOrderHash_343": {
                  "entryPoint": 907,
                  "id": 343,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getOrderStatus_363": {
                  "entryPoint": null,
                  "id": 363,
                  "parameterSlots": 1,
                  "returnSlots": 4
                },
                "@incrementNonce_300": {
                  "entryPoint": 897,
                  "id": 300,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@information_394": {
                  "entryPoint": 1733,
                  "id": 394,
                  "parameterSlots": 0,
                  "returnSlots": 3
                },
                "@matchAdvancedOrders_251": {
                  "entryPoint": 864,
                  "id": 251,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "@matchOrders_223": {
                  "entryPoint": 1327,
                  "id": 223,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@name_407": {
                  "entryPoint": 817,
                  "id": 407,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@validate_287": {
                  "entryPoint": 1308,
                  "id": 287,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_address": {
                  "entryPoint": 16390,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_array_struct_AdvancedOrder_dyn": {
                  "entryPoint": 17672,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_array_struct_ConsiderationItem_dyn": {
                  "entryPoint": 17015,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata": {
                  "entryPoint": 17810,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_array_struct_OfferItem_dyn": {
                  "entryPoint": 16751,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_bytes": {
                  "entryPoint": 17380,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_enum_ItemType": {
                  "entryPoint": 16640,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_enum_OrderType": {
                  "entryPoint": 17114,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_struct_AdvancedOrder": {
                  "entryPoint": 17491,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_struct_ConsiderationItem": {
                  "entryPoint": 16868,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_struct_FulfillmentComponent": {
                  "entryPoint": 19952,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_struct_OfferItem": {
                  "entryPoint": 16655,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_struct_OrderParameters": {
                  "entryPoint": 17129,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 16406,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_payable": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_bytes32t_uint256": {
                  "entryPoint": 19038,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 9
                },
                "abi_decode_tuple_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 17885,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 5
                },
                "abi_decode_tuple_t_array$_t_struct$_OrderComponents_$3892_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 18317,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_bytes32t_uint256": {
                  "entryPoint": 18681,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 8
                },
                "abi_decode_tuple_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 18382,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 16435,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_enum$_OrderType_$3815": {
                  "entryPoint": 19754,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_AdvancedOrder_$4031_calldata_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_bytes32": {
                  "entryPoint": 18562,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_struct$_BasicOrderParameters_$3980_calldata_ptr": {
                  "entryPoint": 18979,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_ConsiderationItem_$3918_memory_ptr": {
                  "entryPoint": 19726,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_FulfillmentComponent_$4067_memory_ptr": {
                  "entryPoint": 20625,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_OfferItem_$3904_memory_ptr": {
                  "entryPoint": 19626,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_OrderComponents_$3892_calldata_ptr": {
                  "entryPoint": 18258,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_struct$_Order_$4019_calldata_ptrt_bytes32": {
                  "entryPoint": 18489,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_uint120": {
                  "entryPoint": 17357,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_address": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_array_bytes32_dyn": {
                  "entryPoint": 20894,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_struct_ConsiderationItem_dyn": {
                  "entryPoint": 20759,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_struct_CriteriaResolver_dyn": {
                  "entryPoint": 20958,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_struct_Execution_dyn": {
                  "entryPoint": 18142,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_struct_OfferItem_dyn": {
                  "entryPoint": 20653,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_array_struct_ReceivedItem_dyn": {
                  "entryPoint": 20413,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_enum_ItemType": {
                  "entryPoint": 18055,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_enum_OrderType": {
                  "entryPoint": 20878,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_enum_Side": {
                  "entryPoint": 20942,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_string": {
                  "entryPoint": 16273,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_struct_ReceivedItem": {
                  "entryPoint": 18075,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 18849,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 18239,
                  "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_bool_t_bool_t_uint256_t_uint256__to_t_bool_t_bool_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_address_t_bytes32__to_t_bytes32_t_address_t_address_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_array$_t_struct$_SpentItem_$3928_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_ReceivedItem_$3940_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_address_t_array$_t_struct$_SpentItem_$3928_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_ReceivedItem_$3940_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 20471,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address_t_struct$_AdvancedOrder_$4031_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_address_t_struct$_AdvancedOrder_$4031_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 21093,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed": {
                  "entryPoint": 21497,
                  "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_enum$_Side_$3857__to_t_uint8__fromStack_reversed": {
                  "entryPoint": 21483,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": 16350,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_string_memory_ptr_t_bytes32_t_address__to_t_string_memory_ptr_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": 18928,
                  "id": null,
                  "parameterSlots": 4,
                  "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_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_uint120": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "access_calldata_tail_t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 20240,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_t_array$_t_struct$_ConsiderationItem_$3918_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 19654,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_t_array$_t_struct$_OfferItem_$3904_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 19554,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_t_bytes_calldata_ptr": {
                  "entryPoint": 19882,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "access_calldata_tail_t_struct$_Fulfillment_$4062_calldata_ptr": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "access_calldata_tail_t_struct$_OrderComponents_$3892_calldata_ptr": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "access_calldata_tail_t_struct$_OrderParameters_$4013_calldata_ptr": {
                  "entryPoint": 19847,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "access_calldata_tail_t_struct$_Order_$4019_calldata_ptr": {
                  "entryPoint": 19815,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "allocate_memory": {
                  "entryPoint": 16557,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "allocate_memory_6027": {
                  "entryPoint": 16482,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "allocate_memory_6029": {
                  "entryPoint": 16522,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "array_allocation_size_array_struct_AdvancedOrder_dyn": {
                  "entryPoint": 16605,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 20366,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_mul_t_uint256": {
                  "entryPoint": 20335,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 20390,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "convert_array_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr": {
                  "entryPoint": 20030,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "convert_array_t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr": {
                  "entryPoint": 19246,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "convert_t_struct$_AdvancedOrder_$4031_calldata_ptr_to_t_struct$_AdvancedOrder_$4031_memory_ptr": {
                  "entryPoint": 19781,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "convert_t_struct$_OrderParameters_$4013_calldata_ptr_to_t_struct$_OrderParameters_$4013_memory_ptr": {
                  "entryPoint": 19870,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "panic_error_0x11": {
                  "entryPoint": 20313,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x21": {
                  "entryPoint": 18033,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 19793,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x41": {
                  "entryPoint": 16460,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x51": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "validator_revert_address": {
                  "entryPoint": 16369,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:45889:45",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:45",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "64:422:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "74:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "94:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "88:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "88:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "78:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "116:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "121:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "109:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "109:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "109:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "137:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "146:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "141:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "208:110:45",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "222:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "232:4:45",
                                      "type": "",
                                      "value": "0x20"
                                    },
                                    "variables": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulTypedName",
                                        "src": "226:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "264:3:45"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "269:1:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "260:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "260:11:45"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "273:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "256:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "256:20:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "292:5:45"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "299:1:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "288:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "288:13:45"
                                                },
                                                {
                                                  "name": "_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "303:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "284:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "284:22:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "278:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "278:29:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "249:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "249:59:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "249:59:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "167:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "170:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "164:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "164:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "178:21:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "180:17:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "189:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "192:4:45",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "185:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "185:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "180:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "160:3:45",
                                "statements": []
                              },
                              "src": "156:162:45"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "352:62:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "pos",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "381:3:45"
                                                },
                                                {
                                                  "name": "length",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "386:6:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "377:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "377:16:45"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "395:4:45",
                                              "type": "",
                                              "value": "0x20"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "373:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "373:27:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "402:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "366:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "366:38:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "366:38:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "333:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "336:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "330:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "330:13:45"
                              },
                              "nodeType": "YulIf",
                              "src": "327:87:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "423:57:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "438:3:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "451:6:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "459:2:45",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "447:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "447:15:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "468:2:45",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "464:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "464:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "443:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "443:29:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "434:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "434:39:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "475:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "430:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "430:50:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "423:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_string",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "41:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "48:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "56:3:45",
                            "type": ""
                          }
                        ],
                        "src": "14:472:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "612:99:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "629:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "640:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "622:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "622:21:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "622:21:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "652:53:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "678:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "690:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "701:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "686:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "686:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "660:17:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "660:45:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "652:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "581:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "592:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "603:4:45",
                            "type": ""
                          }
                        ],
                        "src": "491:220:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "761:86:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "825:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "834:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "837:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "827:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "827:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "827:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "784:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "795:5:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "810:3:45",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "815:1:45",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "806:3:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "806:11:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "819:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "802:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "802:19:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "791:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "791:31:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "781:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "781:42:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "774:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "774:50:45"
                              },
                              "nodeType": "YulIf",
                              "src": "771:70:45"
                            }
                          ]
                        },
                        "name": "validator_revert_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "750:5:45",
                            "type": ""
                          }
                        ],
                        "src": "716:131:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "901:85:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "911:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "933:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "920:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "920:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "911:5:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "974:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "949:24:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "949:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "949:31:45"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "880:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "891:5:45",
                            "type": ""
                          }
                        ],
                        "src": "852:134:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1061:177:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1107:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1116:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1119:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1109:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1109:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1109:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1082:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1091:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1078:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1078:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1103:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1074:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1074:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "1071:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1132:36:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1158:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1145:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1145:23:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1136:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "1202:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1177:24:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1177:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1177:31:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1217:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1227:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1217:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1027:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1038:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1050:6:45",
                            "type": ""
                          }
                        ],
                        "src": "991:247:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1344:76:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1354:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1366:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1377:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1362:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1362:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1354:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1396:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1407:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1389:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1389:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1389:25:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1313:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1324:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1335:4:45",
                            "type": ""
                          }
                        ],
                        "src": "1243:177:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1495:110:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1541:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1550:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1553:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1543:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1543:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1543:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1516:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1525:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1512:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1512:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1537:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1508:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1508:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "1505:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1566:33:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1589:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1576:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1576:23:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1566:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1461:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1472:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1484:6:45",
                            "type": ""
                          }
                        ],
                        "src": "1425:180:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1783:238:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1793:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1805:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1816:3:45",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1801:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1801:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1793:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1836:9:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1861:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1854:6:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1854:14:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1847:6:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1847:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1829:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1829:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1829:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1890:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1901:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1886:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1886:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "1920:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1913:6:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1913:14:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1906:6:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1906:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1879:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1879:50:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1879:50:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1949:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1960:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1945:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1945:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "1965:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1938:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1938:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1938:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1992:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2003:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1988:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1988:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "2008:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1981:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1981:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1981:34:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool_t_bool_t_uint256_t_uint256__to_t_bool_t_bool_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1728:9:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1739:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1747:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1755:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1763:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1774:4:45",
                            "type": ""
                          }
                        ],
                        "src": "1610:411:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2058:95:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2075:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2082:3:45",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2087:10:45",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "2078:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2078:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2068:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2068:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2068:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2115:1:45",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2118:4:45",
                                    "type": "",
                                    "value": "0x41"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2108:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2108:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2108:15:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2139:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2142:4:45",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2132:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2132:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2132:15:45"
                            }
                          ]
                        },
                        "name": "panic_error_0x41",
                        "nodeType": "YulFunctionDefinition",
                        "src": "2026:127:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2204:207:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2214:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2230:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2224:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2224:9:45"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2214:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2242:35:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2264:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2272:4:45",
                                    "type": "",
                                    "value": "0xa0"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2260:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2260:17:45"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2246:10:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2352:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2354:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2354:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2354:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2295:10:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2307:18:45",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2292:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2292:34:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2331:10:45"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2343:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2328:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2328:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2289:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2289:62:45"
                              },
                              "nodeType": "YulIf",
                              "src": "2286:88:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2390:2:45",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2394:10:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2383:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2383:22:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2383:22:45"
                            }
                          ]
                        },
                        "name": "allocate_memory_6027",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "2193:6:45",
                            "type": ""
                          }
                        ],
                        "src": "2158:253:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2462:209:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2472:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2488:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2482:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2482:9:45"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2472:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2500:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2522:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2530:6:45",
                                    "type": "",
                                    "value": "0x0160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2518:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2518:19:45"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2504:10:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2612:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2614:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2614:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2614:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2555:10:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2567:18:45",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2552:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2552:34:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2591:10:45"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2603:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2588:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2588:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2549:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2549:62:45"
                              },
                              "nodeType": "YulIf",
                              "src": "2546:88:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2650:2:45",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2654:10:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2643:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2643:22:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2643:22:45"
                            }
                          ]
                        },
                        "name": "allocate_memory_6029",
                        "nodeType": "YulFunctionDefinition",
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "2451:6:45",
                            "type": ""
                          }
                        ],
                        "src": "2416:255:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2721:230:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2731:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2747:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2741:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2741:9:45"
                              },
                              "variableNames": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2731:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2759:58:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2781:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "size",
                                            "nodeType": "YulIdentifier",
                                            "src": "2797:4:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2803:2:45",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "2793:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2793:13:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2812:2:45",
                                            "type": "",
                                            "value": "31"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "2808:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2808:7:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2789:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2789:27:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2777:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2777:40:45"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2763:10:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2892:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "2894:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2894:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2894:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2835:10:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2847:18:45",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2832:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2832:34:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2871:10:45"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "2883:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "2868:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2868:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "2829:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2829:62:45"
                              },
                              "nodeType": "YulIf",
                              "src": "2826:88:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2930:2:45",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2934:10:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2923:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2923:22:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2923:22:45"
                            }
                          ]
                        },
                        "name": "allocate_memory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "2701:4:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulTypedName",
                            "src": "2710:6:45",
                            "type": ""
                          }
                        ],
                        "src": "2676:275:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3038:114:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3082:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "3084:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3084:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3084:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3054:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3062:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3051:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3051:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "3048:56:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3113:33:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3129:1:45",
                                        "type": "",
                                        "value": "5"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "3132:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "3125:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3125:14:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3141:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3121:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3121:25:45"
                              },
                              "variableNames": [
                                {
                                  "name": "size",
                                  "nodeType": "YulIdentifier",
                                  "src": "3113:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "array_allocation_size_array_struct_AdvancedOrder_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "3018:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "size",
                            "nodeType": "YulTypedName",
                            "src": "3029:4:45",
                            "type": ""
                          }
                        ],
                        "src": "2956:196:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3212:94:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3222:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3244:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3231:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3231:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "3222:5:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3284:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3293:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3296:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3286:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3286:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3286:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3273:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3280:1:45",
                                        "type": "",
                                        "value": "6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3270:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3270:12:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3263:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3263:20:45"
                              },
                              "nodeType": "YulIf",
                              "src": "3260:40:45"
                            }
                          ]
                        },
                        "name": "abi_decode_enum_ItemType",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "3191:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3202:5:45",
                            "type": ""
                          }
                        ],
                        "src": "3157:149:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3377:500:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3421:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3430:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3433:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3423:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3423:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3423:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "3398:3:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3403:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3394:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3394:19:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3415:4:45",
                                    "type": "",
                                    "value": "0xa0"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3390:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3390:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "3387:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3446:31:45",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "allocate_memory_6027",
                                  "nodeType": "YulIdentifier",
                                  "src": "3455:20:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3455:22:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "3446:5:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "3493:5:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3525:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_enum_ItemType",
                                      "nodeType": "YulIdentifier",
                                      "src": "3500:24:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3500:35:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3486:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3486:50:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3486:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3545:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3577:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3588:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3573:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3573:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3560:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3560:32:45"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3549:7:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3626:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3601:24:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3601:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3601:33:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3654:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3661:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3650:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3650:14:45"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3666:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3643:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3643:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3643:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3694:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3701:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3690:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3690:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "3723:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3734:2:45",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3719:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3719:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3706:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3706:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3683:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3683:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3683:56:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3759:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3766:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3755:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3755:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "3788:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3799:2:45",
                                            "type": "",
                                            "value": "96"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3784:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3784:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3771:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3771:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3748:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3748:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3748:56:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3824:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3831:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3820:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3820:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "3854:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3865:3:45",
                                            "type": "",
                                            "value": "128"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3850:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3850:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3837:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3837:33:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3813:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3813:58:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3813:58:45"
                            }
                          ]
                        },
                        "name": "abi_decode_struct_OfferItem",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3348:9:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3359:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "3367:5:45",
                            "type": ""
                          }
                        ],
                        "src": "3311:566:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3955:655:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4004:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4013:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4016:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4006:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4006:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4006:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "3983:6:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3991:4:45",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3979:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3979:17:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "3998:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "3975:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3975:27:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3968:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3968:35:45"
                              },
                              "nodeType": "YulIf",
                              "src": "3965:55:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4029:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4052:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4039:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4039:20:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4033:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4068:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4078:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "4072:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4091:84:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "4171:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_struct_AdvancedOrder_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "4118:52:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4118:56:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "4102:15:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4102:73:45"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "4095:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4184:16:45",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "4197:3:45"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "4188:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "4216:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4221:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4209:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4209:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4209:15:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4233:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "4244:3:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4249:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4240:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4240:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "4233:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4261:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "4271:4:45",
                                "type": "",
                                "value": "0xa0"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "4265:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4284:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "4306:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "4318:2:45"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "4322:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "4314:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4314:11:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4302:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4302:24:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4328:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4298:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4298:33:45"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "4288:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4359:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4368:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4371:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4361:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4361:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4361:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4346:6:45"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "4354:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4343:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4343:15:45"
                              },
                              "nodeType": "YulIf",
                              "src": "4340:35:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4384:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "4399:6:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4407:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4395:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4395:15:45"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "4388:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4475:106:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "4496:3:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "4529:3:45"
                                            },
                                            {
                                              "name": "end",
                                              "nodeType": "YulIdentifier",
                                              "src": "4534:3:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_struct_OfferItem",
                                            "nodeType": "YulIdentifier",
                                            "src": "4501:27:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "4501:37:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4489:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4489:50:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4489:50:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4552:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "4563:3:45"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "4568:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4559:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4559:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "4552:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "4430:3:45"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "4435:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4427:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4427:15:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4443:23:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4445:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "4456:3:45"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "4461:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4452:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4452:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "4445:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4423:3:45",
                                "statements": []
                              },
                              "src": "4419:162:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4590:14:45",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "4599:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "4590:5:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_struct_OfferItem_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "3929:6:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3937:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "3945:5:45",
                            "type": ""
                          }
                        ],
                        "src": "3882:728:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4689:834:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4733:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4742:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4745:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4735:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4735:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4735:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "4710:3:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4715:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4706:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4706:19:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4727:4:45",
                                    "type": "",
                                    "value": "0xc0"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4702:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4702:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "4699:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4758:23:45",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4778:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4772:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4772:9:45"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4762:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4790:35:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4812:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4820:4:45",
                                    "type": "",
                                    "value": "0xc0"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4808:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4808:17:45"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4794:10:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4900:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "4902:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4902:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4902:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4843:10:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4855:18:45",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4840:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4840:34:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4879:10:45"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4891:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4876:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4876:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "4837:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4837:62:45"
                              },
                              "nodeType": "YulIf",
                              "src": "4834:88:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4938:2:45",
                                    "type": "",
                                    "value": "64"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4942:10:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4931:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4931:22:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4931:22:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4962:15:45",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "4971:6:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "4962:5:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "4993:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5026:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_enum_ItemType",
                                      "nodeType": "YulIdentifier",
                                      "src": "5001:24:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5001:35:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4986:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4986:51:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4986:51:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5046:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5078:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5089:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5074:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5074:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5061:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5061:32:45"
                              },
                              "variables": [
                                {
                                  "name": "value_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5050:7:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5127:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5102:24:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5102:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5102:33:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5155:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5163:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5151:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5151:15:45"
                                  },
                                  {
                                    "name": "value_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5168:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5144:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5144:32:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5144:32:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5196:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5204:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5192:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5192:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "5226:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5237:2:45",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5222:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5222:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "5209:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5209:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5185:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5185:57:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5185:57:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5262:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5270:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5258:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5258:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "5292:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5303:2:45",
                                            "type": "",
                                            "value": "96"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5288:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5288:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "5275:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5275:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5251:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5251:57:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5251:57:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5328:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5336:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5324:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5324:16:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "5359:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5370:3:45",
                                            "type": "",
                                            "value": "128"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5355:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5355:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "5342:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5342:33:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5317:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5317:59:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5317:59:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5385:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "5417:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5428:3:45",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5413:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5413:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5400:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5400:33:45"
                              },
                              "variables": [
                                {
                                  "name": "value_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5389:7:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5467:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "5442:24:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5442:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5442:33:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5495:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5503:3:45",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5491:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5491:16:45"
                                  },
                                  {
                                    "name": "value_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5509:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5484:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5484:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5484:33:45"
                            }
                          ]
                        },
                        "name": "abi_decode_struct_ConsiderationItem",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4660:9:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4671:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "4679:5:45",
                            "type": ""
                          }
                        ],
                        "src": "4615:908:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "5609:663:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5658:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5667:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5670:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "5660:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5660:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5660:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "5637:6:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5645:4:45",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5633:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5633:17:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "5652:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "5629:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5629:27:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "5622:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5622:35:45"
                              },
                              "nodeType": "YulIf",
                              "src": "5619:55:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5683:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "5706:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5693:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5693:20:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5687:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5722:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5732:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "5726:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5745:84:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "5825:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_struct_AdvancedOrder_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "5772:52:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5772:56:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "5756:15:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5756:73:45"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "5749:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5838:16:45",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "5851:3:45"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "5842:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "5870:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "5875:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5863:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5863:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5863:15:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5887:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "5898:3:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5903:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5894:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5894:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "5887:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5915:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "5925:4:45",
                                "type": "",
                                "value": "0xc0"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "5919:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "5938:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "5960:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "5972:2:45"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "5976:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "5968:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5968:11:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5956:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5956:24:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "5982:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5952:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5952:33:45"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "5942:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6013:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6022:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6025:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6015:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6015:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6015:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6000:6:45"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "6008:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "5997:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5997:15:45"
                              },
                              "nodeType": "YulIf",
                              "src": "5994:35:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6038:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6053:6:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "6061:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6049:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6049:15:45"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "6042:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6129:114:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "6150:3:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "src",
                                              "nodeType": "YulIdentifier",
                                              "src": "6191:3:45"
                                            },
                                            {
                                              "name": "end",
                                              "nodeType": "YulIdentifier",
                                              "src": "6196:3:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_struct_ConsiderationItem",
                                            "nodeType": "YulIdentifier",
                                            "src": "6155:35:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6155:45:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6143:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6143:58:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6143:58:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6214:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "6225:3:45"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "6230:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6221:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6221:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "6214:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "6084:3:45"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "6089:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6081:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6081:15:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6097:23:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6099:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "6110:3:45"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "6115:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6106:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6106:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "6099:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6077:3:45",
                                "statements": []
                              },
                              "src": "6073:170:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6252:14:45",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "6261:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "6252:5:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_struct_ConsiderationItem_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "5583:6:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "5591:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "5599:5:45",
                            "type": ""
                          }
                        ],
                        "src": "5528:744:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6333:94:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6343:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6365:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6352:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6352:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "6343:5:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6405:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6414:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6417:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6407:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6407:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6407:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6394:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6401:1:45",
                                        "type": "",
                                        "value": "4"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "6391:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6391:12:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "6384:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6384:20:45"
                              },
                              "nodeType": "YulIf",
                              "src": "6381:40:45"
                            }
                          ]
                        },
                        "name": "abi_decode_enum_OrderType",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "6312:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6323:5:45",
                            "type": ""
                          }
                        ],
                        "src": "6277:150:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6504:1219:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6550:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6559:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6562:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6552:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6552:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6552:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "6525:3:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6530:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "6521:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6521:19:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6542:6:45",
                                    "type": "",
                                    "value": "0x0160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6517:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6517:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "6514:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6575:31:45",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "allocate_memory_6029",
                                  "nodeType": "YulIdentifier",
                                  "src": "6584:20:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6584:22:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "6575:5:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6622:5:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6648:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_address",
                                      "nodeType": "YulIdentifier",
                                      "src": "6629:18:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6629:29:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6615:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6615:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6615:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6679:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6686:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6675:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6675:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6714:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "6725:2:45",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6710:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6710:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_address",
                                      "nodeType": "YulIdentifier",
                                      "src": "6691:18:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6691:38:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6668:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6668:62:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6668:62:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6739:46:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "6770:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6781:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6766:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6766:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6753:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6753:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "6743:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6794:28:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6804:18:45",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6798:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6849:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6858:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6861:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "6851:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6851:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6851:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6837:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "6845:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6834:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6834:14:45"
                              },
                              "nodeType": "YulIf",
                              "src": "6831:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "6885:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6892:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6881:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6881:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "6939:9:45"
                                          },
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "6950:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "6935:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6935:22:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "6959:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_array_struct_OfferItem_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "6897:37:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6897:66:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6874:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6874:90:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6874:90:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6973:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7006:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7017:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7002:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7002:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6989:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6989:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "6977:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7050:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7059:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7062:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7052:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7052:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7052:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7036:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7046:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "7033:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7033:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "7030:36:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7086:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7093:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7082:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7082:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7148:9:45"
                                          },
                                          {
                                            "name": "offset_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "7159:8:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7144:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7144:24:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "7170:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_array_struct_ConsiderationItem_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "7098:45:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7098:76:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7075:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7075:100:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7075:100:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7195:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7202:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7191:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7191:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7238:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7249:3:45",
                                            "type": "",
                                            "value": "128"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7234:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7234:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_enum_OrderType",
                                      "nodeType": "YulIdentifier",
                                      "src": "7208:25:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7208:46:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7184:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7184:71:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7184:71:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7275:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7282:3:45",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7271:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7271:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7305:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7316:3:45",
                                            "type": "",
                                            "value": "160"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7301:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7301:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "7288:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7288:33:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7264:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7264:58:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7264:58:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7342:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7349:3:45",
                                        "type": "",
                                        "value": "192"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7338:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7338:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7372:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7383:3:45",
                                            "type": "",
                                            "value": "192"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7368:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7368:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "7355:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7355:33:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7331:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7331:58:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7331:58:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7409:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7416:3:45",
                                        "type": "",
                                        "value": "224"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7405:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7405:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7439:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7450:3:45",
                                            "type": "",
                                            "value": "224"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7435:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7435:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "7422:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7422:33:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7398:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7398:58:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7398:58:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7465:13:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7475:3:45",
                                "type": "",
                                "value": "256"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "7469:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7498:5:45"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "7505:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7494:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7494:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7527:9:45"
                                          },
                                          {
                                            "name": "_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "7538:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7523:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7523:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "7510:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7510:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7487:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7487:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7487:56:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7552:13:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7562:3:45",
                                "type": "",
                                "value": "288"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "7556:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7585:5:45"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "7592:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7581:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7581:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7614:9:45"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "7625:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7610:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7610:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "7597:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7597:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7574:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7574:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7574:56:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7639:13:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "7649:3:45",
                                "type": "",
                                "value": "320"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "7643:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7672:5:45"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7679:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7668:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7668:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "7701:9:45"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "7712:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7697:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7697:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "7684:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7684:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7661:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7661:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7661:56:45"
                            }
                          ]
                        },
                        "name": "abi_decode_struct_OrderParameters",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "6475:9:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6486:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6494:5:45",
                            "type": ""
                          }
                        ],
                        "src": "6432:1291:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7777:137:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7787:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7809:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7796:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7796:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "7787:5:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "7892:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7901:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "7904:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "7894:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7894:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7894:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "7838:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "7849:5:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7856:32:45",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "7845:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7845:44:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "7835:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7835:55:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7828:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7828:63:45"
                              },
                              "nodeType": "YulIf",
                              "src": "7825:83:45"
                            }
                          ]
                        },
                        "name": "abi_decode_uint120",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "7756:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "7767:5:45",
                            "type": ""
                          }
                        ],
                        "src": "7728:186:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7971:478:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8020:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8029:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8032:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8022:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8022:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8022:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "7999:6:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8007:4:45",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "7995:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7995:17:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "8014:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "7991:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7991:27:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "7984:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7984:35:45"
                              },
                              "nodeType": "YulIf",
                              "src": "7981:55:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8045:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8068:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8055:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8055:20:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8049:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8114:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "8116:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8116:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8116:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8090:2:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8094:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8087:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8087:26:45"
                              },
                              "nodeType": "YulIf",
                              "src": "8084:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8145:70:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "8188:2:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8192:4:45",
                                                "type": "",
                                                "value": "0x1f"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "8184:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8184:13:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "8203:2:45",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "8199:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "8199:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "8180:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8180:27:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8209:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8176:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8176:38:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "8160:15:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8160:55:45"
                              },
                              "variables": [
                                {
                                  "name": "array_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8149:7:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8231:7:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8240:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8224:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8224:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8224:19:45"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8291:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8300:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8303:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8293:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8293:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8293:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "8266:6:45"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "8274:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8262:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8262:15:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8279:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8258:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8258:26:45"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "8286:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8255:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8255:35:45"
                              },
                              "nodeType": "YulIf",
                              "src": "8252:55:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "array_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "8333:7:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8342:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8329:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8329:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "8353:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8361:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8349:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8349:17:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8368:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldatacopy",
                                  "nodeType": "YulIdentifier",
                                  "src": "8316:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8316:55:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8316:55:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "array_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "8395:7:45"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "8404:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8391:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8391:16:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8409:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8387:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8387:27:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8416:1:45",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8380:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8380:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8380:38:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8427:16:45",
                              "value": {
                                "name": "array_1",
                                "nodeType": "YulIdentifier",
                                "src": "8436:7:45"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "8427:5:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "7945:6:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7953:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "7961:5:45",
                            "type": ""
                          }
                        ],
                        "src": "7919:530:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "8524:826:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8568:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8577:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8580:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8570:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8570:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8570:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "8545:3:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "8550:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "8541:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8541:19:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8562:4:45",
                                    "type": "",
                                    "value": "0xa0"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8537:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8537:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "8534:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "8593:31:45",
                              "value": {
                                "arguments": [],
                                "functionName": {
                                  "name": "allocate_memory_6027",
                                  "nodeType": "YulIdentifier",
                                  "src": "8602:20:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8602:22:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "8593:5:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8633:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "8660:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "8647:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8647:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "8637:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8679:28:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "8689:18:45",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8683:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8734:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8743:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "8746:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "8736:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8736:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8736:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "8722:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "8730:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "8719:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8719:14:45"
                              },
                              "nodeType": "YulIf",
                              "src": "8716:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "8766:5:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "8811:9:45"
                                          },
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "8822:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8807:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8807:22:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "8831:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_struct_OrderParameters",
                                      "nodeType": "YulIdentifier",
                                      "src": "8773:33:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8773:62:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8759:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8759:77:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8759:77:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "8856:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8863:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8852:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8852:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "8891:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8902:2:45",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8887:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8887:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint120",
                                      "nodeType": "YulIdentifier",
                                      "src": "8868:18:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8868:38:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8845:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8845:62:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8845:62:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "8927:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "8934:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "8923:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8923:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "8962:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "8973:2:45",
                                            "type": "",
                                            "value": "64"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "8958:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "8958:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_uint120",
                                      "nodeType": "YulIdentifier",
                                      "src": "8939:18:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8939:38:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8916:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8916:62:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8916:62:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "8987:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9020:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9031:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9016:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9016:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9003:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9003:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "8991:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9064:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9073:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9076:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9066:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9066:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9066:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9050:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9060:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9047:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9047:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "9044:36:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "9100:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9107:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9096:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9096:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "9133:9:45"
                                          },
                                          {
                                            "name": "offset_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "9144:8:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9129:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9129:24:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "9155:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "9112:16:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9112:47:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9089:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9089:71:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9089:71:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9169:49:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "9202:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9213:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9198:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9198:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9185:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9185:33:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "9173:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9247:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9256:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9259:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9249:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9249:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9249:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9233:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9243:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9230:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9230:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "9227:36:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "9283:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "9290:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9279:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9279:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "9317:9:45"
                                          },
                                          {
                                            "name": "offset_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "9328:8:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9313:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9313:24:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "9339:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_decode_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "9296:16:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9296:47:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9272:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9272:72:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9272:72:45"
                            }
                          ]
                        },
                        "name": "abi_decode_struct_AdvancedOrder",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "8495:9:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "8506:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "8514:5:45",
                            "type": ""
                          }
                        ],
                        "src": "8454:896:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "9432:852:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9481:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9490:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9493:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9483:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9483:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9483:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "9460:6:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9468:4:45",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "9456:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9456:17:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "9475:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "9452:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9452:27:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "9445:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9445:35:45"
                              },
                              "nodeType": "YulIf",
                              "src": "9442:55:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9506:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9529:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9516:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9516:20:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9510:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9545:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "9555:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "9549:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9568:84:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "9648:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_struct_AdvancedOrder_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "9595:52:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9595:56:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "9579:15:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9579:73:45"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "9572:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9661:16:45",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "9674:3:45"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "9665:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "9693:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "9698:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9686:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9686:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9686:15:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "9710:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "9721:3:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9726:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9717:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9717:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "9710:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9738:46:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "9760:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "9772:1:45",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "9775:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "9768:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "9768:10:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "9756:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9756:23:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9781:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9752:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9752:32:45"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "9742:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9812:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9821:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9824:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9814:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9814:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9814:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9799:6:45"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "9807:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9796:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9796:15:45"
                              },
                              "nodeType": "YulIf",
                              "src": "9793:35:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9837:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "9852:6:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "9860:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9848:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9848:15:45"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "9841:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9928:327:45",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "9942:36:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "9974:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "9961:12:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9961:17:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "innerOffset",
                                        "nodeType": "YulTypedName",
                                        "src": "9946:11:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "10042:74:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "10060:11:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10070:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_3",
                                              "nodeType": "YulTypedName",
                                              "src": "10064:2:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "10095:2:45"
                                              },
                                              {
                                                "name": "_3",
                                                "nodeType": "YulIdentifier",
                                                "src": "10099:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "10088:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "10088:14:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "10088:14:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "9997:11:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10010:18:45",
                                          "type": "",
                                          "value": "0xffffffffffffffff"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "9994:2:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9994:35:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "9991:125:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "10136:3:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "offset",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "10181:6:45"
                                                    },
                                                    {
                                                      "name": "innerOffset",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "10189:11:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10177:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "10177:24:45"
                                                },
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10203:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "10173:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10173:33:45"
                                            },
                                            {
                                              "name": "end",
                                              "nodeType": "YulIdentifier",
                                              "src": "10208:3:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "abi_decode_struct_AdvancedOrder",
                                            "nodeType": "YulIdentifier",
                                            "src": "10141:31:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10141:71:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10129:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10129:84:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10129:84:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10226:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "10237:3:45"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "10242:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10233:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10233:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "10226:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "9883:3:45"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "9888:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9880:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9880:15:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "9896:23:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "9898:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "9909:3:45"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "9914:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "9905:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9905:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "9898:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "9876:3:45",
                                "statements": []
                              },
                              "src": "9872:383:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10264:14:45",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "10273:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "array",
                                  "nodeType": "YulIdentifier",
                                  "src": "10264:5:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_array_struct_AdvancedOrder_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "9406:6:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "9414:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "array",
                            "nodeType": "YulTypedName",
                            "src": "9422:5:45",
                            "type": ""
                          }
                        ],
                        "src": "9355:929:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10398:283:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10447:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10456:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10459:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10449:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10449:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10449:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "10426:6:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "10434:4:45",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10422:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10422:17:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "10441:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10418:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10418:27:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "10411:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10411:35:45"
                              },
                              "nodeType": "YulIf",
                              "src": "10408:55:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10472:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10495:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10482:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10482:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "10472:6:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10545:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10554:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10557:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10547:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10547:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10547:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "10517:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10525:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10514:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10514:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "10511:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10570:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "10586:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10594:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10582:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10582:17:45"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "10570:8:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10659:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10668:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10671:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10661:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10661:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10661:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "10622:6:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "10634:1:45",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "10637:6:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "10630:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "10630:14:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10618:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10618:27:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "10647:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10614:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10614:38:45"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "10654:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10611:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10611:47:45"
                              },
                              "nodeType": "YulIf",
                              "src": "10608:67:45"
                            }
                          ]
                        },
                        "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "10361:6:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "10369:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "10377:8:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "10387:6:45",
                            "type": ""
                          }
                        ],
                        "src": "10289:392:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "10983:863:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11029:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11038:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11041:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11031:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11031:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11031:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "11004:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11013:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "11000:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11000:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11025:2:45",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10996:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10996:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "10993:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11054:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "11081:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11068:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11068:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "11058:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11100:28:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11110:18:45",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11104:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11155:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11164:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11167:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11157:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11157:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11157:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "11143:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11151:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11140:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11140:14:45"
                              },
                              "nodeType": "YulIf",
                              "src": "11137:34:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11180:84:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11236:9:45"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "11247:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11232:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11232:22:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11256:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_AdvancedOrder_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "11190:41:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11190:74:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "11180:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11273:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11306:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11317:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11302:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11302:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11289:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11289:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11277:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11350:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11359:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11362:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11352:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11352:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11352:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11336:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11346:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11333:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11333:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "11330:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11375:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11468:9:45"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "11479:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11464:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11464:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11490:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "11401:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11401:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11379:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11389:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11507:18:45",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "11517:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "11507:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11534:18:45",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "11544:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "11534:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11561:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11594:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11605:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11590:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11590:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11577:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11577:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "11565:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11638:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11647:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11650:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "11640:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11640:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11640:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "11624:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "11634:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "11621:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11621:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "11618:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11663:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "11756:9:45"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "11767:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11752:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11752:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "11778:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "11689:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11689:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11667:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "11677:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11795:18:45",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "11805:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "11795:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11822:18:45",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "11832:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "11822:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "10917:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "10928:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "10940:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "10948:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "10956:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "10964:6:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "10972:6:45",
                            "type": ""
                          }
                        ],
                        "src": "10686:1160:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "11883:95:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11900:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11907:3:45",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "11912:10:45",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "11903:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11903:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11893:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11893:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11893:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11940:1:45",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11943:4:45",
                                    "type": "",
                                    "value": "0x21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11933:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11933:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11933:15:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11964:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11967:4:45",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "11957:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11957:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11957:15:45"
                            }
                          ]
                        },
                        "name": "panic_error_0x21",
                        "nodeType": "YulFunctionDefinition",
                        "src": "11851:127:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12033:89:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12067:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x21",
                                        "nodeType": "YulIdentifier",
                                        "src": "12069:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12069:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12069:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "12056:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12063:1:45",
                                        "type": "",
                                        "value": "6"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "12053:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12053:12:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "12046:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12046:20:45"
                              },
                              "nodeType": "YulIf",
                              "src": "12043:46:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12105:3:45"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12110:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12098:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12098:18:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12098:18:45"
                            }
                          ]
                        },
                        "name": "abi_encode_enum_ItemType",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "12017:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "12024:3:45",
                            "type": ""
                          }
                        ],
                        "src": "11983:139:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12171:60:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12188:3:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "12197:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12212:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12217:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "12208:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12208:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "12221:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "12204:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12204:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12193:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12193:31:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12181:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12181:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12181:44:45"
                            }
                          ]
                        },
                        "name": "abi_encode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "12155:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "12162:3:45",
                            "type": ""
                          }
                        ],
                        "src": "12127:104:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12292:380:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "12333:5:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "12327:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12327:12:45"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12341:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_enum_ItemType",
                                  "nodeType": "YulIdentifier",
                                  "src": "12302:24:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12302:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12302:43:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12354:43:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "12384:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12391:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12380:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12380:16:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12374:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12374:23:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0",
                                  "nodeType": "YulTypedName",
                                  "src": "12358:12:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12406:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12424:3:45",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12429:1:45",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "12420:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12420:11:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "12433:1:45",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "12416:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12416:19:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12410:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12455:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12460:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12451:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12451:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulIdentifier",
                                        "src": "12471:12:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12485:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12467:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12467:21:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12444:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12444:45:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12444:45:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12509:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12514:4:45",
                                        "type": "",
                                        "value": "0x40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12505:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12505:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "12531:5:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "12538:4:45",
                                            "type": "",
                                            "value": "0x40"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "12527:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12527:16:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "12521:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12521:23:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12498:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12498:47:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12498:47:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12565:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12570:4:45",
                                        "type": "",
                                        "value": "0x60"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12561:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12561:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "12587:5:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "12594:4:45",
                                            "type": "",
                                            "value": "0x60"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "12583:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12583:16:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "12577:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12577:23:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12554:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12554:47:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12554:47:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "12621:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12626:4:45",
                                        "type": "",
                                        "value": "0x80"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12617:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12617:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "12647:5:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "12654:4:45",
                                                "type": "",
                                                "value": "0x80"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "12643:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12643:16:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "12637:5:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12637:23:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "12662:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "12633:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12633:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12610:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12610:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12610:56:45"
                            }
                          ]
                        },
                        "name": "abi_encode_struct_ReceivedItem",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "12276:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "12283:3:45",
                            "type": ""
                          }
                        ],
                        "src": "12236:436:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "12747:570:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12757:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12777:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12771:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12771:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "12761:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12799:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12804:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12792:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12792:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12792:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12820:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12830:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "12824:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "12843:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "12854:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12859:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12850:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12850:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "12843:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12871:28:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "12889:5:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "12896:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "12885:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12885:14:45"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "12875:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12908:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12917:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "12912:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "12976:316:45",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "12990:23:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "13006:6:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "13000:5:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13000:13:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "12994:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "13063:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "13057:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "13057:9:45"
                                        },
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "13068:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_struct_ReceivedItem",
                                        "nodeType": "YulIdentifier",
                                        "src": "13026:30:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13026:46:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13026:46:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "13096:3:45"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "13101:4:45",
                                              "type": "",
                                              "value": "0xa0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "13092:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "13092:14:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_2",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "13122:2:45"
                                                    },
                                                    {
                                                      "name": "_1",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "13126:2:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13118:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "13118:11:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "13112:5:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "13112:18:45"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "13140:3:45",
                                                      "type": "",
                                                      "value": "160"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "13145:1:45",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13136:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "13136:11:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "13149:1:45",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "13132:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "13132:19:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "13108:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "13108:44:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "13085:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13085:68:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13085:68:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "13177:3:45"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "13182:4:45",
                                              "type": "",
                                              "value": "0xc0"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "13173:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "13173:14:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "13199:2:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "13203:4:45",
                                                  "type": "",
                                                  "value": "0x40"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "13195:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "13195:13:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "13189:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "13189:20:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "13166:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13166:44:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13166:44:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13223:21:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "13234:3:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13239:4:45",
                                          "type": "",
                                          "value": "0xe0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13230:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13230:14:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "13223:3:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "13257:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "13271:6:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "13279:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "13267:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13267:15:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "13257:6:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "12938:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "12941:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "12935:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12935:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "12949:18:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12951:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "12960:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12963:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "12956:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12956:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "12951:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "12931:3:45",
                                "statements": []
                              },
                              "src": "12927:365:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13301:10:45",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "13308:3:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "13301:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_struct_Execution_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "12724:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "12731:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "12739:3:45",
                            "type": ""
                          }
                        ],
                        "src": "12677:640:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13527:119:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13544:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13555:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13537:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13537:21:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13537:21:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13567:73:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "13613:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13625:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "13636:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13621:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13621:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_struct_Execution_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "13575:37:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13575:65:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "13567:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13496:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13507:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "13518:4:45",
                            "type": ""
                          }
                        ],
                        "src": "13322:324:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "13756:290:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13802:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13811:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13814:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13804:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13804:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13804:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13777:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "13786:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13773:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13773:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13798:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13769:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13769:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "13766:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13827:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13854:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "13841:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13841:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "13831:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "13907:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13916:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "13919:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "13909:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13909:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13909:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13879:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13887:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13876:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13876:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "13873:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13932:32:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "13946:9:45"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13957:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13942:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13942:22:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "13936:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14003:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14012:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14015:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14005:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14005:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14005:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "13984:7:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "13993:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "13980:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13980:16:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13998:3:45",
                                    "type": "",
                                    "value": "352"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "13976:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13976:26:45"
                              },
                              "nodeType": "YulIf",
                              "src": "13973:46:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14028:12:45",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "14038:2:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14028:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_OrderComponents_$3892_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "13722:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "13733:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "13745:6:45",
                            "type": ""
                          }
                        ],
                        "src": "13651:395:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14152:76:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14162:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14174:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14185:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14170:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14170:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14162:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14204:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "14215:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14197:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14197:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14197:25:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14121:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14132:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14143:4:45",
                            "type": ""
                          }
                        ],
                        "src": "14051:177:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14363:357:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14409:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14418:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14421:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14411:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14411:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14411:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "14384:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14393:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "14380:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14380:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14405:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14376:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14376:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "14373:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14434:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14461:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "14448:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14448:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "14438:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14514:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14523:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14526:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14516:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14516:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14516:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "14486:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14494:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14483:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14483:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "14480:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "14539:121:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "14632:9:45"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "14643:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "14628:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14628:22:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "14652:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "14565:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14565:95:45"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14543:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "14553:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14669:18:45",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "14679:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "14669:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "14696:18:45",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "14706:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "14696:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14321:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "14332:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14344:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "14352:6:45",
                            "type": ""
                          }
                        ],
                        "src": "14233:487:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "14820:92:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "14830:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14842:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14853:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "14838:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14838:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "14830:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "14872:9:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "14897:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "14890:6:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "14890:14:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "14883:6:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "14883:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14865:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14865:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14865:41:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "14789:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "14800:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "14811:4:45",
                            "type": ""
                          }
                        ],
                        "src": "14725:187:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15130:666:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15176:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15185:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15188:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15178:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15178:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15178:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "15151:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15160:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15147:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15147:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15172:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15143:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15143:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "15140:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15201:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "15228:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15215:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15215:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "15205:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15247:28:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15257:18:45",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15251:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15302:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15311:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15314:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15304:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15304:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15304:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "15290:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15298:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15287:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15287:14:45"
                              },
                              "nodeType": "YulIf",
                              "src": "15284:34:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15327:121:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15420:9:45"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "15431:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15416:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15416:22:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "15440:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "15353:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15353:95:45"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15331:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15341:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15457:18:45",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "15467:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "15457:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15484:18:45",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "15494:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "15484:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15511:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15544:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "15555:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15540:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15540:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15527:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15527:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15515:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15588:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15597:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15600:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15590:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15590:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15590:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15574:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "15584:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15571:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15571:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "15568:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15613:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15706:9:45"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "15717:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "15702:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15702:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "15728:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "15639:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15639:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15617:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "15627:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15745:18:45",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "15755:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "15745:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "15772:18:45",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "15782:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "15772:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15072:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "15083:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15095:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15103:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "15111:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "15119:6:45",
                            "type": ""
                          }
                        ],
                        "src": "14917:879:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "15913:340:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15959:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15968:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15971:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "15961:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15961:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15961:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "15934:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "15943:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "15930:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15930:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15955:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "15926:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15926:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "15923:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "15984:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16011:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "15998:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15998:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "15988:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16064:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16073:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16076:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16066:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16066:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16066:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "16036:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16044:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16033:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16033:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "16030:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16089:32:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16103:9:45"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "16114:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16099:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16099:22:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16093:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16159:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16168:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16171:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16161:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16161:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16161:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "16141:7:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16150:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16137:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16137:16:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16155:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16133:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16133:25:45"
                              },
                              "nodeType": "YulIf",
                              "src": "16130:45:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16184:12:45",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "16194:2:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "16184:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16205:42:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16232:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16243:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16228:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16228:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16215:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16215:32:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "16205:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_Order_$4019_calldata_ptrt_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "15871:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "15882:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "15894:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "15902:6:45",
                            "type": ""
                          }
                        ],
                        "src": "15801:452:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "16466:650:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16512:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16521:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16524:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16514:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16514:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16514:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "16487:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16496:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16483:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16483:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16508:2:45",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16479:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16479:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "16476:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16537:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16564:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16551:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16551:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "16541:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16583:28:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16593:18:45",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16587:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16638:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16647:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16650:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16640:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16640:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16640:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "16626:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16634:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16623:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16623:14:45"
                              },
                              "nodeType": "YulIf",
                              "src": "16620:34:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16663:32:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "16677:9:45"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "16688:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "16673:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16673:22:45"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "16667:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16734:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16743:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16746:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16736:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16736:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16736:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "16715:7:45"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "16724:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "16711:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16711:16:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16729:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16707:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16707:26:45"
                              },
                              "nodeType": "YulIf",
                              "src": "16704:46:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "16759:12:45",
                              "value": {
                                "name": "_2",
                                "nodeType": "YulIdentifier",
                                "src": "16769:2:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "16759:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16780:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16813:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16824:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16809:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16809:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16796:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16796:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16784:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "16857:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16866:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "16869:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16859:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16859:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16859:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16843:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "16853:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "16840:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16840:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "16837:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16882:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "16975:9:45"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16986:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16971:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16971:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "16997:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "16908:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16908:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16886:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "16896:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17014:18:45",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "17024:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "17014:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17041:18:45",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "17051:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "17041:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17068:42:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17095:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17106:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17091:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17091:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "17078:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17078:32:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "17068:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_AdvancedOrder_$4031_calldata_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "16408:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "16419:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "16431:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "16439:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "16447:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "16455:6:45",
                            "type": ""
                          }
                        ],
                        "src": "16258:858:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "17523:1058:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17570:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17579:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17582:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "17572:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17572:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17572:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "17544:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17553:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "17540:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17540:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17565:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17536:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17536:33:45"
                              },
                              "nodeType": "YulIf",
                              "src": "17533:53:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17595:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "17622:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "17609:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17609:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "17599:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17641:28:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17651:18:45",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17645:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17696:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17705:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17708:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "17698:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17698:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17698:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "17684:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17692:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17681:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17681:14:45"
                              },
                              "nodeType": "YulIf",
                              "src": "17678:34:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17721:121:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17814:9:45"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "17825:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17810:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17810:22:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "17834:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "17747:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17747:95:45"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17725:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17735:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17851:18:45",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "17861:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "17851:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "17878:18:45",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "17888:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "17878:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17905:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "17938:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "17949:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "17934:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17934:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "17921:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17921:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "17909:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17982:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17991:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17994:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "17984:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17984:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17984:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17968:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "17978:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "17965:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17965:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "17962:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18007:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18100:9:45"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "18111:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18096:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18096:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "18122:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "18033:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18033:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18011:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18021:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18139:18:45",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "18149:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "18139:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18166:18:45",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "18176:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "18166:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18193:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18226:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18237:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18222:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18222:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18209:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18209:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "18197:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "18270:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18279:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "18282:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "18272:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "18272:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "18272:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "18256:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "18266:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "18253:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18253:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "18250:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18295:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18388:9:45"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "18399:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18384:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18384:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "18410:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "18321:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18321:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18299:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value5_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18309:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18427:18:45",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "18437:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "18427:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18454:18:45",
                              "value": {
                                "name": "value5_1",
                                "nodeType": "YulIdentifier",
                                "src": "18464:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "18454:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18481:42:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18508:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18519:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18504:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18504:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18491:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18491:32:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "18481:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18532:43:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "18559:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18570:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18555:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18555:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18542:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18542:33:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value7",
                                  "nodeType": "YulIdentifier",
                                  "src": "18532:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_bytes32t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "17433:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "17444:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "17456:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "17464:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "17472:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "17480:6:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "17488:6:45",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "17496:6:45",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "17504:6:45",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "17512:6:45",
                            "type": ""
                          }
                        ],
                        "src": "17121:1460:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "18863:602:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18873:32:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18891:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18902:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18887:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18887:18:45"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "18877:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "18921:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "18932:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18914:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18914:21:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18914:21:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18944:17:45",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "18955:6:45"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "18948:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "18970:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "18990:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "18984:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18984:13:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "18974:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19013:6:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "19021:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19006:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19006:22:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19006:22:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19037:25:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19048:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19059:2:45",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19044:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19044:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "19037:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19071:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19081:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "19075:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19094:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "19112:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19120:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "19108:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19108:15:45"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "19098:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "19132:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "19141:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "19136:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "19200:136:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "19221:3:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "srcPtr",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "19246:6:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "19240:5:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "19240:13:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "iszero",
                                                "nodeType": "YulIdentifier",
                                                "src": "19233:6:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "19233:21:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "iszero",
                                            "nodeType": "YulIdentifier",
                                            "src": "19226:6:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "19226:29:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "19214:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19214:42:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19214:42:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "19269:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "19280:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "19285:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "19276:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19276:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "19269:3:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "19301:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "19315:6:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "19323:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "19311:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19311:15:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "19301:6:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "19162:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "19165:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19159:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19159:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "19173:18:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "19175:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "19184:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "19187:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "19180:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19180:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "19175:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "19155:3:45",
                                "statements": []
                              },
                              "src": "19151:185:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19356:9:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "19367:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19352:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19352:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "19376:3:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19381:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "19372:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19372:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19345:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19345:47:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19345:47:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19401:58:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19447:6:45"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "19455:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_struct_Execution_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "19409:37:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19409:50:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19401:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "18824:9:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "18835:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "18843:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "18854:4:45",
                            "type": ""
                          }
                        ],
                        "src": "18586:879:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19647:211:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "19664:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19675:2:45",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19657:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19657:21:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19657:21:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19687:53:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "19713:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19725:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19736:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19721:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19721:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "19695:17:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19695:45:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "19687:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19760:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19771:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19756:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19756:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "19776:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19749:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19749:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19749:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "19803:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "19814:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19799:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19799:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "19823:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "19839:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "19844:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "19835:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "19835:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "19848:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "19831:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19831:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "19819:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19819:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19792:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19792:60:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19792:60:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_string_memory_ptr_t_bytes32_t_address__to_t_string_memory_ptr_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19600:9:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "19611:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "19619:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19627:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "19638:4:45",
                            "type": ""
                          }
                        ],
                        "src": "19470:388:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "19973:290:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20019:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20028:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20031:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20021:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20021:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20021:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "19994:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20003:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "19990:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19990:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20015:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "19986:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19986:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "19983:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20044:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20071:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "20058:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20058:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "20048:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20124:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20133:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20136:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20126:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20126:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20126:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "20096:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20104:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20093:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20093:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "20090:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20149:32:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20163:9:45"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "20174:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "20159:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20159:22:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20153:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20220:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20229:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20232:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20222:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20222:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20222:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "20201:7:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "20210:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "20197:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20197:16:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20215:3:45",
                                    "type": "",
                                    "value": "576"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20193:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20193:26:45"
                              },
                              "nodeType": "YulIf",
                              "src": "20190:46:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20245:12:45",
                              "value": {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "20255:2:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "20245:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "19939:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "19950:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "19962:6:45",
                            "type": ""
                          }
                        ],
                        "src": "19863:400:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "20754:1256:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20801:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20810:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20813:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20803:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20803:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20803:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "20775:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "20784:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "20771:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "20771:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20796:3:45",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20767:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20767:33:45"
                              },
                              "nodeType": "YulIf",
                              "src": "20764:53:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20826:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "20853:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "20840:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20840:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "20830:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "20872:28:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "20882:18:45",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "20876:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20927:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20936:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20939:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20929:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20929:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20929:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "20915:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "20923:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "20912:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20912:14:45"
                              },
                              "nodeType": "YulIf",
                              "src": "20909:34:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "20952:84:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21008:9:45"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "21019:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21004:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21004:22:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "21028:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_AdvancedOrder_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "20962:41:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20962:74:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "20952:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21045:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21078:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21089:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21074:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21074:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21061:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21061:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21049:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21122:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21131:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21134:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21124:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21124:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21124:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21108:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21118:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21105:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21105:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "21102:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21147:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21240:9:45"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "21251:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21236:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21236:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "21262:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "21173:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21173:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21151:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21161:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21279:18:45",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "21289:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "21279:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21306:18:45",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "21316:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "21306:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21333:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21366:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21377:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21362:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21362:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21349:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21349:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_2",
                                  "nodeType": "YulTypedName",
                                  "src": "21337:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21410:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21419:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21422:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21412:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21412:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21412:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "21396:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21406:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21393:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21393:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "21390:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21435:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21528:9:45"
                                      },
                                      {
                                        "name": "offset_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "21539:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21524:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21524:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "21550:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "21461:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21461:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21439:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value4_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21449:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21567:18:45",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "21577:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "21567:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21594:18:45",
                              "value": {
                                "name": "value4_1",
                                "nodeType": "YulIdentifier",
                                "src": "21604:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value4",
                                  "nodeType": "YulIdentifier",
                                  "src": "21594:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21621:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21654:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21665:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21650:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21650:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21637:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21637:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_3",
                                  "nodeType": "YulTypedName",
                                  "src": "21625:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21698:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21707:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21710:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21700:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21700:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21700:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "21684:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "21694:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "21681:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21681:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "21678:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21723:123:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21816:9:45"
                                      },
                                      {
                                        "name": "offset_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "21827:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21812:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21812:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "21838:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "21749:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21749:97:45"
                              },
                              "variables": [
                                {
                                  "name": "value5_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21727:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value6_1",
                                  "nodeType": "YulTypedName",
                                  "src": "21737:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21855:18:45",
                              "value": {
                                "name": "value5_1",
                                "nodeType": "YulIdentifier",
                                "src": "21865:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value5",
                                  "nodeType": "YulIdentifier",
                                  "src": "21855:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21882:18:45",
                              "value": {
                                "name": "value6_1",
                                "nodeType": "YulIdentifier",
                                "src": "21892:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value6",
                                  "nodeType": "YulIdentifier",
                                  "src": "21882:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21909:43:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21936:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21947:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21932:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21932:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21919:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21919:33:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value7",
                                  "nodeType": "YulIdentifier",
                                  "src": "21909:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "21961:43:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "21988:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21999:3:45",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21984:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21984:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21971:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21971:33:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value8",
                                  "nodeType": "YulIdentifier",
                                  "src": "21961:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_bytes32t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "20656:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "20667:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "20679:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "20687:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "20695:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "20703:6:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "20711:6:45",
                            "type": ""
                          },
                          {
                            "name": "value5",
                            "nodeType": "YulTypedName",
                            "src": "20719:6:45",
                            "type": ""
                          },
                          {
                            "name": "value6",
                            "nodeType": "YulTypedName",
                            "src": "20727:6:45",
                            "type": ""
                          },
                          {
                            "name": "value7",
                            "nodeType": "YulTypedName",
                            "src": "20735:6:45",
                            "type": ""
                          },
                          {
                            "name": "value8",
                            "nodeType": "YulTypedName",
                            "src": "20743:6:45",
                            "type": ""
                          }
                        ],
                        "src": "20268:1742:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22155:357:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22201:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22210:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22213:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22203:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22203:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22203:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "22176:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22185:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "22172:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22172:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22197:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "22168:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22168:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "22165:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22226:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "22253:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22240:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22240:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "22230:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22306:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22315:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22318:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "22308:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22308:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22308:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "22278:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "22286:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "22275:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22275:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "22272:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22331:121:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "22424:9:45"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "22435:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22420:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22420:22:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "22444:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "22357:62:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22357:95:45"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22335:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22345:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22461:18:45",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "22471:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "22461:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22488:18:45",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "22498:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "22488:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_OrderComponents_$3892_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "22113:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "22124:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "22136:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "22144:6:45",
                            "type": ""
                          }
                        ],
                        "src": "22015:497:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "22717:2510:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22727:88:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "22807:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_struct_AdvancedOrder_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "22754:52:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22754:60:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "22738:15:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22738:77:45"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "22731:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22824:16:45",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "22837:3:45"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22828:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "22856:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "22861:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22849:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22849:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22849:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22877:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22887:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "22881:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "22900:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "22911:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "22916:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22907:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22907:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "22900:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22928:11:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "22938:1:45",
                                "type": "",
                                "value": "5"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "22932:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22948:41:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "22966:5:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "22977:2:45"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "22981:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "22973:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22973:15:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "22962:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22962:27:45"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "22952:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "23028:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23037:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23040:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "23030:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23030:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23030:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "23004:6:45"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "23012:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23012:14:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "23001:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23001:26:45"
                              },
                              "nodeType": "YulIf",
                              "src": "22998:46:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23053:16:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "23064:5:45"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "23057:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "23134:2060:45",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "23148:36:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "23180:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "23167:12:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23167:17:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "innerOffset",
                                        "nodeType": "YulTypedName",
                                        "src": "23152:11:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "23197:28:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "23207:18:45",
                                      "type": "",
                                      "value": "0xffffffffffffffff"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "23201:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "23273:74:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "23291:11:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "23301:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_4",
                                              "nodeType": "YulTypedName",
                                              "src": "23295:2:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "23326:2:45"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "23330:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "23319:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "23319:14:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "23319:14:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "23244:11:45"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "23257:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "23241:2:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23241:19:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "23238:109:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "23360:33:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "23374:5:45"
                                        },
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "23381:11:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "23370:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23370:23:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulTypedName",
                                        "src": "23364:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "23456:74:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "23474:11:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "23484:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_6",
                                              "nodeType": "YulTypedName",
                                              "src": "23478:2:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_6",
                                                "nodeType": "YulIdentifier",
                                                "src": "23509:2:45"
                                              },
                                              {
                                                "name": "_6",
                                                "nodeType": "YulIdentifier",
                                                "src": "23513:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "23502:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "23502:14:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "23502:14:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "calldatasize",
                                                "nodeType": "YulIdentifier",
                                                "src": "23417:12:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "23417:14:45"
                                            },
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "23433:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "sub",
                                            "nodeType": "YulIdentifier",
                                            "src": "23413:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23413:23:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23438:4:45",
                                          "type": "",
                                          "value": "0xa0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "slt",
                                        "nodeType": "YulIdentifier",
                                        "src": "23409:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23409:34:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "23406:124:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "23543:37:45",
                                    "value": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "allocate_memory_6027",
                                        "nodeType": "YulIdentifier",
                                        "src": "23558:20:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23558:22:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "value_1",
                                        "nodeType": "YulTypedName",
                                        "src": "23547:7:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "value_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "23600:7:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "23622:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "23609:12:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23609:16:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "23593:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23593:33:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23593:33:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "23639:40:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "23671:2:45"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "23675:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "23667:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23667:11:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "23654:12:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23654:25:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "value_2",
                                        "nodeType": "YulTypedName",
                                        "src": "23643:7:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "23730:74:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "23748:11:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "23758:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_7",
                                              "nodeType": "YulTypedName",
                                              "src": "23752:2:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_7",
                                                "nodeType": "YulIdentifier",
                                                "src": "23783:2:45"
                                              },
                                              {
                                                "name": "_7",
                                                "nodeType": "YulIdentifier",
                                                "src": "23787:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "23776:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "23776:14:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "23776:14:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "23705:7:45"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "23714:1:45",
                                              "type": "",
                                              "value": "2"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "23702:2:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23702:14:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "23695:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23695:22:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "23692:112:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "23828:7:45"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "23837:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "23824:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23824:16:45"
                                        },
                                        {
                                          "name": "value_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "23842:7:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "23817:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23817:33:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23817:33:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "23863:12:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "23873:2:45",
                                      "type": "",
                                      "value": "64"
                                    },
                                    "variables": [
                                      {
                                        "name": "_8",
                                        "nodeType": "YulTypedName",
                                        "src": "23867:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "23899:7:45"
                                            },
                                            {
                                              "name": "_8",
                                              "nodeType": "YulIdentifier",
                                              "src": "23908:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "23895:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23895:16:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "23930:2:45"
                                                },
                                                {
                                                  "name": "_8",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "23934:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "23926:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "23926:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "23913:12:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23913:25:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "23888:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23888:51:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23888:51:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "23952:12:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "23962:2:45",
                                      "type": "",
                                      "value": "96"
                                    },
                                    "variables": [
                                      {
                                        "name": "_9",
                                        "nodeType": "YulTypedName",
                                        "src": "23956:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "23988:7:45"
                                            },
                                            {
                                              "name": "_9",
                                              "nodeType": "YulIdentifier",
                                              "src": "23997:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "23984:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23984:16:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24019:2:45"
                                                },
                                                {
                                                  "name": "_9",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24023:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "24015:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "24015:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "24002:12:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24002:25:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "23977:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23977:51:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23977:51:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24041:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "24052:3:45",
                                      "type": "",
                                      "value": "128"
                                    },
                                    "variables": [
                                      {
                                        "name": "_10",
                                        "nodeType": "YulTypedName",
                                        "src": "24045:3:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24068:40:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "24099:2:45"
                                            },
                                            {
                                              "name": "_10",
                                              "nodeType": "YulIdentifier",
                                              "src": "24103:3:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "24095:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24095:12:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "24082:12:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24082:26:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "offset",
                                        "nodeType": "YulTypedName",
                                        "src": "24072:6:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "24151:77:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "24169:12:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "24180:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_11",
                                              "nodeType": "YulTypedName",
                                              "src": "24173:3:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_11",
                                                "nodeType": "YulIdentifier",
                                                "src": "24205:3:45"
                                              },
                                              {
                                                "name": "_11",
                                                "nodeType": "YulIdentifier",
                                                "src": "24210:3:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "24198:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "24198:16:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "24198:16:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "offset",
                                          "nodeType": "YulIdentifier",
                                          "src": "24127:6:45"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "24135:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "24124:2:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24124:14:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "24121:107:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24241:26:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_5",
                                          "nodeType": "YulIdentifier",
                                          "src": "24256:2:45"
                                        },
                                        {
                                          "name": "offset",
                                          "nodeType": "YulIdentifier",
                                          "src": "24260:6:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "24252:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24252:15:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_12",
                                        "nodeType": "YulTypedName",
                                        "src": "24245:3:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "24339:77:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "24357:12:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "24368:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_13",
                                              "nodeType": "YulTypedName",
                                              "src": "24361:3:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_13",
                                                "nodeType": "YulIdentifier",
                                                "src": "24393:3:45"
                                              },
                                              {
                                                "name": "_13",
                                                "nodeType": "YulIdentifier",
                                                "src": "24398:3:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "24386:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "24386:16:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "24386:16:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_12",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24298:3:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "24303:4:45",
                                                  "type": "",
                                                  "value": "0x1f"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "24294:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "24294:14:45"
                                            },
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "calldatasize",
                                                "nodeType": "YulIdentifier",
                                                "src": "24310:12:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "24310:14:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "24290:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24290:35:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "24283:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24283:43:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "24280:136:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24429:28:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_12",
                                          "nodeType": "YulIdentifier",
                                          "src": "24453:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "24440:12:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24440:17:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_14",
                                        "nodeType": "YulTypedName",
                                        "src": "24433:3:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24470:87:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_14",
                                              "nodeType": "YulIdentifier",
                                              "src": "24552:3:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_allocation_size_array_struct_AdvancedOrder_dyn",
                                            "nodeType": "YulIdentifier",
                                            "src": "24499:52:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24499:57:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "allocate_memory",
                                        "nodeType": "YulIdentifier",
                                        "src": "24483:15:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24483:74:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "dst_2",
                                        "nodeType": "YulTypedName",
                                        "src": "24474:5:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24570:18:45",
                                    "value": {
                                      "name": "dst_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "24583:5:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "dst_3",
                                        "nodeType": "YulTypedName",
                                        "src": "24574:5:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "24608:5:45"
                                        },
                                        {
                                          "name": "_14",
                                          "nodeType": "YulIdentifier",
                                          "src": "24615:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "24601:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24601:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24601:18:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "24632:23:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "24645:5:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "24652:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "24641:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24641:14:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "24632:5:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24668:47:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_12",
                                              "nodeType": "YulIdentifier",
                                              "src": "24692:3:45"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24701:2:45"
                                                },
                                                {
                                                  "name": "_14",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24705:3:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "shl",
                                                "nodeType": "YulIdentifier",
                                                "src": "24697:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "24697:12:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "24688:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24688:22:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "24712:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "24684:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24684:31:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "srcEnd_1",
                                        "nodeType": "YulTypedName",
                                        "src": "24672:8:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "24772:77:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "24790:12:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "24801:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_15",
                                              "nodeType": "YulTypedName",
                                              "src": "24794:3:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_15",
                                                "nodeType": "YulIdentifier",
                                                "src": "24826:3:45"
                                              },
                                              {
                                                "name": "_15",
                                                "nodeType": "YulIdentifier",
                                                "src": "24831:3:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "24819:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "24819:16:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "24819:16:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "srcEnd_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "24734:8:45"
                                        },
                                        {
                                          "arguments": [],
                                          "functionName": {
                                            "name": "calldatasize",
                                            "nodeType": "YulIdentifier",
                                            "src": "24744:12:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24744:14:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "24731:2:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24731:28:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "24728:121:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24862:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_12",
                                          "nodeType": "YulIdentifier",
                                          "src": "24879:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "24884:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "24875:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24875:12:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "src_1",
                                        "nodeType": "YulTypedName",
                                        "src": "24866:5:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "24968:106:45",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "dst_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "24993:5:45"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "src_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "25013:5:45"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "calldataload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "25000:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "25000:19:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "24986:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "24986:34:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "24986:34:45"
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "25037:23:45",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "dst_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "25050:5:45"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "25057:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "25046:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "25046:14:45"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "dst_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "25037:5:45"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "src_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "24911:5:45"
                                        },
                                        {
                                          "name": "srcEnd_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "24918:8:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "24908:2:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24908:19:45"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "24928:27:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "24930:23:45",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "src_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "24943:5:45"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "24950:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "24939:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "24939:14:45"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "src_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "24930:5:45"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "24904:3:45",
                                      "statements": []
                                    },
                                    "src": "24900:174:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "value_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "25098:7:45"
                                            },
                                            {
                                              "name": "_10",
                                              "nodeType": "YulIdentifier",
                                              "src": "25107:3:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "25094:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "25094:17:45"
                                        },
                                        {
                                          "name": "dst_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "25113:5:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "25087:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25087:32:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25087:32:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "25139:3:45"
                                        },
                                        {
                                          "name": "value_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "25144:7:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "25132:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25132:20:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25132:20:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "25165:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "25176:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "25181:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "25172:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25172:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "25165:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "23089:3:45"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "23094:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "23086:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23086:15:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "23102:23:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "23104:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "23115:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "23120:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "23111:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23111:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "23104:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "23082:3:45",
                                "statements": []
                              },
                              "src": "23078:2116:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25203:18:45",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "25216:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "converted",
                                  "nodeType": "YulIdentifier",
                                  "src": "25203:9:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "convert_array_t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "22685:5:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "22692:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "converted",
                            "nodeType": "YulTypedName",
                            "src": "22703:9:45",
                            "type": ""
                          }
                        ],
                        "src": "22517:2710:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25371:438:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25381:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "25420:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25407:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25407:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "25385:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "25521:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25530:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25533:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "25523:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25523:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25523:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "25455:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "25483:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "25483:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "25499:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "25479:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "25479:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "25514:2:45",
                                                "type": "",
                                                "value": "30"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "25510:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "25510:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "25475:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25475:43:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "25451:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25451:68:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "25444:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25444:76:45"
                              },
                              "nodeType": "YulIf",
                              "src": "25441:96:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25546:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "25564:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "25574:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25560:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25560:33:45"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "25550:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25602:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25625:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "25612:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25612:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "25602:6:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "25675:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25684:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25687:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "25677:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25677:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25677:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "25647:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25655:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "25644:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25644:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "25641:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25700:25:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "25712:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25720:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25708:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25708:17:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "25700:4:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "25787:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25796:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25799:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "25789:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25789:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25789:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "25741:4:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "25751:12:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25751:14:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "25771:6:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "25779:4:45",
                                            "type": "",
                                            "value": "0xa0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "25767:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25767:17:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "25747:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25747:38:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "25737:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25737:49:45"
                              },
                              "nodeType": "YulIf",
                              "src": "25734:69:45"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_array$_t_struct$_OfferItem_$3904_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "25328:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "25338:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "25354:4:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "25360:6:45",
                            "type": ""
                          }
                        ],
                        "src": "25232:577:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "25911:135:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "25958:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25967:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "25970:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "25960:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25960:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "25960:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "25932:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "25941:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "25928:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25928:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25953:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "25924:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25924:33:45"
                              },
                              "nodeType": "YulIf",
                              "src": "25921:53:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "25983:57:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26021:9:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "26032:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_struct_OfferItem",
                                  "nodeType": "YulIdentifier",
                                  "src": "25993:27:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25993:47:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "25983:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_OfferItem_$3904_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "25877:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "25888:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "25900:6:45",
                            "type": ""
                          }
                        ],
                        "src": "25814:232:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26198:438:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "26208:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "26247:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "26234:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26234:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "26212:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "26348:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26357:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26360:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "26350:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "26350:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "26350:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "26282:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "26310:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "26310:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "26326:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "26306:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "26306:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "26341:2:45",
                                                "type": "",
                                                "value": "30"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "26337:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "26337:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "26302:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "26302:43:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "26278:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26278:68:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "26271:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26271:76:45"
                              },
                              "nodeType": "YulIf",
                              "src": "26268:96:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "26373:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "26391:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "26401:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26387:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26387:33:45"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "26377:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26429:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26452:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "26439:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26439:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "26429:6:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "26502:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26511:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26514:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "26504:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "26504:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "26504:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "26474:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26482:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "26471:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26471:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "26468:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26527:25:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "26539:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26547:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "26535:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26535:17:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "26527:4:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "26614:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26623:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26626:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "26616:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "26616:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "26616:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "26568:4:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "26578:12:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "26578:14:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "26598:6:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "26606:4:45",
                                            "type": "",
                                            "value": "0xc0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "26594:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "26594:17:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "26574:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26574:38:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "26564:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26564:49:45"
                              },
                              "nodeType": "YulIf",
                              "src": "26561:69:45"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_array$_t_struct$_ConsiderationItem_$3918_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "26155:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "26165:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "26181:4:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "26187:6:45",
                            "type": ""
                          }
                        ],
                        "src": "26051:585:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26746:143:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "26793:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26802:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "26805:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "26795:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "26795:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "26795:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "26767:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "26776:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "26763:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26763:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "26788:3:45",
                                    "type": "",
                                    "value": "192"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "26759:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26759:33:45"
                              },
                              "nodeType": "YulIf",
                              "src": "26756:53:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "26818:65:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "26864:9:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "26875:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_struct_ConsiderationItem",
                                  "nodeType": "YulIdentifier",
                                  "src": "26828:35:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26828:55:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "26818:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_ConsiderationItem_$3918_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26712:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "26723:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "26735:6:45",
                            "type": ""
                          }
                        ],
                        "src": "26641:248:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "26978:123:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27024:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27033:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27036:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "27026:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27026:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27026:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "26999:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "27008:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "26995:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26995:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27020:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "26991:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "26991:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "26988:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27049:46:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "27085:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_enum_OrderType",
                                  "nodeType": "YulIdentifier",
                                  "src": "27059:25:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27059:36:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "27049:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_enum$_OrderType_$3815",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "26944:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "26955:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "26967:6:45",
                            "type": ""
                          }
                        ],
                        "src": "26894:207:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27234:83:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "27244:67:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "27289:5:45"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "27296:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27296:14:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_struct_AdvancedOrder",
                                  "nodeType": "YulIdentifier",
                                  "src": "27257:31:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27257:54:45"
                              },
                              "variableNames": [
                                {
                                  "name": "converted",
                                  "nodeType": "YulIdentifier",
                                  "src": "27244:9:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "convert_t_struct$_AdvancedOrder_$4031_calldata_ptr_to_t_struct$_AdvancedOrder_$4031_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "27210:5:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "converted",
                            "nodeType": "YulTypedName",
                            "src": "27220:9:45",
                            "type": ""
                          }
                        ],
                        "src": "27106:211:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27354:95:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27371:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27378:3:45",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "27383:10:45",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "27374:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27374:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27364:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27364:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27364:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27411:1:45",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27414:4:45",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "27404:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27404:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27404:15:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27435:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "27438:4:45",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "27428:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27428:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "27428:15:45"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "27322:127:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27554:222:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "27564:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "27603:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "27590:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27590:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "27568:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "27704:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27713:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27716:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "27706:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27706:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "27706:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "27638:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "27666:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "27666:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "27682:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "27662:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "27662:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "27697:2:45",
                                                "type": "",
                                                "value": "62"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "27693:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "27693:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "27658:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "27658:43:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "27634:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27634:68:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "27627:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27627:76:45"
                              },
                              "nodeType": "YulIf",
                              "src": "27624:96:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "27729:41:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "27741:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "27751:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "27737:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27737:33:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "27729:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_struct$_Order_$4019_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "27519:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "27529:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "27545:4:45",
                            "type": ""
                          }
                        ],
                        "src": "27454:322:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "27891:223:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "27901:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "27940:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "27927:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27927:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "27905:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28042:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28051:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28054:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "28044:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28044:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28044:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "27975:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "28003:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "28003:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "28019:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "27999:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "27999:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "28034:3:45",
                                                "type": "",
                                                "value": "350"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "28030:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "28030:8:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "27995:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "27995:44:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "27971:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "27971:69:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "27964:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27964:77:45"
                              },
                              "nodeType": "YulIf",
                              "src": "27961:97:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28067:41:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "28079:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "28089:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28075:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28075:33:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "28067:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_struct$_OrderParameters_$4013_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "27856:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "27866:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "27882:4:45",
                            "type": ""
                          }
                        ],
                        "src": "27781:333:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28251:85:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "28261:69:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "28308:5:45"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "28315:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28315:14:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_struct_OrderParameters",
                                  "nodeType": "YulIdentifier",
                                  "src": "28274:33:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28274:56:45"
                              },
                              "variableNames": [
                                {
                                  "name": "converted",
                                  "nodeType": "YulIdentifier",
                                  "src": "28261:9:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "convert_t_struct$_OrderParameters_$4013_calldata_ptr_to_t_struct$_OrderParameters_$4013_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "28227:5:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "converted",
                            "nodeType": "YulTypedName",
                            "src": "28237:9:45",
                            "type": ""
                          }
                        ],
                        "src": "28119:217:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28435:427:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "28445:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "28484:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "28471:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28471:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "28449:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28585:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28594:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28597:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "28587:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28587:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28587:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "28519:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "28547:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "28547:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "28563:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "28543:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "28543:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "28578:2:45",
                                                "type": "",
                                                "value": "30"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "28574:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "28574:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "28539:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "28539:43:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "28515:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28515:68:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "28508:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28508:76:45"
                              },
                              "nodeType": "YulIf",
                              "src": "28505:96:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "28610:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "28628:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "28638:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28624:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28624:33:45"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "28614:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28666:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "28689:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "28676:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28676:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "28666:6:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28739:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28748:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28751:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "28741:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28741:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28741:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "28711:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28719:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "28708:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28708:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "28705:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "28764:25:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "28776:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28784:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "28772:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28772:17:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "28764:4:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28840:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28849:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28852:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "28842:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28842:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28842:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "28805:4:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "28815:12:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "28815:14:45"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "28831:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "28811:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28811:27:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "28801:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28801:38:45"
                              },
                              "nodeType": "YulIf",
                              "src": "28798:58:45"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_bytes_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "28392:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "28402:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "28418:4:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "28424:6:45",
                            "type": ""
                          }
                        ],
                        "src": "28341:521:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "28944:412:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "28988:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28997:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29000:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "28990:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28990:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28990:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "28965:3:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "28970:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "28961:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28961:19:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28982:4:45",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "28957:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28957:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "28954:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29013:25:45",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29033:4:45",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "29027:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29027:11:45"
                              },
                              "variables": [
                                {
                                  "name": "memPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "29017:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29047:35:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "29069:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29077:4:45",
                                    "type": "",
                                    "value": "0x40"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29065:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29065:17:45"
                              },
                              "variables": [
                                {
                                  "name": "newFreePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "29051:10:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29157:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x41",
                                        "nodeType": "YulIdentifier",
                                        "src": "29159:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29159:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29159:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29100:10:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29112:18:45",
                                        "type": "",
                                        "value": "0xffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "29097:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29097:34:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "newFreePtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29136:10:45"
                                      },
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29148:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "29133:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29133:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "or",
                                  "nodeType": "YulIdentifier",
                                  "src": "29094:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29094:62:45"
                              },
                              "nodeType": "YulIf",
                              "src": "29091:88:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "29195:4:45",
                                    "type": "",
                                    "value": "0x40"
                                  },
                                  {
                                    "name": "newFreePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "29201:10:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29188:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29188:24:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29188:24:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29221:15:45",
                              "value": {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "29230:6:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "29221:5:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "29252:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "29273:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "29260:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29260:23:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29245:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29245:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29245:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29304:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29312:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "29300:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29300:15:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "29334:9:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "29345:2:45",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "29330:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "29330:18:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "29317:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29317:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29293:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29293:57:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29293:57:45"
                            }
                          ]
                        },
                        "name": "abi_decode_struct_FulfillmentComponent",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "28915:9:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "28926:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "28934:5:45",
                            "type": ""
                          }
                        ],
                        "src": "28867:489:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "29621:1572:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29631:88:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "29711:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "array_allocation_size_array_struct_AdvancedOrder_dyn",
                                      "nodeType": "YulIdentifier",
                                      "src": "29658:52:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29658:60:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "allocate_memory",
                                  "nodeType": "YulIdentifier",
                                  "src": "29642:15:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29642:77:45"
                              },
                              "variables": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulTypedName",
                                  "src": "29635:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29728:16:45",
                              "value": {
                                "name": "dst",
                                "nodeType": "YulIdentifier",
                                "src": "29741:3:45"
                              },
                              "variables": [
                                {
                                  "name": "dst_1",
                                  "nodeType": "YulTypedName",
                                  "src": "29732:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "29760:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "29765:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "29753:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29753:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "29753:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29781:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "29791:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "29785:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "29804:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "dst",
                                    "nodeType": "YulIdentifier",
                                    "src": "29815:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "29820:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29811:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29811:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "29804:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29832:40:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "29850:5:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "29861:1:45",
                                        "type": "",
                                        "value": "5"
                                      },
                                      {
                                        "name": "length",
                                        "nodeType": "YulIdentifier",
                                        "src": "29864:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "29857:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29857:14:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "29846:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29846:26:45"
                              },
                              "variables": [
                                {
                                  "name": "srcEnd",
                                  "nodeType": "YulTypedName",
                                  "src": "29836:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "29911:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29920:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "29923:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "29913:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29913:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "29913:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "29887:6:45"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "calldatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "29895:12:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29895:14:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "29884:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29884:26:45"
                              },
                              "nodeType": "YulIf",
                              "src": "29881:46:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "29936:16:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "29947:5:45"
                              },
                              "variables": [
                                {
                                  "name": "src",
                                  "nodeType": "YulTypedName",
                                  "src": "29940:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "30017:1143:45",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "30031:36:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "30063:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "30050:12:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30050:17:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "innerOffset",
                                        "nodeType": "YulTypedName",
                                        "src": "30035:11:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "30131:74:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "30149:11:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "30159:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_2",
                                              "nodeType": "YulTypedName",
                                              "src": "30153:2:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "30184:2:45"
                                              },
                                              {
                                                "name": "_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "30188:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "30177:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "30177:14:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "30177:14:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "30086:11:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "30099:18:45",
                                          "type": "",
                                          "value": "0xffffffffffffffff"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "30083:2:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30083:35:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "30080:125:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "30218:33:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "30232:5:45"
                                        },
                                        {
                                          "name": "innerOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "30239:11:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "30228:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30228:23:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "30222:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "30322:74:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "30340:11:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "30350:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_4",
                                              "nodeType": "YulTypedName",
                                              "src": "30344:2:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "30375:2:45"
                                              },
                                              {
                                                "name": "_4",
                                                "nodeType": "YulIdentifier",
                                                "src": "30379:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "30368:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "30368:14:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "30368:14:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "30282:2:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "30286:4:45",
                                                  "type": "",
                                                  "value": "0x1f"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "30278:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "30278:13:45"
                                            },
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "calldatasize",
                                                "nodeType": "YulIdentifier",
                                                "src": "30293:12:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "30293:14:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "slt",
                                            "nodeType": "YulIdentifier",
                                            "src": "30274:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "30274:34:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "30267:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30267:42:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "30264:132:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "30409:26:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "30432:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "30419:12:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30419:16:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulTypedName",
                                        "src": "30413:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "30448:86:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "30530:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "array_allocation_size_array_struct_AdvancedOrder_dyn",
                                            "nodeType": "YulIdentifier",
                                            "src": "30477:52:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "30477:56:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "allocate_memory",
                                        "nodeType": "YulIdentifier",
                                        "src": "30461:15:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30461:73:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "dst_2",
                                        "nodeType": "YulTypedName",
                                        "src": "30452:5:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "30547:18:45",
                                    "value": {
                                      "name": "dst_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "30560:5:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "dst_3",
                                        "nodeType": "YulTypedName",
                                        "src": "30551:5:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "30585:5:45"
                                        },
                                        {
                                          "name": "_5",
                                          "nodeType": "YulIdentifier",
                                          "src": "30592:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "30578:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30578:17:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "30578:17:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "30608:23:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "30621:5:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "30628:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "30617:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30617:14:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "30608:5:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "30644:44:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "30668:2:45"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "30676:1:45",
                                                  "type": "",
                                                  "value": "6"
                                                },
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "30679:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "shl",
                                                "nodeType": "YulIdentifier",
                                                "src": "30672:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "30672:10:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "30664:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "30664:19:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "30685:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "30660:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30660:28:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "srcEnd_1",
                                        "nodeType": "YulTypedName",
                                        "src": "30648:8:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "30745:74:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "30763:11:45",
                                          "value": {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "30773:1:45",
                                            "type": "",
                                            "value": "0"
                                          },
                                          "variables": [
                                            {
                                              "name": "_6",
                                              "nodeType": "YulTypedName",
                                              "src": "30767:2:45",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "_6",
                                                "nodeType": "YulIdentifier",
                                                "src": "30798:2:45"
                                              },
                                              {
                                                "name": "_6",
                                                "nodeType": "YulIdentifier",
                                                "src": "30802:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "30791:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "30791:14:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "30791:14:45"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "srcEnd_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "30707:8:45"
                                        },
                                        {
                                          "arguments": [],
                                          "functionName": {
                                            "name": "calldatasize",
                                            "nodeType": "YulIdentifier",
                                            "src": "30717:12:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "30717:14:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "30704:2:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30704:28:45"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "30701:118:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "30832:24:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "30849:2:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "30853:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "30845:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30845:11:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "src_1",
                                        "nodeType": "YulTypedName",
                                        "src": "30836:5:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "30939:148:45",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "dst_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "30964:5:45"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "src_1",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "31010:5:45"
                                                  },
                                                  {
                                                    "arguments": [],
                                                    "functionName": {
                                                      "name": "calldatasize",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "31017:12:45"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "31017:14:45"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "abi_decode_struct_FulfillmentComponent",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "30971:38:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "30971:61:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "30957:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "30957:76:45"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "30957:76:45"
                                        },
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "31050:23:45",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "dst_2",
                                                "nodeType": "YulIdentifier",
                                                "src": "31063:5:45"
                                              },
                                              {
                                                "name": "_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "31070:2:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "31059:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31059:14:45"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "dst_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "31050:5:45"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "src_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "30880:5:45"
                                        },
                                        {
                                          "name": "srcEnd_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "30887:8:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "30877:2:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "30877:19:45"
                                    },
                                    "nodeType": "YulForLoop",
                                    "post": {
                                      "nodeType": "YulBlock",
                                      "src": "30897:29:45",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "30899:25:45",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "src_1",
                                                "nodeType": "YulIdentifier",
                                                "src": "30912:5:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "30919:4:45",
                                                "type": "",
                                                "value": "0x40"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "30908:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "30908:16:45"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "src_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "30899:5:45"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "pre": {
                                      "nodeType": "YulBlock",
                                      "src": "30873:3:45",
                                      "statements": []
                                    },
                                    "src": "30869:218:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "31107:3:45"
                                        },
                                        {
                                          "name": "dst_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "31112:5:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "31100:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31100:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31100:18:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "31131:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "dst",
                                          "nodeType": "YulIdentifier",
                                          "src": "31142:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "31147:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "31138:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31138:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "dst",
                                        "nodeType": "YulIdentifier",
                                        "src": "31131:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "src",
                                    "nodeType": "YulIdentifier",
                                    "src": "29972:3:45"
                                  },
                                  {
                                    "name": "srcEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "29977:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "29969:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "29969:15:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "29985:23:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "29987:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "src",
                                          "nodeType": "YulIdentifier",
                                          "src": "29998:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "30003:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "29994:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "29994:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "src",
                                        "nodeType": "YulIdentifier",
                                        "src": "29987:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "29965:3:45",
                                "statements": []
                              },
                              "src": "29961:1199:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31169:18:45",
                              "value": {
                                "name": "dst_1",
                                "nodeType": "YulIdentifier",
                                "src": "31182:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "converted",
                                  "nodeType": "YulIdentifier",
                                  "src": "31169:9:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "convert_array_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "29589:5:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "29596:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "converted",
                            "nodeType": "YulTypedName",
                            "src": "29607:9:45",
                            "type": ""
                          }
                        ],
                        "src": "29361:1832:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31276:177:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31322:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31331:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31334:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31324:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31324:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31324:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "31297:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "31306:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "31293:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31293:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31318:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31289:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31289:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "31286:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31347:36:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "31373:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "31360:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31360:23:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "31351:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "31417:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "validator_revert_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "31392:24:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31392:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "31392:31:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31432:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "31442:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "31432:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_payable",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "31242:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "31253:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "31265:6:45",
                            "type": ""
                          }
                        ],
                        "src": "31198:255:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "31607:435:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31617:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "31656:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "31643:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31643:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "31621:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31757:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31766:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31769:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31759:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31759:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31759:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "31691:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "31719:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "31719:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "31735:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "31715:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31715:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "31750:2:45",
                                                "type": "",
                                                "value": "30"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "31746:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31746:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "31711:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31711:43:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "31687:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31687:68:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "31680:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31680:76:45"
                              },
                              "nodeType": "YulIf",
                              "src": "31677:96:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "31782:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "31800:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "31810:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31796:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31796:33:45"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "31786:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31838:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "31861:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "31848:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31848:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "31838:6:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "31911:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31920:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "31923:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "31913:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "31913:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "31913:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "31883:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31891:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31880:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31880:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "31877:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "31936:25:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "31948:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "31956:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "31944:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31944:17:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "31936:4:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32020:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32029:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32032:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32022:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32022:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32022:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "31977:4:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "31987:12:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31987:14:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "32007:1:45",
                                            "type": "",
                                            "value": "6"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "32010:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "32003:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32003:14:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "31983:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31983:35:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "31973:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "31973:46:45"
                              },
                              "nodeType": "YulIf",
                              "src": "31970:66:45"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "31564:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "31574:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "31590:4:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "31596:6:45",
                            "type": ""
                          }
                        ],
                        "src": "31458:584:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32157:223:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32167:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "32206:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32193:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32193:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "32171:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32308:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32317:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32320:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32310:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32310:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32310:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "32241:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "32269:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "32269:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "32285:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "32265:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "32265:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "32300:3:45",
                                                "type": "",
                                                "value": "350"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "32296:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "32296:8:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "32261:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32261:44:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "32237:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32237:69:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "32230:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32230:77:45"
                              },
                              "nodeType": "YulIf",
                              "src": "32227:97:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32333:41:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "32345:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "32355:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32341:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32341:33:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "32333:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_struct$_OrderComponents_$3892_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "32122:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "32132:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "32148:4:45",
                            "type": ""
                          }
                        ],
                        "src": "32047:333:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32491:222:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32501:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "32540:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32527:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32527:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "32505:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "32641:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32650:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "32653:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "32643:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "32643:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "32643:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "32575:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "32603:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "32603:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "32619:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "32599:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "32599:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "32634:2:45",
                                                "type": "",
                                                "value": "62"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "32630:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "32630:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "32595:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32595:43:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "32571:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32571:68:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "32564:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32564:76:45"
                              },
                              "nodeType": "YulIf",
                              "src": "32561:96:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "32666:41:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "32678:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "32688:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "32674:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32674:33:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "32666:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_struct$_Fulfillment_$4062_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "32456:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "32466:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "32482:4:45",
                            "type": ""
                          }
                        ],
                        "src": "32385:328:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "32868:435:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "32878:51:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "ptr_to_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "32917:11:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "32904:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32904:25:45"
                              },
                              "variables": [
                                {
                                  "name": "rel_offset_of_tail",
                                  "nodeType": "YulTypedName",
                                  "src": "32882:18:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33018:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33027:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33030:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "33020:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33020:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33020:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "rel_offset_of_tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "32952:18:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "calldatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "32980:12:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "32980:14:45"
                                              },
                                              {
                                                "name": "base_ref",
                                                "nodeType": "YulIdentifier",
                                                "src": "32996:8:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "32976:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "32976:29:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "33011:2:45",
                                                "type": "",
                                                "value": "30"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "33007:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "33007:7:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "32972:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "32972:43:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "32948:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32948:68:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "32941:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32941:76:45"
                              },
                              "nodeType": "YulIf",
                              "src": "32938:96:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33043:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "base_ref",
                                    "nodeType": "YulIdentifier",
                                    "src": "33061:8:45"
                                  },
                                  {
                                    "name": "rel_offset_of_tail",
                                    "nodeType": "YulIdentifier",
                                    "src": "33071:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33057:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33057:33:45"
                              },
                              "variables": [
                                {
                                  "name": "addr_1",
                                  "nodeType": "YulTypedName",
                                  "src": "33047:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33099:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33122:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "33109:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33109:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "33099:6:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33172:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33181:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33184:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "33174:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33174:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33174:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "33144:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33152:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "33141:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33141:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "33138:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33197:25:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "addr_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "33209:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33217:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33205:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33205:17:45"
                              },
                              "variableNames": [
                                {
                                  "name": "addr",
                                  "nodeType": "YulIdentifier",
                                  "src": "33197:4:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33281:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33290:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "33293:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "33283:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33283:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33283:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "addr",
                                    "nodeType": "YulIdentifier",
                                    "src": "33238:4:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [],
                                        "functionName": {
                                          "name": "calldatasize",
                                          "nodeType": "YulIdentifier",
                                          "src": "33248:12:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "33248:14:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "33268:1:45",
                                            "type": "",
                                            "value": "6"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "33271:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "33264:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "33264:14:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "33244:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33244:35:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "sgt",
                                  "nodeType": "YulIdentifier",
                                  "src": "33234:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33234:46:45"
                              },
                              "nodeType": "YulIf",
                              "src": "33231:66:45"
                            }
                          ]
                        },
                        "name": "access_calldata_tail_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "base_ref",
                            "nodeType": "YulTypedName",
                            "src": "32825:8:45",
                            "type": ""
                          },
                          {
                            "name": "ptr_to_tail",
                            "nodeType": "YulTypedName",
                            "src": "32835:11:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "addr",
                            "nodeType": "YulTypedName",
                            "src": "32851:4:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "32857:6:45",
                            "type": ""
                          }
                        ],
                        "src": "32718:585:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33340:95:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33357:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33364:3:45",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "33369:10:45",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "33360:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33360:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33350:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33350:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33350:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33397:1:45",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33400:4:45",
                                    "type": "",
                                    "value": "0x11"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33390:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33390:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33390:15:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33421:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "33424:4:45",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "33414:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33414:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33414:15:45"
                            }
                          ]
                        },
                        "name": "panic_error_0x11",
                        "nodeType": "YulFunctionDefinition",
                        "src": "33308:127:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33492:116:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33551:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "33553:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33553:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33553:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "33523:1:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "33516:6:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "33516:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "33509:6:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33509:17:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "33531:1:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "33542:1:45",
                                                "type": "",
                                                "value": "0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "not",
                                              "nodeType": "YulIdentifier",
                                              "src": "33538:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "33538:6:45"
                                          },
                                          {
                                            "name": "x",
                                            "nodeType": "YulIdentifier",
                                            "src": "33546:1:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "div",
                                          "nodeType": "YulIdentifier",
                                          "src": "33534:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "33534:14:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "gt",
                                      "nodeType": "YulIdentifier",
                                      "src": "33528:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33528:21:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "33505:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33505:45:45"
                              },
                              "nodeType": "YulIf",
                              "src": "33502:71:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33582:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "33597:1:45"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "33600:1:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "33593:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33593:9:45"
                              },
                              "variableNames": [
                                {
                                  "name": "product",
                                  "nodeType": "YulIdentifier",
                                  "src": "33582:7:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_mul_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "33471:1:45",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "33474:1:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "product",
                            "nodeType": "YulTypedName",
                            "src": "33480:7:45",
                            "type": ""
                          }
                        ],
                        "src": "33440:168:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33661:80:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33688:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "33690:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33690:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33690:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "33677:1:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "33684:1:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "33680:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33680:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "33674:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33674:13:45"
                              },
                              "nodeType": "YulIf",
                              "src": "33671:39:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33719:16:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "33730:1:45"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "33733:1:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "33726:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33726:9:45"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "33719:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "33644:1:45",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "33647:1:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "33653:3:45",
                            "type": ""
                          }
                        ],
                        "src": "33613:128:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33795:76:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "33817:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x11",
                                        "nodeType": "YulIdentifier",
                                        "src": "33819:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "33819:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "33819:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "33811:1:45"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "33814:1:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "33808:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33808:8:45"
                              },
                              "nodeType": "YulIf",
                              "src": "33805:34:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "33848:17:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "33860:1:45"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "33863:1:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "33856:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33856:9:45"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "33848:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "33777:1:45",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "33780:1:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "33786:4:45",
                            "type": ""
                          }
                        ],
                        "src": "33746:125:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "33949:400:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "33959:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "33979:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "33973:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33973:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "33963:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "34001:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "34006:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "33994:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "33994:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "33994:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34022:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "34032:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "34026:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34045:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "34056:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34061:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34052:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34052:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "34045:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34073:28:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "34091:5:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34098:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34087:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34087:14:45"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "34077:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34110:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "34119:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "34114:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "34178:146:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "34229:6:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "34223:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "34223:13:45"
                                        },
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "34238:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_struct_ReceivedItem",
                                        "nodeType": "YulIdentifier",
                                        "src": "34192:30:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34192:50:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "34192:50:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "34255:21:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "34266:3:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34271:4:45",
                                          "type": "",
                                          "value": "0xa0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "34262:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34262:14:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "34255:3:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "34289:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "34303:6:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "34311:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "34299:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34299:15:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "34289:6:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "34140:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "34143:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "34137:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34137:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "34151:18:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "34153:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "34162:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "34165:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "34158:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "34158:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "34153:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "34133:3:45",
                                "statements": []
                              },
                              "src": "34129:195:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "34333:10:45",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "34340:3:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "34333:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_struct_ReceivedItem_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "33926:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "33933:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "33941:3:45",
                            "type": ""
                          }
                        ],
                        "src": "33876:473:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "34753:1011:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34763:13:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "34773:3:45",
                                "type": "",
                                "value": "128"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "34767:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34785:32:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34803:9:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "34814:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "34799:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34799:18:45"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "34789:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "34833:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "34844:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34826:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34826:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34826:25:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34860:12:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "34870:2:45",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "34864:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34881:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34899:3:45",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "34904:1:45",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "34895:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34895:11:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "34908:1:45",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "34891:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34891:19:45"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "34885:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "34930:9:45"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "34941:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34926:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34926:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "34950:6:45"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "34958:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "34946:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34946:15:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34919:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34919:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34919:43:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "34971:12:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "34981:2:45",
                                "type": "",
                                "value": "64"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "34975:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35003:9:45"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "35014:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "34999:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34999:18:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "35019:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "34992:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "34992:30:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "34992:30:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "35031:17:45",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "35042:6:45"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "35035:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "35057:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "35077:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "35071:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35071:13:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "35061:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "35100:6:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "35108:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35093:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35093:22:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35093:22:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35124:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35135:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35146:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35131:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35131:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "35124:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "35159:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "35177:6:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "35185:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35173:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35173:15:45"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "35163:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "35197:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "35206:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "35201:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "35265:365:45",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "35279:23:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "35295:6:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "35289:5:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35289:13:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulTypedName",
                                        "src": "35283:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "35346:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "35340:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "35340:9:45"
                                        },
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "35351:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_enum_ItemType",
                                        "nodeType": "YulIdentifier",
                                        "src": "35315:24:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35315:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "35315:40:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "35379:3:45"
                                            },
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "35384:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "35375:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "35375:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_5",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "35403:2:45"
                                                    },
                                                    {
                                                      "name": "_2",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "35407:2:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "35399:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "35399:11:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "35393:5:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "35393:18:45"
                                            },
                                            {
                                              "name": "_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "35413:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "35389:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "35389:27:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "35368:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35368:49:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "35368:49:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "35441:3:45"
                                            },
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "35446:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "35437:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "35437:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "35461:2:45"
                                                },
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "35465:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "35457:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "35457:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "35451:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "35451:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "35430:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35430:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "35430:40:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "35483:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "35493:4:45",
                                      "type": "",
                                      "value": "0x60"
                                    },
                                    "variables": [
                                      {
                                        "name": "_6",
                                        "nodeType": "YulTypedName",
                                        "src": "35487:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "35521:3:45"
                                            },
                                            {
                                              "name": "_6",
                                              "nodeType": "YulIdentifier",
                                              "src": "35526:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "35517:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "35517:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "35541:2:45"
                                                },
                                                {
                                                  "name": "_6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "35545:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "35537:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "35537:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "35531:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "35531:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "35510:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35510:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "35510:40:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "35563:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "35574:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "35579:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "35570:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35570:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "35563:3:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "35595:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "35609:6:45"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "35617:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "35605:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35605:15:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "35595:6:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "35227:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "35230:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "35224:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35224:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "35238:18:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "35240:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "35249:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "35252:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "35245:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35245:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "35240:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "35220:3:45",
                                "statements": []
                              },
                              "src": "35216:414:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35650:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "35661:4:45",
                                        "type": "",
                                        "value": "0x60"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "35646:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35646:20:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "35672:3:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35677:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "35668:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35668:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "35639:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35639:49:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "35639:49:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35697:61:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "35746:6:45"
                                  },
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "35754:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_struct_ReceivedItem_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "35705:40:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35705:53:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "35697:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_array$_t_struct$_SpentItem_$3928_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_ReceivedItem_$3940_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_address_t_array$_t_struct$_SpentItem_$3928_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_ReceivedItem_$3940_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "34698:9:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "34709:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "34717:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "34725:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "34733:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "34744:4:45",
                            "type": ""
                          }
                        ],
                        "src": "34354:1410:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "35877:145:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "35923:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "35932:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "35935:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "35925:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "35925:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "35925:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "35898:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "35907:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "35894:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "35894:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "35919:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "35890:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35890:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "35887:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "35948:68:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "35997:9:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "36008:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_struct_FulfillmentComponent",
                                  "nodeType": "YulIdentifier",
                                  "src": "35958:38:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35958:58:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "35948:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_struct$_FulfillmentComponent_$4067_memory_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "35843:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "35854:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "35866:6:45",
                            "type": ""
                          }
                        ],
                        "src": "35769:253:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36184:162:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "36194:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36206:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36217:2:45",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36202:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36202:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "36194:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36236:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "36247:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36229:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36229:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36229:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36274:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36285:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36270:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36270:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "36290:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36263:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36263:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36263:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36317:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36328:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36313:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36313:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "36333:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36306:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36306:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36306:34:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "36137:9:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "36148:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "36156:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "36164:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "36175:4:45",
                            "type": ""
                          }
                        ],
                        "src": "36027:319:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36448:87:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "36458:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36470:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36481:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36466:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36466:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "36458:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36500:9:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "36515:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36523:4:45",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "36511:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36511:17:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36493:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36493:36:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36493:36:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "36417:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "36428:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "36439:4:45",
                            "type": ""
                          }
                        ],
                        "src": "36351:184:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "36721:217:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "36731:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36743:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "36754:3:45",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "36739:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36739:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "36731:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "36774:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "36785:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36767:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36767:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36767:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36812:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36823:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36808:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36808:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "36832:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36840:4:45",
                                        "type": "",
                                        "value": "0xff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "36828:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36828:17:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36801:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36801:45:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36801:45:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36866:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36877:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36862:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36862:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "36882:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36855:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36855:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36855:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "36909:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "36920:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36905:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36905:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "36925:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36898:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36898:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36898:34:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "36666:9:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "36677:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "36685:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "36693:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "36701:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "36712:4:45",
                            "type": ""
                          }
                        ],
                        "src": "36540:398:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37013:745:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37023:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "37043:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "37037:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37037:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "37027:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "37065:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "37070:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37058:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37058:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37058:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37086:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "37096:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "37090:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37109:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "37120:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "37125:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37116:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37116:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "37109:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37137:28:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "37155:5:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "37162:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37151:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37151:14:45"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "37141:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37174:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "37183:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "37178:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "37242:491:45",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "37256:23:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "37272:6:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "37266:5:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37266:13:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "37260:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "37323:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "37317:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37317:9:45"
                                        },
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "37328:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_enum_ItemType",
                                        "nodeType": "YulIdentifier",
                                        "src": "37292:24:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37292:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "37292:40:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "37356:3:45"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "37361:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "37352:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37352:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_2",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "37380:2:45"
                                                    },
                                                    {
                                                      "name": "_1",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "37384:2:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "37376:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "37376:11:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "37370:5:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "37370:18:45"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "37398:3:45",
                                                      "type": "",
                                                      "value": "160"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "37403:1:45",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "37394:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "37394:11:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "37407:1:45",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "37390:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "37390:19:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "37366:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37366:44:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "37345:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37345:66:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "37345:66:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "37424:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "37434:4:45",
                                      "type": "",
                                      "value": "0x40"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "37428:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "37462:3:45"
                                            },
                                            {
                                              "name": "_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "37467:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "37458:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37458:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "37482:2:45"
                                                },
                                                {
                                                  "name": "_3",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "37486:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "37478:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "37478:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "37472:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37472:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "37451:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37451:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "37451:40:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "37504:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "37514:4:45",
                                      "type": "",
                                      "value": "0x60"
                                    },
                                    "variables": [
                                      {
                                        "name": "_4",
                                        "nodeType": "YulTypedName",
                                        "src": "37508:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "37542:3:45"
                                            },
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "37547:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "37538:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37538:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "37562:2:45"
                                                },
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "37566:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "37558:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "37558:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "37552:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37552:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "37531:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37531:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "37531:40:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "37584:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "37594:4:45",
                                      "type": "",
                                      "value": "0x80"
                                    },
                                    "variables": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulTypedName",
                                        "src": "37588:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "37622:3:45"
                                            },
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "37627:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "37618:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37618:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "37642:2:45"
                                                },
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "37646:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "37638:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "37638:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "37632:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "37632:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "37611:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37611:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "37611:40:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "37664:21:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "37675:3:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "37680:4:45",
                                          "type": "",
                                          "value": "0xa0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "37671:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37671:14:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "37664:3:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "37698:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "37712:6:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "37720:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "37708:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37708:15:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "37698:6:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "37204:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "37207:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "37201:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37201:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "37215:18:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "37217:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "37226:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "37229:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "37222:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "37222:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "37217:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "37197:3:45",
                                "statements": []
                              },
                              "src": "37193:540:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37742:10:45",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "37749:3:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "37742:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_struct_OfferItem_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "36990:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "36997:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "37005:3:45",
                            "type": ""
                          }
                        ],
                        "src": "36943:815:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "37841:904:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37851:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "37871:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "37865:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37865:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "37855:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "37893:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "37898:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "37886:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37886:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37886:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37914:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "37924:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "37918:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "37937:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "37948:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "37953:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37944:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37944:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "37937:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37965:28:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "37983:5:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "37990:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37979:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37979:14:45"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "37969:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "38002:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "38011:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "38006:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "38070:650:45",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38084:23:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "38100:6:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "38094:5:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38094:13:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "38088:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "38151:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "38145:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38145:9:45"
                                        },
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "38156:3:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_enum_ItemType",
                                        "nodeType": "YulIdentifier",
                                        "src": "38120:24:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38120:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38120:40:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38173:38:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "38203:2:45"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "38207:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38199:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38199:11:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "38193:5:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38193:18:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulTypedName",
                                        "src": "38177:12:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38224:29:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "38242:3:45",
                                              "type": "",
                                              "value": "160"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "38247:1:45",
                                              "type": "",
                                              "value": "1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "38238:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38238:11:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "38251:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "sub",
                                        "nodeType": "YulIdentifier",
                                        "src": "38234:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38234:19:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "38228:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "38277:3:45"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "38282:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38273:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38273:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "memberValue0",
                                              "nodeType": "YulIdentifier",
                                              "src": "38291:12:45"
                                            },
                                            {
                                              "name": "_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "38305:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "38287:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38287:21:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38266:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38266:43:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38266:43:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38322:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "38332:4:45",
                                      "type": "",
                                      "value": "0x40"
                                    },
                                    "variables": [
                                      {
                                        "name": "_4",
                                        "nodeType": "YulTypedName",
                                        "src": "38326:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "38360:3:45"
                                            },
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "38365:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38356:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38356:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38380:2:45"
                                                },
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38384:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "38376:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38376:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "38370:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38370:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38349:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38349:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38349:40:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38402:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "38412:4:45",
                                      "type": "",
                                      "value": "0x60"
                                    },
                                    "variables": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulTypedName",
                                        "src": "38406:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "38440:3:45"
                                            },
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "38445:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38436:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38436:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38460:2:45"
                                                },
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38464:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "38456:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38456:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "38450:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38450:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38429:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38429:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38429:40:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38482:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "38492:4:45",
                                      "type": "",
                                      "value": "0x80"
                                    },
                                    "variables": [
                                      {
                                        "name": "_6",
                                        "nodeType": "YulTypedName",
                                        "src": "38486:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "38520:3:45"
                                            },
                                            {
                                              "name": "_6",
                                              "nodeType": "YulIdentifier",
                                              "src": "38525:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38516:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38516:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38540:2:45"
                                                },
                                                {
                                                  "name": "_6",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "38544:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "38536:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38536:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "38530:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38530:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38509:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38509:40:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38509:40:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "38562:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "38572:4:45",
                                      "type": "",
                                      "value": "0xa0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_7",
                                        "nodeType": "YulTypedName",
                                        "src": "38566:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "38600:3:45"
                                            },
                                            {
                                              "name": "_7",
                                              "nodeType": "YulIdentifier",
                                              "src": "38605:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "38596:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38596:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "_2",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "38624:2:45"
                                                    },
                                                    {
                                                      "name": "_7",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "38628:2:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "38620:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "38620:11:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "38614:5:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "38614:18:45"
                                            },
                                            {
                                              "name": "_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "38634:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "38610:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "38610:27:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "38589:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38589:49:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38589:49:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "38651:21:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "38662:3:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "38667:4:45",
                                          "type": "",
                                          "value": "0xc0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "38658:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38658:14:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "38651:3:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "38685:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "38699:6:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "38707:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "38695:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38695:15:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "38685:6:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "38032:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "38035:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "38029:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38029:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "38043:18:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "38045:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "38054:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "38057:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "38050:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38050:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "38045:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "38025:3:45",
                                "statements": []
                              },
                              "src": "38021:699:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "38729:10:45",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "38736:3:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "38729:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_struct_ConsiderationItem_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "37818:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "37825:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "37833:3:45",
                            "type": ""
                          }
                        ],
                        "src": "37763:982:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "38801:89:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "38835:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x21",
                                        "nodeType": "YulIdentifier",
                                        "src": "38837:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "38837:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "38837:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "38824:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38831:1:45",
                                        "type": "",
                                        "value": "4"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "38821:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38821:12:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "38814:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38814:20:45"
                              },
                              "nodeType": "YulIf",
                              "src": "38811:46:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "38873:3:45"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "38878:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38866:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38866:18:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38866:18:45"
                            }
                          ]
                        },
                        "name": "abi_encode_enum_OrderType",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "38785:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "38792:3:45",
                            "type": ""
                          }
                        ],
                        "src": "38750:140:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "38939:73:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "38956:3:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "38965:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "38972:32:45",
                                        "type": "",
                                        "value": "0xffffffffffffffffffffffffffffff"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "38961:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38961:44:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38949:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38949:57:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38949:57:45"
                            }
                          ]
                        },
                        "name": "abi_encode_uint120",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "38923:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "38930:3:45",
                            "type": ""
                          }
                        ],
                        "src": "38895:117:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39078:374:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39088:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "39108:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "39102:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39102:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "39092:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "39130:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "39135:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39123:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39123:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39123:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39151:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "39161:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "39155:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "39174:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "39185:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39190:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39181:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39181:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "39174:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39202:28:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "39220:5:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39227:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39216:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39216:14:45"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "39206:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39239:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "39248:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "39243:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "39307:120:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "39328:3:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "srcPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "39339:6:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "39333:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "39333:13:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "39321:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39321:26:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "39321:26:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "39360:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "39371:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "39376:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "39367:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39367:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "39360:3:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "39392:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "39406:6:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "39414:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "39402:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39402:15:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "39392:6:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "39269:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "39272:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "39266:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39266:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "39280:18:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "39282:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "39291:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "39294:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "39287:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39287:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "39282:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "39262:3:45",
                                "statements": []
                              },
                              "src": "39258:169:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "39436:10:45",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "39443:3:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "39436:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_bytes32_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "39055:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "39062:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "39070:3:45",
                            "type": ""
                          }
                        ],
                        "src": "39017:435:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39503:89:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "39537:22:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "panic_error_0x21",
                                        "nodeType": "YulIdentifier",
                                        "src": "39539:16:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39539:18:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "39539:18:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "39526:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "39533:1:45",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "39523:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39523:12:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "39516:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39516:20:45"
                              },
                              "nodeType": "YulIf",
                              "src": "39513:46:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "39575:3:45"
                                  },
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "39580:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39568:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39568:18:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39568:18:45"
                            }
                          ]
                        },
                        "name": "abi_encode_enum_Side",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "39487:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "39494:3:45",
                            "type": ""
                          }
                        ],
                        "src": "39457:135:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "39674:1045:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39684:16:45",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "39697:3:45"
                              },
                              "variables": [
                                {
                                  "name": "pos_1",
                                  "nodeType": "YulTypedName",
                                  "src": "39688:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39709:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "39729:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "39723:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39723:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "39713:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "39751:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "39756:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "39744:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39744:19:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "39744:19:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39772:14:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "39782:4:45",
                                "type": "",
                                "value": "0x20"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "39776:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "39795:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "39806:3:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39811:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39802:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39802:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "39795:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39823:47:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "39843:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "39854:1:45",
                                            "type": "",
                                            "value": "5"
                                          },
                                          {
                                            "name": "length",
                                            "nodeType": "YulIdentifier",
                                            "src": "39857:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "39850:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "39850:14:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "39839:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "39839:26:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39867:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39835:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39835:35:45"
                              },
                              "variables": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulTypedName",
                                  "src": "39827:4:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39879:28:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "39897:5:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "39904:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "39893:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39893:14:45"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "39883:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "39916:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "39925:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "39920:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "39984:709:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "40005:3:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "tail",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40018:4:45"
                                                },
                                                {
                                                  "name": "pos_1",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40024:5:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "40014:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40014:16:45"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "40036:2:45",
                                                  "type": "",
                                                  "value": "31"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "not",
                                                "nodeType": "YulIdentifier",
                                                "src": "40032:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40032:7:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40010:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40010:30:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "39998:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39998:43:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "39998:43:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40054:23:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "40070:6:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "40064:5:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40064:13:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "_2",
                                        "nodeType": "YulTypedName",
                                        "src": "40058:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40090:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "40100:4:45",
                                      "type": "",
                                      "value": "0xa0"
                                    },
                                    "variables": [
                                      {
                                        "name": "_3",
                                        "nodeType": "YulTypedName",
                                        "src": "40094:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "tail",
                                          "nodeType": "YulIdentifier",
                                          "src": "40124:4:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "40136:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "40130:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40130:9:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "40117:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40117:23:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40117:23:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40153:38:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "40183:2:45"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "40187:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40179:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40179:11:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "40173:5:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40173:18:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulTypedName",
                                        "src": "40157:12:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "memberValue0",
                                          "nodeType": "YulIdentifier",
                                          "src": "40225:12:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail",
                                              "nodeType": "YulIdentifier",
                                              "src": "40243:4:45"
                                            },
                                            {
                                              "name": "_1",
                                              "nodeType": "YulIdentifier",
                                              "src": "40249:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40239:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40239:13:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_enum_Side",
                                        "nodeType": "YulIdentifier",
                                        "src": "40204:20:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40204:49:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40204:49:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40266:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "40276:4:45",
                                      "type": "",
                                      "value": "0x40"
                                    },
                                    "variables": [
                                      {
                                        "name": "_4",
                                        "nodeType": "YulTypedName",
                                        "src": "40270:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail",
                                              "nodeType": "YulIdentifier",
                                              "src": "40304:4:45"
                                            },
                                            {
                                              "name": "_4",
                                              "nodeType": "YulIdentifier",
                                              "src": "40310:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40300:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40300:13:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40325:2:45"
                                                },
                                                {
                                                  "name": "_4",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40329:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "40321:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40321:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "40315:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40315:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "40293:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40293:41:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40293:41:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40347:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "40357:4:45",
                                      "type": "",
                                      "value": "0x60"
                                    },
                                    "variables": [
                                      {
                                        "name": "_5",
                                        "nodeType": "YulTypedName",
                                        "src": "40351:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail",
                                              "nodeType": "YulIdentifier",
                                              "src": "40385:4:45"
                                            },
                                            {
                                              "name": "_5",
                                              "nodeType": "YulIdentifier",
                                              "src": "40391:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40381:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40381:13:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "_2",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40406:2:45"
                                                },
                                                {
                                                  "name": "_5",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "40410:2:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "40402:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "40402:11:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "40396:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40396:18:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "40374:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40374:41:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40374:41:45"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40428:14:45",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "40438:4:45",
                                      "type": "",
                                      "value": "0x80"
                                    },
                                    "variables": [
                                      {
                                        "name": "_6",
                                        "nodeType": "YulTypedName",
                                        "src": "40432:2:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "40455:40:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "_2",
                                              "nodeType": "YulIdentifier",
                                              "src": "40487:2:45"
                                            },
                                            {
                                              "name": "_6",
                                              "nodeType": "YulIdentifier",
                                              "src": "40491:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40483:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40483:11:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "40477:5:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40477:18:45"
                                    },
                                    "variables": [
                                      {
                                        "name": "memberValue0_1",
                                        "nodeType": "YulTypedName",
                                        "src": "40459:14:45",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail",
                                              "nodeType": "YulIdentifier",
                                              "src": "40519:4:45"
                                            },
                                            {
                                              "name": "_6",
                                              "nodeType": "YulIdentifier",
                                              "src": "40525:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40515:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40515:13:45"
                                        },
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "40530:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "40508:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40508:25:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "40508:25:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "40546:67:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "memberValue0_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "40583:14:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "tail",
                                              "nodeType": "YulIdentifier",
                                              "src": "40603:4:45"
                                            },
                                            {
                                              "name": "_3",
                                              "nodeType": "YulIdentifier",
                                              "src": "40609:2:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "40599:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "40599:13:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "abi_encode_array_bytes32_dyn",
                                        "nodeType": "YulIdentifier",
                                        "src": "40554:28:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40554:59:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "tail",
                                        "nodeType": "YulIdentifier",
                                        "src": "40546:4:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "40626:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "40640:6:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "40648:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "40636:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40636:15:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "40626:6:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "40664:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "40675:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "40680:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "40671:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "40671:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "40664:3:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "39946:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "39949:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "39943:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "39943:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "39957:18:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "39959:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "39968:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "39971:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "39964:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "39964:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "39959:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "39939:3:45",
                                "statements": []
                              },
                              "src": "39935:758:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "40702:11:45",
                              "value": {
                                "name": "tail",
                                "nodeType": "YulIdentifier",
                                "src": "40709:4:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "40702:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_array_struct_CriteriaResolver_dyn",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "39651:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "39658:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "39666:3:45",
                            "type": ""
                          }
                        ],
                        "src": "39597:1122:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "41167:2371:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "41184:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "41195:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41177:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41177:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41177:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41222:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41233:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41218:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41218:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "41242:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "41258:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "41263:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "41254:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "41254:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "41267:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "41250:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "41250:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "41238:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41238:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41211:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41211:60:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41211:60:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41291:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41302:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41287:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41287:18:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41307:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41280:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41280:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41280:31:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41320:13:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "41330:3:45",
                                "type": "",
                                "value": "320"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "41324:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41342:33:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "41368:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "41362:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41362:13:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0",
                                  "nodeType": "YulTypedName",
                                  "src": "41346:12:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41395:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41406:3:45",
                                        "type": "",
                                        "value": "160"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41391:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41391:19:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "41412:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41384:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41384:32:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41384:32:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulIdentifier",
                                        "src": "41450:12:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "41444:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41444:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41469:9:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "41480:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41465:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41465:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "41425:18:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41425:59:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41425:59:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41493:50:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulIdentifier",
                                        "src": "41525:12:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41539:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41521:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41521:21:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "41515:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41515:28:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "41497:14:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41552:16:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "41562:6:45",
                                "type": "",
                                "value": "0x0160"
                              },
                              "variables": [
                                {
                                  "name": "_2",
                                  "nodeType": "YulTypedName",
                                  "src": "41556:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memberValue0_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "41596:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41616:9:45"
                                      },
                                      {
                                        "name": "_2",
                                        "nodeType": "YulIdentifier",
                                        "src": "41627:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41612:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41612:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "41577:18:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41577:54:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41577:54:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41640:50:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulIdentifier",
                                        "src": "41672:12:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41686:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41668:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41668:21:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "41662:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41662:28:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0_2",
                                  "nodeType": "YulTypedName",
                                  "src": "41644:14:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41710:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41721:3:45",
                                        "type": "",
                                        "value": "384"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41706:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41706:19:45"
                                  },
                                  {
                                    "name": "_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "41727:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41699:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41699:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41699:31:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41739:88:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memberValue0_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "41791:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41811:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41822:3:45",
                                        "type": "",
                                        "value": "672"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41807:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41807:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_struct_OfferItem_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "41753:37:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41753:74:45"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "41743:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41836:52:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulIdentifier",
                                        "src": "41868:12:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41882:4:45",
                                        "type": "",
                                        "value": "0x60"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41864:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41864:23:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "41858:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41858:30:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0_3",
                                  "nodeType": "YulTypedName",
                                  "src": "41840:14:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "41908:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "41919:3:45",
                                        "type": "",
                                        "value": "416"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41904:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41904:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "tail_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "41933:6:45"
                                          },
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "41941:9:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "41929:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "41929:22:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "41957:3:45",
                                            "type": "",
                                            "value": "319"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "41953:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "41953:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "41925:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "41925:37:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "41897:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41897:66:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "41897:66:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "41972:83:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memberValue0_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "42032:14:45"
                                  },
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "42048:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_struct_ConsiderationItem_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "41986:45:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "41986:69:45"
                              },
                              "variables": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulTypedName",
                                  "src": "41976:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42064:52:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "memberValue0",
                                        "nodeType": "YulIdentifier",
                                        "src": "42096:12:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42110:4:45",
                                        "type": "",
                                        "value": "0x80"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42092:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42092:23:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "42086:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42086:30:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0_4",
                                  "nodeType": "YulTypedName",
                                  "src": "42068:14:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memberValue0_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "42151:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42171:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42182:3:45",
                                        "type": "",
                                        "value": "448"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42167:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42167:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_enum_OrderType",
                                  "nodeType": "YulIdentifier",
                                  "src": "42125:25:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42125:62:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42125:62:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42207:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42218:3:45",
                                        "type": "",
                                        "value": "480"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42203:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42203:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memberValue0",
                                            "nodeType": "YulIdentifier",
                                            "src": "42234:12:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "42248:3:45",
                                            "type": "",
                                            "value": "160"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "42230:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42230:22:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "42224:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42224:29:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42196:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42196:58:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42196:58:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42274:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42285:3:45",
                                        "type": "",
                                        "value": "512"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42270:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42270:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memberValue0",
                                            "nodeType": "YulIdentifier",
                                            "src": "42301:12:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "42315:4:45",
                                            "type": "",
                                            "value": "0xc0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "42297:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42297:23:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "42291:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42291:30:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42263:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42263:59:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42263:59:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42342:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42353:3:45",
                                        "type": "",
                                        "value": "544"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42338:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42338:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memberValue0",
                                            "nodeType": "YulIdentifier",
                                            "src": "42369:12:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "42383:4:45",
                                            "type": "",
                                            "value": "0xe0"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "42365:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42365:23:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "42359:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42359:30:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42331:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42331:59:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42331:59:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42399:16:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "42409:6:45",
                                "type": "",
                                "value": "0x0100"
                              },
                              "variables": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulTypedName",
                                  "src": "42403:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42435:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42446:3:45",
                                        "type": "",
                                        "value": "576"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42431:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42431:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memberValue0",
                                            "nodeType": "YulIdentifier",
                                            "src": "42462:12:45"
                                          },
                                          {
                                            "name": "_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "42476:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "42458:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42458:21:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "42452:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42452:28:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42424:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42424:57:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42424:57:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42490:16:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "42500:6:45",
                                "type": "",
                                "value": "0x0120"
                              },
                              "variables": [
                                {
                                  "name": "_4",
                                  "nodeType": "YulTypedName",
                                  "src": "42494:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42526:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42537:3:45",
                                        "type": "",
                                        "value": "608"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42522:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42522:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memberValue0",
                                            "nodeType": "YulIdentifier",
                                            "src": "42553:12:45"
                                          },
                                          {
                                            "name": "_4",
                                            "nodeType": "YulIdentifier",
                                            "src": "42567:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "42549:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42549:21:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "42543:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42543:28:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42515:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42515:57:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42515:57:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42592:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42603:3:45",
                                        "type": "",
                                        "value": "640"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42588:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42588:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "memberValue0",
                                            "nodeType": "YulIdentifier",
                                            "src": "42619:12:45"
                                          },
                                          {
                                            "name": "_1",
                                            "nodeType": "YulIdentifier",
                                            "src": "42633:2:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "42615:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42615:21:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "42609:5:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42609:28:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42581:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42581:57:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42581:57:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42647:44:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "42679:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42687:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42675:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42675:15:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "42669:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42669:22:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0_5",
                                  "nodeType": "YulTypedName",
                                  "src": "42651:14:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memberValue0_5",
                                    "nodeType": "YulIdentifier",
                                    "src": "42719:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42739:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42750:4:45",
                                        "type": "",
                                        "value": "0xc0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42735:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42735:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_uint120",
                                  "nodeType": "YulIdentifier",
                                  "src": "42700:18:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42700:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42700:56:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42765:44:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "42797:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42805:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42793:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42793:15:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "42787:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42787:22:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0_6",
                                  "nodeType": "YulTypedName",
                                  "src": "42769:14:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "memberValue0_6",
                                    "nodeType": "YulIdentifier",
                                    "src": "42837:14:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42857:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42868:4:45",
                                        "type": "",
                                        "value": "0xe0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42853:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42853:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_uint120",
                                  "nodeType": "YulIdentifier",
                                  "src": "42818:18:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42818:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42818:56:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42883:46:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "42915:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "42923:4:45",
                                        "type": "",
                                        "value": "0x60"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42911:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42911:17:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "42905:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42905:24:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0_7",
                                  "nodeType": "YulTypedName",
                                  "src": "42887:14:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "42938:18:45",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "42952:3:45",
                                    "type": "",
                                    "value": "159"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "42948:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42948:8:45"
                              },
                              "variables": [
                                {
                                  "name": "_5",
                                  "nodeType": "YulTypedName",
                                  "src": "42942:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "42976:9:45"
                                      },
                                      {
                                        "name": "_3",
                                        "nodeType": "YulIdentifier",
                                        "src": "42987:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42972:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42972:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "tail_2",
                                            "nodeType": "YulIdentifier",
                                            "src": "43000:6:45"
                                          },
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "43008:9:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "42996:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42996:22:45"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "43020:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "42992:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42992:31:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "42965:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42965:59:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "42965:59:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "43033:55:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memberValue0_7",
                                    "nodeType": "YulIdentifier",
                                    "src": "43065:14:45"
                                  },
                                  {
                                    "name": "tail_2",
                                    "nodeType": "YulIdentifier",
                                    "src": "43081:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "43047:17:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43047:41:45"
                              },
                              "variables": [
                                {
                                  "name": "tail_3",
                                  "nodeType": "YulTypedName",
                                  "src": "43037:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "43097:46:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "43129:6:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43137:4:45",
                                        "type": "",
                                        "value": "0x80"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43125:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43125:17:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "43119:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43119:24:45"
                              },
                              "variables": [
                                {
                                  "name": "memberValue0_8",
                                  "nodeType": "YulTypedName",
                                  "src": "43101:14:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43163:9:45"
                                      },
                                      {
                                        "name": "_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "43174:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43159:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43159:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "tail_3",
                                            "nodeType": "YulIdentifier",
                                            "src": "43187:6:45"
                                          },
                                          {
                                            "name": "headStart",
                                            "nodeType": "YulIdentifier",
                                            "src": "43195:9:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "43183:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "43183:22:45"
                                      },
                                      {
                                        "name": "_5",
                                        "nodeType": "YulIdentifier",
                                        "src": "43207:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43179:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43179:31:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43152:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43152:59:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43152:59:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "43220:52:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "memberValue0_8",
                                    "nodeType": "YulIdentifier",
                                    "src": "43249:14:45"
                                  },
                                  {
                                    "name": "tail_3",
                                    "nodeType": "YulIdentifier",
                                    "src": "43265:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "43231:17:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43231:41:45"
                              },
                              "variables": [
                                {
                                  "name": "end",
                                  "nodeType": "YulTypedName",
                                  "src": "43224:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43292:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43303:4:45",
                                        "type": "",
                                        "value": "0x60"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43288:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43288:20:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "43314:3:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43319:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "43310:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43310:19:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43281:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43281:49:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43281:49:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "43339:55:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "43382:6:45"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "43390:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_bytes32_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "43353:28:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43353:41:45"
                              },
                              "variables": [
                                {
                                  "name": "tail_4",
                                  "nodeType": "YulTypedName",
                                  "src": "43343:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43414:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43425:4:45",
                                        "type": "",
                                        "value": "0x80"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43410:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43410:20:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "tail_4",
                                        "nodeType": "YulIdentifier",
                                        "src": "43436:6:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43444:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "43432:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43432:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43403:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43403:52:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43403:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "43464:68:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value4",
                                    "nodeType": "YulIdentifier",
                                    "src": "43517:6:45"
                                  },
                                  {
                                    "name": "tail_4",
                                    "nodeType": "YulIdentifier",
                                    "src": "43525:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_array_struct_CriteriaResolver_dyn",
                                  "nodeType": "YulIdentifier",
                                  "src": "43472:44:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43472:60:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "43464:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_struct$_AdvancedOrder_$4031_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_address_t_struct$_AdvancedOrder_$4031_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "41104:9:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "41115:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "41123:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "41131:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "41139:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "41147:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "41158:4:45",
                            "type": ""
                          }
                        ],
                        "src": "40724:2814:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "43680:145:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "43690:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "43702:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43713:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "43698:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43698:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "43690:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "43732:9:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "43747:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "43763:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "43768:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "43759:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "43759:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "43772:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "43755:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "43755:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "43743:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43743:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43725:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43725:51:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43725:51:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "43796:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "43807:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "43792:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "43792:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "43812:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "43785:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43785:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43785:34:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_payable_t_uint256__to_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "43641:9:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "43652:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "43660:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "43671:4:45",
                            "type": ""
                          }
                        ],
                        "src": "43543:282:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "43938:90:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "43948:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "43960:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "43971:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "43956:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43956:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "43948:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "44004:6:45"
                                  },
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44012:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_enum_Side",
                                  "nodeType": "YulIdentifier",
                                  "src": "43983:20:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "43983:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "43983:39:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_enum$_Side_$3857__to_t_uint8__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "43907:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "43918:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "43929:4:45",
                            "type": ""
                          }
                        ],
                        "src": "43830:198:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "44246:276:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "44256:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44268:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44279:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "44264:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44264:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "44256:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44299:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "44310:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44292:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44292:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44292:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44337:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44348:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44333:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44333:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "44353:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44326:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44326:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44326:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44380:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44391:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44376:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44376:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "44396:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44369:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44369:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44369:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44423:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44434:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44419:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44419:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "44439:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44412:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44412:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44412:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44466:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44477:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44462:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44462:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "44487:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "44503:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "44508:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "44499:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "44499:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "44512:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "44495:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "44495:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "44483:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44483:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44455:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44455:61:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44455:61:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "44183:9:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "44194:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "44202:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "44210:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "44218:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "44226:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "44237:4:45",
                            "type": ""
                          }
                        ],
                        "src": "44033:489:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "44628:102:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "44638:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44650:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44661:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "44646:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44646:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "44638:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44680:9:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "44695:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "44711:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "44716:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "44707:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "44707:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "44720:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "44703:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "44703:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "44691:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44691:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44673:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44673:51:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44673:51:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "44597:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "44608:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "44619:4:45",
                            "type": ""
                          }
                        ],
                        "src": "44527:203:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "44864:145:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "44874:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44886:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "44897:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "44882:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44882:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "44874:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "44916:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "44927:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44909:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44909:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44909:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "44954:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "44965:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "44950:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44950:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "44974:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "44990:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "44995:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "44986:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "44986:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "44999:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "44982:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "44982:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "44970:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "44970:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "44943:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "44943:60:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "44943:60:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "44825:9:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "44836:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "44844:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "44855:4:45",
                            "type": ""
                          }
                        ],
                        "src": "44735:274:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "45161:142:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45178:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "45189:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45171:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45171:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45171:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45216:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45227:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45212:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45212:18:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45232:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45205:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45205:30:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45205:30:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "45244:53:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "45270:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45282:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45293:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45278:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45278:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_string",
                                  "nodeType": "YulIdentifier",
                                  "src": "45252:17:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45252:45:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "45244:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes_memory_ptr__to_t_bytes32_t_bytes_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "45122:9:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "45133:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "45141:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "45152:4:45",
                            "type": ""
                          }
                        ],
                        "src": "45014:289:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "45493:262:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "45503:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45515:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45526:3:45",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "45511:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45511:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "45503:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "45546:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "45557:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45539:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45539:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45539:25:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "45573:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45591:3:45",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45596:1:45",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "45587:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45587:11:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45600:1:45",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "45583:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45583:19:45"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "45577:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45622:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45633:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45618:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45618:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "45642:6:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "45650:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "45638:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45638:15:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45611:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45611:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45611:43:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45674:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45685:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45670:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45670:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "45694:6:45"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "45702:2:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "45690:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45690:15:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45663:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45663:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45663:43:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "45726:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45737:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "45722:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45722:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "45742:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45715:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45715:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45715:34:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_bytes32__to_t_bytes32_t_address_t_address_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "45438:9:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "45449:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "45457:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "45465:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "45473:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "45484:4:45",
                            "type": ""
                          }
                        ],
                        "src": "45308:447:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "45792:95:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45809:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45816:3:45",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "45821:10:45",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "45812:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "45812:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45802:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45802:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45802:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45849:1:45",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45852:4:45",
                                    "type": "",
                                    "value": "0x51"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "45842:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45842:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45842:15:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45873:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "45876:4:45",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "45866:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "45866:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "45866:15:45"
                            }
                          ]
                        },
                        "name": "panic_error_0x51",
                        "nodeType": "YulFunctionDefinition",
                        "src": "45760:127:45"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_encode_string(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            let _1 := 0x20\n            mstore(add(add(pos, i), _1), mload(add(add(value, i), _1)))\n        }\n        if gt(i, length)\n        {\n            mstore(add(add(pos, length), 0x20), 0)\n        }\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_address(offset) -> value\n    {\n        value := calldataload(offset)\n        validator_revert_address(value)\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_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_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_bool_t_bool_t_uint256_t_uint256__to_t_bool_t_bool_t_uint256_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, iszero(iszero(value0)))\n        mstore(add(headStart, 32), iszero(iszero(value1)))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function allocate_memory_6027() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0xa0)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function allocate_memory_6029() -> memPtr\n    {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0x0160)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, 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_array_struct_AdvancedOrder_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function abi_decode_enum_ItemType(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(lt(value, 6)) { revert(0, 0) }\n    }\n    function abi_decode_struct_OfferItem(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0xa0) { revert(0, 0) }\n        value := allocate_memory_6027()\n        mstore(value, abi_decode_enum_ItemType(headStart))\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        mstore(add(value, 32), value_1)\n        mstore(add(value, 64), calldataload(add(headStart, 64)))\n        mstore(add(value, 96), calldataload(add(headStart, 96)))\n        mstore(add(value, 128), calldataload(add(headStart, 128)))\n    }\n    function abi_decode_array_struct_OfferItem_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_struct_AdvancedOrder_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let _3 := 0xa0\n        let srcEnd := add(add(offset, mul(_1, _3)), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _3) }\n        {\n            mstore(dst, abi_decode_struct_OfferItem(src, end))\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_struct_ConsiderationItem(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0xc0) { revert(0, 0) }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, 0xc0)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        value := memPtr\n        mstore(memPtr, abi_decode_enum_ItemType(headStart))\n        let value_1 := calldataload(add(headStart, 32))\n        validator_revert_address(value_1)\n        mstore(add(memPtr, 32), value_1)\n        mstore(add(memPtr, 64), calldataload(add(headStart, 64)))\n        mstore(add(memPtr, 96), calldataload(add(headStart, 96)))\n        mstore(add(memPtr, 128), calldataload(add(headStart, 128)))\n        let value_2 := calldataload(add(headStart, 160))\n        validator_revert_address(value_2)\n        mstore(add(memPtr, 160), value_2)\n    }\n    function abi_decode_array_struct_ConsiderationItem_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_struct_AdvancedOrder_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let _3 := 0xc0\n        let srcEnd := add(add(offset, mul(_1, _3)), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _3) }\n        {\n            mstore(dst, abi_decode_struct_ConsiderationItem(src, end))\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_enum_OrderType(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(lt(value, 4)) { revert(0, 0) }\n    }\n    function abi_decode_struct_OrderParameters(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0x0160) { revert(0, 0) }\n        value := allocate_memory_6029()\n        mstore(value, abi_decode_address(headStart))\n        mstore(add(value, 32), abi_decode_address(add(headStart, 32)))\n        let offset := calldataload(add(headStart, 64))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        mstore(add(value, 64), abi_decode_array_struct_OfferItem_dyn(add(headStart, offset), end))\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        mstore(add(value, 96), abi_decode_array_struct_ConsiderationItem_dyn(add(headStart, offset_1), end))\n        mstore(add(value, 128), abi_decode_enum_OrderType(add(headStart, 128)))\n        mstore(add(value, 160), calldataload(add(headStart, 160)))\n        mstore(add(value, 192), calldataload(add(headStart, 192)))\n        mstore(add(value, 224), calldataload(add(headStart, 224)))\n        let _2 := 256\n        mstore(add(value, _2), calldataload(add(headStart, _2)))\n        let _3 := 288\n        mstore(add(value, _3), calldataload(add(headStart, _3)))\n        let _4 := 320\n        mstore(add(value, _4), calldataload(add(headStart, _4)))\n    }\n    function abi_decode_uint120(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n        let array_1 := allocate_memory(add(and(add(_1, 0x1f), not(31)), 0x20))\n        mstore(array_1, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(array_1, _1), 0x20), 0)\n        array := array_1\n    }\n    function abi_decode_struct_AdvancedOrder(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0xa0) { revert(0, 0) }\n        value := allocate_memory_6027()\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        mstore(value, abi_decode_struct_OrderParameters(add(headStart, offset), end))\n        mstore(add(value, 32), abi_decode_uint120(add(headStart, 32)))\n        mstore(add(value, 64), abi_decode_uint120(add(headStart, 64)))\n        let offset_1 := calldataload(add(headStart, 96))\n        if gt(offset_1, _1) { revert(0, 0) }\n        mstore(add(value, 96), abi_decode_bytes(add(headStart, offset_1), end))\n        let offset_2 := calldataload(add(headStart, 128))\n        if gt(offset_2, _1) { revert(0, 0) }\n        mstore(add(value, 128), abi_decode_bytes(add(headStart, offset_2), end))\n    }\n    function abi_decode_array_struct_AdvancedOrder_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let dst := allocate_memory(array_allocation_size_array_struct_AdvancedOrder_dyn(_1))\n        let dst_1 := dst\n        mstore(dst, _1)\n        dst := add(dst, _2)\n        let srcEnd := add(add(offset, shl(5, _1)), _2)\n        if gt(srcEnd, end) { revert(0, 0) }\n        let src := add(offset, _2)\n        for { } lt(src, srcEnd) { src := add(src, _2) }\n        {\n            let innerOffset := calldataload(src)\n            if gt(innerOffset, 0xffffffffffffffff)\n            {\n                let _3 := 0\n                revert(_3, _3)\n            }\n            mstore(dst, abi_decode_struct_AdvancedOrder(add(add(offset, innerOffset), _2), end))\n            dst := add(dst, _2)\n        }\n        array := dst_1\n    }\n    function abi_decode_array_struct_CriteriaResolver_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$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_array_struct_AdvancedOrder_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_2), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\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_ItemType(value, pos)\n    {\n        if iszero(lt(value, 6)) { panic_error_0x21() }\n        mstore(pos, value)\n    }\n    function abi_encode_address(value, pos)\n    {\n        mstore(pos, and(value, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_struct_ReceivedItem(value, pos)\n    {\n        abi_encode_enum_ItemType(mload(value), pos)\n        let memberValue0 := mload(add(value, 0x20))\n        let _1 := sub(shl(160, 1), 1)\n        mstore(add(pos, 0x20), and(memberValue0, _1))\n        mstore(add(pos, 0x40), mload(add(value, 0x40)))\n        mstore(add(pos, 0x60), mload(add(value, 0x60)))\n        mstore(add(pos, 0x80), and(mload(add(value, 0x80)), _1))\n    }\n    function abi_encode_array_struct_Execution_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _2 := mload(srcPtr)\n            abi_encode_struct_ReceivedItem(mload(_2), pos)\n            mstore(add(pos, 0xa0), and(mload(add(_2, _1)), sub(shl(160, 1), 1)))\n            mstore(add(pos, 0xc0), mload(add(_2, 0x40)))\n            pos := add(pos, 0xe0)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_array_struct_Execution_dyn(value0, add(headStart, 32))\n    }\n    function abi_decode_tuple_t_struct$_OrderComponents_$3892_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        let _1 := add(headStart, offset)\n        if slt(sub(dataEnd, _1), 352) { revert(0, 0) }\n        value0 := _1\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_array$_t_struct$_Order_$4019_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_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_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_tuple_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_tuple_t_struct$_Order_$4019_calldata_ptrt_bytes32(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        let _1 := add(headStart, offset)\n        if slt(sub(dataEnd, _1), 64) { revert(0, 0) }\n        value0 := _1\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_struct$_AdvancedOrder_$4031_calldata_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_bytes32(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let _2 := add(headStart, offset)\n        if slt(sub(dataEnd, _2), 160) { revert(0, 0) }\n        value0 := _2\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        value3 := calldataload(add(headStart, 64))\n    }\n    function abi_decode_tuple_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_bytes32t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(0, 0) }\n        let value4_1, value5_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_2), dataEnd)\n        value4 := value4_1\n        value5 := value5_1\n        value6 := calldataload(add(headStart, 96))\n        value7 := calldataload(add(headStart, 128))\n    }\n    function abi_encode_tuple_t_array$_t_bool_$dyn_memory_ptr_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__to_t_array$_t_bool_$dyn_memory_ptr_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        let tail_1 := add(headStart, 64)\n        mstore(headStart, 64)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        pos := add(headStart, 96)\n        let _1 := 0x20\n        let srcPtr := add(value0, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, iszero(iszero(mload(srcPtr))))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        mstore(add(headStart, _1), sub(pos, headStart))\n        tail := abi_encode_array_struct_Execution_dyn(value1, pos)\n    }\n    function abi_encode_tuple_t_string_memory_ptr_t_bytes32_t_address__to_t_string_memory_ptr_t_bytes32_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        mstore(headStart, 96)\n        tail := abi_encode_string(value0, add(headStart, 96))\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n    }\n    function abi_decode_tuple_t_struct$_BasicOrderParameters_$3980_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        let _1 := add(headStart, offset)\n        if slt(sub(dataEnd, _1), 576) { revert(0, 0) }\n        value0 := _1\n    }\n    function abi_decode_tuple_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptrt_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptrt_bytes32t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7, value8\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        value0 := abi_decode_array_struct_AdvancedOrder_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_2), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n        let offset_3 := calldataload(add(headStart, 96))\n        if gt(offset_3, _1) { revert(0, 0) }\n        let value5_1, value6_1 := abi_decode_array_struct_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset_3), dataEnd)\n        value5 := value5_1\n        value6 := value6_1\n        value7 := calldataload(add(headStart, 128))\n        value8 := calldataload(add(headStart, 160))\n    }\n    function abi_decode_tuple_t_array$_t_struct$_OrderComponents_$3892_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_CriteriaResolver_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n    }\n    function convert_array_t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr(value, length) -> converted\n    {\n        let dst := allocate_memory(array_allocation_size_array_struct_AdvancedOrder_dyn(length))\n        let dst_1 := dst\n        mstore(dst, length)\n        let _1 := 0x20\n        dst := add(dst, _1)\n        let _2 := 5\n        let srcEnd := add(value, shl(_2, length))\n        if gt(srcEnd, calldatasize()) { revert(0, 0) }\n        let src := value\n        for { } lt(src, srcEnd) { src := add(src, _1) }\n        {\n            let innerOffset := calldataload(src)\n            let _3 := 0xffffffffffffffff\n            if gt(innerOffset, _3)\n            {\n                let _4 := 0\n                revert(_4, _4)\n            }\n            let _5 := add(value, innerOffset)\n            if slt(sub(calldatasize(), _5), 0xa0)\n            {\n                let _6 := 0\n                revert(_6, _6)\n            }\n            let value_1 := allocate_memory_6027()\n            mstore(value_1, calldataload(_5))\n            let value_2 := calldataload(add(_5, _1))\n            if iszero(lt(value_2, 2))\n            {\n                let _7 := 0\n                revert(_7, _7)\n            }\n            mstore(add(value_1, _1), value_2)\n            let _8 := 64\n            mstore(add(value_1, _8), calldataload(add(_5, _8)))\n            let _9 := 96\n            mstore(add(value_1, _9), calldataload(add(_5, _9)))\n            let _10 := 128\n            let offset := calldataload(add(_5, _10))\n            if gt(offset, _3)\n            {\n                let _11 := 0\n                revert(_11, _11)\n            }\n            let _12 := add(_5, offset)\n            if iszero(slt(add(_12, 0x1f), calldatasize()))\n            {\n                let _13 := 0\n                revert(_13, _13)\n            }\n            let _14 := calldataload(_12)\n            let dst_2 := allocate_memory(array_allocation_size_array_struct_AdvancedOrder_dyn(_14))\n            let dst_3 := dst_2\n            mstore(dst_2, _14)\n            dst_2 := add(dst_2, _1)\n            let srcEnd_1 := add(add(_12, shl(_2, _14)), _1)\n            if gt(srcEnd_1, calldatasize())\n            {\n                let _15 := 0\n                revert(_15, _15)\n            }\n            let src_1 := add(_12, _1)\n            for { } lt(src_1, srcEnd_1) { src_1 := add(src_1, _1) }\n            {\n                mstore(dst_2, calldataload(src_1))\n                dst_2 := add(dst_2, _1)\n            }\n            mstore(add(value_1, _10), dst_3)\n            mstore(dst, value_1)\n            dst := add(dst, _1)\n        }\n        converted := dst_1\n    }\n    function access_calldata_tail_t_array$_t_struct$_OfferItem_$3904_calldata_ptr_$dyn_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(), mul(length, 0xa0))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_struct$_OfferItem_$3904_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n        value0 := abi_decode_struct_OfferItem(headStart, dataEnd)\n    }\n    function access_calldata_tail_t_array$_t_struct$_ConsiderationItem_$3918_calldata_ptr_$dyn_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(), mul(length, 0xc0))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_struct$_ConsiderationItem_$3918_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n        value0 := abi_decode_struct_ConsiderationItem(headStart, dataEnd)\n    }\n    function abi_decode_tuple_t_enum$_OrderType_$3815(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_enum_OrderType(headStart)\n    }\n    function convert_t_struct$_AdvancedOrder_$4031_calldata_ptr_to_t_struct$_AdvancedOrder_$4031_memory_ptr(value) -> converted\n    {\n        converted := abi_decode_struct_AdvancedOrder(value, calldatasize())\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$_Order_$4019_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(62)))) { revert(0, 0) }\n        addr := add(base_ref, rel_offset_of_tail)\n    }\n    function access_calldata_tail_t_struct$_OrderParameters_$4013_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(350)))) { revert(0, 0) }\n        addr := add(base_ref, rel_offset_of_tail)\n    }\n    function convert_t_struct$_OrderParameters_$4013_calldata_ptr_to_t_struct$_OrderParameters_$4013_memory_ptr(value) -> converted\n    {\n        converted := abi_decode_struct_OrderParameters(value, calldatasize())\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 abi_decode_struct_FulfillmentComponent(headStart, end) -> value\n    {\n        if slt(sub(end, headStart), 0x40) { revert(0, 0) }\n        let 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        value := memPtr\n        mstore(memPtr, calldataload(headStart))\n        mstore(add(memPtr, 32), calldataload(add(headStart, 32)))\n    }\n    function convert_array_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr_to_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr(value, length) -> converted\n    {\n        let dst := allocate_memory(array_allocation_size_array_struct_AdvancedOrder_dyn(length))\n        let dst_1 := dst\n        mstore(dst, length)\n        let _1 := 0x20\n        dst := add(dst, _1)\n        let srcEnd := add(value, shl(5, length))\n        if gt(srcEnd, calldatasize()) { revert(0, 0) }\n        let src := value\n        for { } lt(src, srcEnd) { src := add(src, _1) }\n        {\n            let innerOffset := calldataload(src)\n            if gt(innerOffset, 0xffffffffffffffff)\n            {\n                let _2 := 0\n                revert(_2, _2)\n            }\n            let _3 := add(value, innerOffset)\n            if iszero(slt(add(_3, 0x1f), calldatasize()))\n            {\n                let _4 := 0\n                revert(_4, _4)\n            }\n            let _5 := calldataload(_3)\n            let dst_2 := allocate_memory(array_allocation_size_array_struct_AdvancedOrder_dyn(_5))\n            let dst_3 := dst_2\n            mstore(dst_2, _5)\n            dst_2 := add(dst_2, _1)\n            let srcEnd_1 := add(add(_3, shl(6, _5)), _1)\n            if gt(srcEnd_1, calldatasize())\n            {\n                let _6 := 0\n                revert(_6, _6)\n            }\n            let src_1 := add(_3, _1)\n            for { } lt(src_1, srcEnd_1) { src_1 := add(src_1, 0x40) }\n            {\n                mstore(dst_2, abi_decode_struct_FulfillmentComponent(src_1, calldatasize()))\n                dst_2 := add(dst_2, _1)\n            }\n            mstore(dst, dst_3)\n            dst := add(dst, _1)\n        }\n        converted := dst_1\n    }\n    function abi_decode_tuple_t_address_payable(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 access_calldata_tail_t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_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(), shl(6, length))) { revert(0, 0) }\n    }\n    function access_calldata_tail_t_struct$_OrderComponents_$3892_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(350)))) { revert(0, 0) }\n        addr := add(base_ref, rel_offset_of_tail)\n    }\n    function access_calldata_tail_t_struct$_Fulfillment_$4062_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(62)))) { revert(0, 0) }\n        addr := add(base_ref, rel_offset_of_tail)\n    }\n    function access_calldata_tail_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_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(), shl(6, length))) { revert(0, 0) }\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_mul_t_uint256(x, y) -> product\n    {\n        if and(iszero(iszero(x)), gt(y, div(not(0), x))) { panic_error_0x11() }\n        product := mul(x, y)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y)) { panic_error_0x11() }\n        sum := add(x, y)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y) { panic_error_0x11() }\n        diff := sub(x, y)\n    }\n    function abi_encode_array_struct_ReceivedItem_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            abi_encode_struct_ReceivedItem(mload(srcPtr), pos)\n            pos := add(pos, 0xa0)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_array$_t_struct$_SpentItem_$3928_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_ReceivedItem_$3940_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_address_t_array$_t_struct$_SpentItem_$3928_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_ReceivedItem_$3940_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := 128\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, value0)\n        let _2 := 32\n        let _3 := sub(shl(160, 1), 1)\n        mstore(add(headStart, _2), and(value1, _3))\n        let _4 := 64\n        mstore(add(headStart, _4), _1)\n        let pos := tail_1\n        let length := mload(value2)\n        mstore(tail_1, length)\n        pos := add(headStart, 160)\n        let srcPtr := add(value2, _2)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _5 := mload(srcPtr)\n            abi_encode_enum_ItemType(mload(_5), pos)\n            mstore(add(pos, _2), and(mload(add(_5, _2)), _3))\n            mstore(add(pos, _4), mload(add(_5, _4)))\n            let _6 := 0x60\n            mstore(add(pos, _6), mload(add(_5, _6)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _2)\n        }\n        mstore(add(headStart, 0x60), sub(pos, headStart))\n        tail := abi_encode_array_struct_ReceivedItem_dyn(value3, pos)\n    }\n    function abi_decode_tuple_t_struct$_FulfillmentComponent_$4067_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_struct_FulfillmentComponent(headStart, dataEnd)\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 96)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\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_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    function abi_encode_array_struct_OfferItem_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _2 := mload(srcPtr)\n            abi_encode_enum_ItemType(mload(_2), pos)\n            mstore(add(pos, _1), and(mload(add(_2, _1)), sub(shl(160, 1), 1)))\n            let _3 := 0x40\n            mstore(add(pos, _3), mload(add(_2, _3)))\n            let _4 := 0x60\n            mstore(add(pos, _4), mload(add(_2, _4)))\n            let _5 := 0x80\n            mstore(add(pos, _5), mload(add(_2, _5)))\n            pos := add(pos, 0xa0)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_array_struct_ConsiderationItem_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            let _2 := mload(srcPtr)\n            abi_encode_enum_ItemType(mload(_2), pos)\n            let memberValue0 := mload(add(_2, _1))\n            let _3 := sub(shl(160, 1), 1)\n            mstore(add(pos, _1), and(memberValue0, _3))\n            let _4 := 0x40\n            mstore(add(pos, _4), mload(add(_2, _4)))\n            let _5 := 0x60\n            mstore(add(pos, _5), mload(add(_2, _5)))\n            let _6 := 0x80\n            mstore(add(pos, _6), mload(add(_2, _6)))\n            let _7 := 0xa0\n            mstore(add(pos, _7), and(mload(add(_2, _7)), _3))\n            pos := add(pos, 0xc0)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_enum_OrderType(value, pos)\n    {\n        if iszero(lt(value, 4)) { panic_error_0x21() }\n        mstore(pos, value)\n    }\n    function abi_encode_uint120(value, pos)\n    {\n        mstore(pos, and(value, 0xffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_array_bytes32_dyn(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, mload(srcPtr))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        end := pos\n    }\n    function abi_encode_enum_Side(value, pos)\n    {\n        if iszero(lt(value, 2)) { panic_error_0x21() }\n        mstore(pos, value)\n    }\n    function abi_encode_array_struct_CriteriaResolver_dyn(value, pos) -> end\n    {\n        let pos_1 := pos\n        let length := mload(value)\n        mstore(pos, length)\n        let _1 := 0x20\n        pos := add(pos, _1)\n        let tail := add(add(pos_1, shl(5, length)), _1)\n        let srcPtr := add(value, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail, pos_1), not(31)))\n            let _2 := mload(srcPtr)\n            let _3 := 0xa0\n            mstore(tail, mload(_2))\n            let memberValue0 := mload(add(_2, _1))\n            abi_encode_enum_Side(memberValue0, add(tail, _1))\n            let _4 := 0x40\n            mstore(add(tail, _4), mload(add(_2, _4)))\n            let _5 := 0x60\n            mstore(add(tail, _5), mload(add(_2, _5)))\n            let _6 := 0x80\n            let memberValue0_1 := mload(add(_2, _6))\n            mstore(add(tail, _6), _3)\n            tail := abi_encode_array_bytes32_dyn(memberValue0_1, add(tail, _3))\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        end := tail\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_struct$_AdvancedOrder_$4031_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr__to_t_bytes32_t_address_t_struct$_AdvancedOrder_$4031_memory_ptr_t_array$_t_bytes32_$dyn_memory_ptr_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 64), 160)\n        let _1 := 320\n        let memberValue0 := mload(value2)\n        mstore(add(headStart, 160), 160)\n        abi_encode_address(mload(memberValue0), add(headStart, _1))\n        let memberValue0_1 := mload(add(memberValue0, 32))\n        let _2 := 0x0160\n        abi_encode_address(memberValue0_1, add(headStart, _2))\n        let memberValue0_2 := mload(add(memberValue0, 64))\n        mstore(add(headStart, 384), _2)\n        let tail_1 := abi_encode_array_struct_OfferItem_dyn(memberValue0_2, add(headStart, 672))\n        let memberValue0_3 := mload(add(memberValue0, 0x60))\n        mstore(add(headStart, 416), add(sub(tail_1, headStart), not(319)))\n        let tail_2 := abi_encode_array_struct_ConsiderationItem_dyn(memberValue0_3, tail_1)\n        let memberValue0_4 := mload(add(memberValue0, 0x80))\n        abi_encode_enum_OrderType(memberValue0_4, add(headStart, 448))\n        mstore(add(headStart, 480), mload(add(memberValue0, 160)))\n        mstore(add(headStart, 512), mload(add(memberValue0, 0xc0)))\n        mstore(add(headStart, 544), mload(add(memberValue0, 0xe0)))\n        let _3 := 0x0100\n        mstore(add(headStart, 576), mload(add(memberValue0, _3)))\n        let _4 := 0x0120\n        mstore(add(headStart, 608), mload(add(memberValue0, _4)))\n        mstore(add(headStart, 640), mload(add(memberValue0, _1)))\n        let memberValue0_5 := mload(add(value2, 32))\n        abi_encode_uint120(memberValue0_5, add(headStart, 0xc0))\n        let memberValue0_6 := mload(add(value2, 64))\n        abi_encode_uint120(memberValue0_6, add(headStart, 0xe0))\n        let memberValue0_7 := mload(add(value2, 0x60))\n        let _5 := not(159)\n        mstore(add(headStart, _3), add(sub(tail_2, headStart), _5))\n        let tail_3 := abi_encode_string(memberValue0_7, tail_2)\n        let memberValue0_8 := mload(add(value2, 0x80))\n        mstore(add(headStart, _4), add(sub(tail_3, headStart), _5))\n        let end := abi_encode_string(memberValue0_8, tail_3)\n        mstore(add(headStart, 0x60), sub(end, headStart))\n        let tail_4 := abi_encode_array_bytes32_dyn(value3, end)\n        mstore(add(headStart, 0x80), sub(tail_4, headStart))\n        tail := abi_encode_array_struct_CriteriaResolver_dyn(value4, tail_4)\n    }\n    function abi_encode_tuple_t_address_payable_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 abi_encode_tuple_t_enum$_Side_$3857__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        abi_encode_enum_Side(value0, headStart)\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 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_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\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_string(value1, add(headStart, 64))\n    }\n    function abi_encode_tuple_t_bytes32_t_address_t_address_t_bytes32__to_t_bytes32_t_address_t_address_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        let _1 := sub(shl(160, 1), 1)\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), and(value2, _1))\n        mstore(add(headStart, 96), value3)\n    }\n    function panic_error_0x51()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x51)\n        revert(0, 0x24)\n    }\n}",
                  "id": 45,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "3164": [
                  {
                    "length": 32,
                    "start": 8871
                  }
                ],
                "3166": [
                  {
                    "length": 32,
                    "start": 8911
                  }
                ],
                "3168": [
                  {
                    "length": 32,
                    "start": 8833
                  }
                ],
                "3170": [
                  {
                    "length": 32,
                    "start": 1995
                  },
                  {
                    "length": 32,
                    "start": 9396
                  }
                ],
                "3172": [
                  {
                    "length": 32,
                    "start": 2098
                  },
                  {
                    "length": 32,
                    "start": 9113
                  }
                ],
                "3174": [
                  {
                    "length": 32,
                    "start": 2211
                  },
                  {
                    "length": 32,
                    "start": 9531
                  }
                ],
                "3176": [
                  {
                    "length": 32,
                    "start": 8787
                  }
                ],
                "3178": [
                  {
                    "length": 32,
                    "start": 8995
                  }
                ],
                "3181": [
                  {
                    "length": 32,
                    "start": 3436
                  },
                  {
                    "length": 32,
                    "start": 13587
                  }
                ],
                "3183": [
                  {
                    "length": 32,
                    "start": 13631
                  }
                ]
              },
              "linkReferences": {},
              "object": "6080604052600436106100e85760003560e01c8063a81744041161008a578063f47b774011610059578063f47b7740146102c7578063fb0f3ee1146102eb578063fb4c2af9146102fe578063fd9f1e101461031157600080fd5b8063a81744041461026d578063b3a34c4c14610280578063df7b0dac14610293578063ed98a574146102a657600080fd5b806355944a42116100c657806355944a42146101e8578063627cdcb91461020857806379df72bd1461021d578063881477321461023d57600080fd5b806306fdde03146100ed5780632d0335ab1461011857806346423aa714610146575b600080fd5b3480156100f957600080fd5b50610102610331565b60405161010f9190613fde565b60405180910390f35b34801561012457600080fd5b50610138610133366004614016565b610340565b60405190815260200161010f565b34801561015257600080fd5b506101c6610161366004614033565b6000908152600260209081526040918290208251608081018452905460ff8082161515808452610100830490911615159383018490526001600160781b036201000083048116958401869052600160881b909204909116606090920182905293919291565b604080519415158552921515602085015291830152606082015260800161010f565b6101fb6101f63660046145dd565b610360565b60405161010f919061473f565b34801561021457600080fd5b50610138610381565b34801561022957600080fd5b50610138610238366004614752565b61038b565b34801561024957600080fd5b5061025d61025836600461478d565b61051c565b604051901515815260200161010f565b6101fb61027b3660046147ce565b61052f565b61025d61028e366004614839565b6105ad565b61025d6102a1366004614882565b61061e565b6102b96102b43660046148f9565b61063c565b60405161010f9291906149a1565b3480156102d357600080fd5b506102dc6106c5565b60405161010f939291906149f0565b61025d6102f9366004614a23565b6106dd565b6102b961030c366004614a5e565b6106e8565b34801561031d57600080fd5b5061025d61032c36600461478d565b610716565b606061033b610722565b905090565b6001600160a01b0381166000908152600160205260408120545b92915050565b6060610377866103708688614b2e565b858561073b565b9695505050505050565b600061033b610756565b60408051610160810190915260009061035a90806103ac6020860186614016565b6001600160a01b031681526020018460200160208101906103cd9190614016565b6001600160a01b031681526020016103e86040860186614c62565b808060200260200160405190810160405280939291908181526020016000905b828210156104345761042560a08302860136819003810190614caa565b81526020019060010190610408565b505050918352505060200161044c6060860186614cc6565b808060200260200160405190810160405280939291908181526020016000905b828210156104985761048960c08302860136819003810190614d0e565b8152602001906001019061046c565b50505091835250506020016104b360a0860160808701614d2a565b60038111156104c4576104c4614671565b81526020018460a0013581526020018460c0013581526020018460e0013581526020018461010001358152602001846101200135815260200184806060019061050d9190614cc6565b909152506101408401356107b3565b600061052883836108f9565b9392505050565b60606105a261053e8686610ab5565b604080516000808252602082019092529061059a565b6105876040805160a081019091526000808252602082019081526020016000815260200160008152602001606081525090565b8152602001906001900390816105545790505b50858561073b565b90505b949350505050565b60006105286105bb84610b70565b6040805160008082526020820190925290610617565b6106046040805160a081019091526000808252602082019081526020016000815260200160008152602001606081525090565b8152602001906001900390816105d15790505b5084610c1b565b60006105a261062c86614d45565b6106368587614b2e565b84610c1b565b6060806106b461064c8b8b610ab5565b60408051600080825260208201909252906106a8565b6106956040805160a081019091526000808252602082019081526020016000815260200160008152602001606081525090565b8152602001906001900390816106625790505b508a8a8a8a8a8a610d0c565b915091509850989650505050505050565b60606000806106d2610d4b565b925092509250909192565b600061035a82610daa565b6060806107048b6106f98b8d614b2e565b8a8a8a8a8a8a610d0c565b91509150995099975050505050505050565b60006105288383611044565b606060206000526707536561706f727460275260606000f35b606061074b858560018851611245565b6105a285848461155c565b6000610760611687565b503360008181526001602081815260409283902080549092019182905591518181529092917f7ab0fc7de8910a6100b24df423c3d0835534506dca9473d30c3e7df51241b2cf910160405180910390a290565b610140820151604080519084015180516000939284927f000000000000000000000000000000000000000000000000000000000000000092602090910190845b81811015610820578251601f1901805186825260c0822086529052602093840193909201916001016107f3565b506020810260405120945050505060007f00000000000000000000000000000000000000000000000000000000000000009150604051602060608901510160005b8681101561088e578151601f1901805186825260e082208552905260209283019290910190600101610861565b505060408051602087029020601f198a0180517f00000000000000000000000000000000000000000000000000000000000000008252928b01805197815260608c018051938152610140909c019a8b5261018082209390915295909552939097525050925250919050565b6000610903611687565b60008083815b81811015610aa8573687878381811061092457610924614d51565b90506020028101906109369190614d67565b9050366109438280614d87565b90506109526020820182614016565b945061096561096082614d9e565b6116ac565b60008181526002602090815260408083208151608081018352905460ff808216151583526101008204161515938201939093526001600160781b03620100008404811692820192909252600160881b9092041660608201529197506109cf908890839060016116e7565b508051610a9a57610a2286886109e86020870187614daa565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506117a092505050565b600087815260026020908152604091829020805460ff19166001179055610a4d918401908401614016565b6001600160a01b0316866001600160a01b03167ffde361574a066b44b3b5fe98a87108b7565e327327954c4faeea56a4e6491a0a89604051610a9191815260200190565b60405180910390a35b836001019350505050610909565b5060019695505050505050565b606081806001600160401b03811115610ad057610ad061404c565b604051908082528060200260200182016040528015610b0957816020015b610af6613e9d565b815260200190600190039081610aee5790505b50915060005b81811015610b6857610b43858583818110610b2c57610b2c614d51565b9050602002810190610b3e9190614d67565b610b70565b838281518110610b5557610b55614d51565b6020908102919091010152600101610b0f565b505092915050565b610b78613e9d565b6040805160a0810190915280610b8e8480614d87565b610b9790614d9e565b815260200160016001600160781b0316815260200160016001600160781b03168152602001838060200190610bcc9190614daa565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509385525050604080516020818101909252928352909201525092915050565b6000610c256117f5565b60606000806000610c398888600187611804565b604080516001808252818301909252939650919450925060009190816020015b610c61613e9d565b815260200190600190039081610c595790505090508881600081518110610c8a57610c8a614d51565b6020026020010181905250610c9f8189611a8d565b600081600081518110610cb457610cb4614d51565b6020026020010151600001519050610cd48185858461012001518c611e0a565b610cf28582600001518360200151338560400151866060015161200e565b610cfc6001600055565b5060019998505050505050505050565b606080610d1c8a8a600086611245565b610d3a8a610d2a898b614e3e565b610d34888a614e3e565b87612073565b909b909a5098505050505050505050565b6060600080610d5861224f565b6040805160018082528183019092529193507f000000000000000000000000000000000000000000000000000000000000000092506020820181803683375050603160f81b6020830152509391925090565b600060046101243590810490600316600182113415811480610de657604051630a61be9f60e41b81523460048201526024015b60405180910390fd5b5060008060006003861160a08102602401359350600287146002881160028903020192506001830181026002861502880103915050610e29888684878786612345565b6000610e3b60808a0160608b01614016565b90506101c46003881160200201356000866005811115610e5d57610e5d614671565b03610ea957610e8883610e7660c08d0160a08e01614016565b84338e60c001358f60e0013587612685565b610ea460408b013583610e9f6102008e018e614f10565b612739565b610cfc565b6040805160208082528183019092526000916020820181803683370190505090506002896005811115610ede57610ede614671565b03610f3e57610f09610ef660c08d0160a08e01614016565b84338e60c001358f60e0013587876127fe565b610f393384610f1b60208f018f614016565b8e604001358f806102000190610f319190614f10565b60008861284b565b61102a565b6003896005811115610f5257610f52614671565b03610f7d57610f09610f6a60c08d0160a08e01614016565b84338e60c001358f60e0013587876128d2565b6004896005811115610f9157610f91614671565b03610fef57610fb9610fa660208d018d614016565b33858e602001358f6040013587876127fe565b610f3983338d60a0016020810190610fd19190614016565b8e60e001358f806102000190610fe79190614f10565b60018861284b565b611012610fff60208d018d614016565b33858e602001358f6040013587876128d2565b61102a83338d60a0016020810190610fd19190614016565b61103381612908565b505060019998505050505050505050565b600061104e611687565b60008083815b81811015610aa8573687878381811061106f5761106f614d51565b90506020028101906110819190614d87565b90506110906020820182614016565b94506110a26040820160208301614016565b9350336001600160a01b038616148015906110c65750336001600160a01b03851614155b156110e45760405163203b1cdd60e21b815260040160405180910390fd5b60006111d3604051806101600160405280886001600160a01b03168152602001876001600160a01b031681526020018480604001906111239190614c62565b808060200260200160405190810160405280939291908181526020016000905b8282101561116f5761116060a08302860136819003810190614caa565b81526020019060010190611143565b50505091835250506020016111876060860186614cc6565b808060200260200160405190810160405280939291908181526020016000905b82821015610498576111c460c08302860136819003810190614d0e565b815260200190600101906111a7565b60008181526002602052604090819020805461ffff1916610100179055519091506001600160a01b0380871691908816907f6bacc01dbe442496068f7d234edd811f1a5f833243e0aec824f86ab861f3c90d906112339085815260200190565b60405180910390a35050600101611054565b61124d6117f5565b83516000816001600160401b038111156112695761126961404c565b604051908082528060200260200182016040528015611292578160200160208202803683370190505b5090506000815260005b828110156114b15760008782815181106112b8576112b8614d51565b60200260200101519050846000036112dd5760006020909101526001810182526114a9565b60008060006112ee848b8b89611804565b925092509250600185018652816000036113155750506000602090920191909152506114a9565b8286868151811061132857611328614d51565b6020908102919091010152835160a081015160c0820151604090920151600019909a019990918290039042839003908183039060005b81518110156113f557600082828151811061137b5761137b614d51565b6020026020010151905060006113968a8a8460800151612931565b905081608001518260600151036113b357606082018190526113c8565b6113c28a8a8460600151612931565b60608301525b6080820181905260608201516113e3908288888b6000612981565b6060909201919091525060010161135e565b5088516060015160005b815181101561149d57600082828151811061141c5761141c614d51565b6020026020010151905060006114378b8b8460800151612931565b905081608001518260600151036114545760608201819052611469565b6114638b8b8460600151612931565b60608301525b608082018190526060820151611484908289898c6001612981565b60608301525060a08101516080909101526001016113ff565b50505050505050505050505b60010161129c565b506114bc8686611a8d565b8315330260005b83811015611552576000801b8382815181106114e1576114e1614d51565b6020026020010151031561154a57600088828151811061150357611503614d51565b602002602001015160000151905061154884838151811061152657611526614d51565b602002602001015182600001518360200151868560400151866060015161200e565b505b6001016114c3565b5050505050505050565b606081806001600160401b038111156115775761157761404c565b6040519080825280602002602001820160405280156115b057816020015b61159d613ed1565b8152602001906001900390816115955790505b5091506000805b8281101561166557368686838181106115d2576115d2614d51565b90506020028101906115e49190614d67565b90506000611608896115f68480614f10565b6116036020870187614f10565b6129dc565b905080602001516001600160a01b03168160000151608001516001600160a01b03160361163a5760018401935061165b565b80868585038151811061164f5761164f614d51565b60200260200101819052505b50506001016115b7565b508015611673578083510383525b5061167e8583612ccd565b50509392505050565b6001600054146116aa57604051637fa8a98760e01b815260040160405180910390fd5b565b60006116c2826060015151836101400151612ee2565b81516001600160a01b031660009081526001602052604090205461035a9083906107b3565b600083602001511561171d57811561171557604051630694555d60e21b815260048101869052602401610ddd565b5060006105a5565b60408401516001600160781b0316156117955782156117525760405163ee9e0e6360e01b815260048101869052602401610ddd565b83606001516001600160781b031684604001516001600160781b031610611795578115611715576040516310fda3e160e01b815260048101869052602401610ddd565b506001949350505050565b336001600160a01b038416036117b557505050565b60006117e26117c261224f565b61190160f01b600090815260029190915260228581526042822091905290565b90506117ef848284612f03565b50505050565b6117fd611687565b6002600055565b600080600080876000015190506118248160a001518260c0015188613046565b611838575060009250829150819050611a83565b602088015160408901516001600160781b0391821691168082118061185b575081155b1561187957604051632d02959960e11b815260040160405180910390fd5b808210801561188d57506080830151600116155b156118ab5760405163a11b63ff60e01b815260040160405180910390fd5b6118b4836116ac565b95506118d68a8a89898760e00151886080015189600001518a6020015161308c565b60008681526002602090815260408083208151608081018352905460ff808216151583526101008204161515938201939093526001600160781b03620100008404811692820192909252600160881b9092041660608201529061193d90889083908c6116e7565b611952575060009450849350611a8392505050565b805161196b5761196b8460000151888d606001516117a0565b604081015160608201516001600160781b0391821691168015611a2f578360010361199b578094508093506119c7565b8381146119c7576119ac8483614f6f565b91506119b88186614f6f565b94506119c48185614f6f565b93505b836119d28684614f8e565b11156119de5781840394505b600089815260026020526040902080546001600160781b03868116600160881b026001600160881b03868a019290921662010000026001600160881b03199093169290921760011716179055611a78565b600089815260026020526040902080546001600160781b03868116600160881b026001600160881b0391891662010000026001600160881b031990931692909217600117161790555b509295509093505050505b9450945094915050565b8051825160005b82811015611cd4576000848281518110611ab057611ab0614d51565b60200260200101519050600081600001519050838110611ae3576040516321a561b160e21b815260040160405180910390fd5b868181518110611af557611af5614d51565b6020026020010151602001516001600160781b0316600003611b18575050611ccc565b6000878281518110611b2c57611b2c614d51565b60209081029190910101515160408401519091506000808086602001516001811115611b5a57611b5a614671565b03611bf457604084015180518410611b8557604051635fd9fc6760e11b815260040160405180910390fd5b6000818581518110611b9957611b99614d51565b602090810291909101015180516040820151909550935090506004841460030381816005811115611bcc57611bcc614671565b90816005811115611bdf57611bdf614671565b90525050606088015160409091015250611c85565b606084015180518410611c1a576040516330446bef60e11b815260040160405180910390fd5b6000818581518110611c2e57611c2e614d51565b602090810291909101015180516040820151909550935090506004841460030381816005811115611c6157611c61614671565b90816005811115611c7457611c74614671565b905250506060880151604090910152505b611c8f8260031090565b611cac57604051634a75b57b60e11b815260040160405180910390fd5b8015611cc557611cc5866060015182886080015161316d565b5050505050505b600101611a94565b5060005b81811015611e03576000858281518110611cf457611cf4614d51565b6020026020010151905080602001516001600160781b0316600003611d195750611dfb565b6000868381518110611d2d57611d2d614d51565b60200260200101516000015190506000816060015151905060005b81811015611da457611d7b83606001518281518110611d6957611d69614d51565b60200260200101516000015160031090565b15611d9c5760405160016202297360e61b0319815260040160405180910390fd5b600101611d48565b505060408101515160005b81811015611df657611dd083604001518281518110611d6957611d69614d51565b15611dee5760405163a6cfc67360e01b815260040160405180910390fd5b600101611daf565b505050505b600101611cd8565b5050505050565b60008560a001518660c00151611e209190614fa6565b905060008660a0015142611e349190614fa6565b90506000611e428284614fa6565b60408051602080825281830190925291925034916000916020820181803683370190505090506131dd60005b8b6040015151811015611f265760008c604001518281518110611e9357611e93614d51565b602002602001015190506000611eb8826060015183608001518f8f8c8c8f600061329a565b606083018190523360808401529050600082516005811115611edc57611edc614671565b03611f085785811115611f0257604051631a783b8d60e01b815260040160405180910390fd5b80860395505b611f1c828f600001518d888863ffffffff16565b5050600101611e6e565b506131dd905060005b8b6060015151811015611fe75760008c606001518281518110611f5457611f54614d51565b602002602001015190506000611f79826060015183608001518f8f8c8c8f600161329a565b6060830181905260a083015160808401529050600082516005811115611fa157611fa1614671565b03611fcd5785811115611fc757604051631a783b8d60e01b815260040160405180910390fd5b80860395505b611fdd82338c888863ffffffff16565b5050600101611f2f565b5050611ff281612908565b81156120025761200233836132e6565b50505050505050505050565b60608290506060829050856001600160a01b0316876001600160a01b03167f9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f318a8886866040516120619493929190614ff7565b60405180910390a35050505050505050565b8251825160609182916120868183614f8e565b6001600160401b0381111561209d5761209d61404c565b6040519080825280602002602001820160405280156120d657816020015b6120c3613ed1565b8152602001906001900390816120bb5790505b5092506000805b8381101561216f5760008982815181106120f9576120f9614d51565b6020026020010151905060006121128c6000848c61333a565b905080602001516001600160a01b03168160000151608001516001600160a01b03160361214457600184019350612165565b80878585038151811061215957612159614d51565b60200260200101819052505b50506001016120dd565b5060005b8281101561220757600088828151811061218f5761218f614d51565b6020026020010151905060006121a88c6001848c61333a565b905080602001516001600160a01b03168160000151608001516001600160a01b0316036121da576001840193506121fd565b80878588860103815181106121f1576121f1614d51565b60200260200101819052505b5050600101612173565b508015612215578084510384525b5082516000036122385760405163d5da9a1b60e01b815260040160405180910390fd5b6122428884612ccd565b9350505094509492505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146123205761033b604080517f000000000000000000000000000000000000000000000000000000000000000060208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b61234d6117f5565b6123638661012001358761014001356001613046565b5061236c6133d5565b61239461237d610200880188614f10565b61238991506001614f8e565b876101e00135612ee2565b6000807f00000000000000000000000000000000000000000000000000000000000000009050806080528560a0526060602460c037604060646101203760e06080206101605261026435602081026102a0016001610264350181526020810190508781526080602460208301376101608760a0528660c052600060e05261020435925060005b83811015612465578060400261028401602081610100376040816101203760208301925060e0608020835260a08401935089845288602085015260408160608601375060010161241a565b60206001850102610160206060526102643593505b838110156124ab578060400261028401915060a083019250888352876020840152604082606085013760010161247a565b505050505060007f00000000000000000000000000000000000000000000000000000000000000009050806080528260a052606060c460c03760206101046101203760c0608020600052602060002060e052602061026435026102000160018152836020820152606060c4604083013750506084356001600160a01b0381166000908152600160205260408120547f000000000000000000000000000000000000000000000000000000000000000060808190529091506040608460a03760605161010052886101205260a061014461014037816101e0526101806080209350505050602061026435026101800181815233602082015260806040820152610120606082015260a061026435026101e00160a4356084357f9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f318385a35050600060605261262081886101600135888a606001602081019061260b9190614016565b61261b60a08d0160808e01614016565b613416565b61267c8161263460808a0160608b01614016565b6126426102208b018b614daa565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061346692505050565b50505050505050565b80156126e15760006040519050632671a55160e11b815260206004820152600160248201528760448201528660648201528560848201528460a48201528360c48201528260e48201526126db8282610104613508565b5061267c565b60028760058111156126f5576126f5614671565b0361272c578160011461271b5760405163efcc00b160e01b815260040160405180910390fd5b612727868686866135f8565b61267c565b61267c86868686866136b9565b348160005b818110156127ac573685858381811061275957612759614d51565b6040029190910191505080358481111561278657604051631a783b8d60e01b815260040160405180910390fd5b61279f6127996040840160208501614016565b826132e6565b909303925060010161273e565b50818611156127ce57604051631a783b8d60e01b815260040160405180910390fd5b6127d885876132e6565b858211156127ec576127ec338784036132e6565b6127f66001600055565b505050505050565b612808818361379d565b8161283a578260011461282e5760405163efcc00b160e01b815260040160405180910390fd5b612727878787876135f8565b61267c828260028a8a8a8a8a6137bc565b602082026101e403358360005b818110156128b9573687878381811061287357612873614d51565b60400291909101915050803586156128925761288f818b614fa6565b99505b6128af8b8e6128a76040860160208701614016565b84898b61383c565b5050600101612858565b506128c8888b8b8a868861383c565b6120026001600055565b6128db83613877565b6128e5818361379d565b816128f75761272787878787876136b9565b61267c828260038a8a8a8a8a6137bc565b80516040146129145750565b6000612921826020015190565b905061292d8183613898565b5050565b6000828403612941575080610528565b600083858409159050806129685760405163c63cf08960e01b815260040160405180910390fd5b60006129748685614f6f565b9490940495945050505050565b60008587146129d15760008215612999575060001983015b6000816129a6888a614f6f565b6129b0888c614f6f565b6129ba9190614f8e565b6129c49190614f8e565b8590049250610377915050565b509395945050505050565b6129e4613ed1565b8315806129ef575081155b15612a0d57604051634c74edb760e11b815260040160405180910390fd5b612a15613ed1565b612a72878585808060200260200160405190810160405280939291908181526020016000905b82821015612a6757612a5860408302860136819003810190615091565b81526020019060010190612a3b565b5050505050836138bc565b805160408051602080890282018101909252878152612ad1918a91908a908a90819060009085015b82821015612ac657612ab760408302860136819003810190615091565b81526020019060010190612a9a565b505050505085613a68565b80516005811115612ae457612ae4614671565b8351516005811115612af857612af8614671565b141580612b23575080602001516001600160a01b03168360000151602001516001600160a01b031614155b80612b3a5750806040015183600001516040015114155b15612b58576040516309cfb45560e01b815260040160405180910390fd5b82600001516060015181606001511115612c0f57600085856000818110612b8157612b81614d51565b905060400201803603810190612b979190615091565b90508360000151606001518260600151612bb19190614fa6565b89826000015181518110612bc757612bc7614d51565b60200260200101516000015160600151826020015181518110612bec57612bec614d51565b602090810291909101015160609081019190915284518101519083015250612ca1565b600087876000818110612c2457612c24614d51565b905060400201803603810190612c3a9190615091565b90508160600151846000015160600151612c549190614fa6565b89826000015181518110612c6a57612c6a614d51565b60200260200101516000015160400151826020015181518110612c8f57612c8f614d51565b60200260200101516060018181525050505b60608082015184519091015260809081015183516001600160a01b039091169101525095945050505050565b8151606090806001600160401b03811115612cea57612cea61404c565b604051908082528060200260200182016040528015612d13578160200160208202803683370190505b50915060005b81811015612df9576000858281518110612d3557612d35614d51565b6020026020010151905080602001516001600160781b0316600003612d5a5750612df1565b6001848381518110612d6e57612d6e614d51565b9115156020928302919091019091015280516060015160005b8151811015612ded576000828281518110612da457612da4614d51565b602002602001015160600151905080600014612de4576040516314bea84160e31b8152600481018690526024810183905260448101829052606401610ddd565b50600101612d87565b5050505b600101612d19565b5060408051602080825281830190925234916000919060208201818036833701905050905060005b8551811015612eb5576000868281518110612e3e57612e3e614d51565b60209081029190910101518051909150600081516005811115612e6357612e63614671565b03612e97578481606001511115612e8d57604051631a783b8d60e01b815260040160405180910390fd5b8060600151850394505b612eab8183602001518460400151876131dd565b5050600101612e21565b50612ebf81612908565b8115612ecf57612ecf33836132e6565b612ed96001600055565b50505092915050565b8082101561292d57604051632335530b60e11b815260040160405180910390fd5b60008060008351604003612f3457505050602081015160408201516001600160ff1b0381169060ff1c601b01612f9a565b8351604103612f8f5750505060208101516040820151606083015160001a601b8114801590612f6757508060ff16601c14155b15612f8a57604051630f801e8560e11b815260ff82166004820152602401610ddd565b612f9a565b6127f6868686613bf2565b6040805160008082526020820180845288905260ff841692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa158015612fee573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661302257604051638baa579f60e01b815260040160405180910390fd5b866001600160a01b0316816001600160a01b03161461267c5761267c878787613bf2565b6000428411806130565750428311155b1561308257811561307a576040516337bf561360e11b815260040160405180910390fd5b506000610528565b5060019392505050565b60018360038111156130a0576130a0614671565b1180156130b65750336001600160a01b03821614155b80156130cb5750336001600160a01b03831614155b15611552576080880151511580156130e257508651155b156130f8576130f381868487613c69565b611552565b600061315682633313157060e01b88338d8c8e60405160240161311f959493929190615265565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613cb5565b90506131628187613cca565b505050505050505050565b60008360208301602084510281015b808210156131b9578151808411801561319c5781600052846020526131a5565b84600052816020525b50506040600020925060208201915061317c565b505083149050806117ef576040516309bde33960e01b815260040160405180910390fd5b6000845160058111156131f2576131f2614671565b0361320e57613209846080015185606001516132e6565b6117ef565b60018451600581111561322357613223614671565b036132425761320984602001518486608001518760600151868661383c565b60028451600581111561325757613257614671565b0361327b5761320984602001518486608001518760400151886060015187876127fe565b6117ef84602001518486608001518760400151886060015187876128d2565b60008789036132b5576132ae87878a612931565b90506132da565b6132d76132c388888c612931565b6132ce89898c612931565b87878787612981565b90505b98975050505050505050565b6132ef81613877565b600080600080600085875af19050806133355761330a613d24565b60405163470c7c1d60e01b81526001600160a01b038416600482015260248101839052604401610ddd565b505050565b613342613ed1565b8251600003613366578360405163375c24c160e01b8152600401610ddd91906153eb565b600084600181111561337a5761337a614671565b0361338f5761338a858483613a68565b6133a8565b61339a8584836138bc565b336020820152604081018290525b8051606001516000036105a557602081015181516001600160a01b03909116608090910152949350505050565b610244356102606102643560400201146004356020146102243561024014161680613413576040516339f3e3fd60e01b815260040160405180910390fd5b50565b600183600381111561342a5761342a614671565b1180156134405750336001600160a01b03821614155b80156134555750336001600160a01b03831614155b15611e0357611e0381868487613c69565b6000838152600260209081526040918290208251608081018452905460ff808216151583526101008204161515928201929092526001600160781b03620100008304811693820193909352600160881b90910490911660608201526134ce84826001806116e7565b5080516134e0576134e08385846117a0565b5050506000908152600260205260409020710100000000000000000000000000000100019055565b6040805160ff60a01b7f000000000000000000000000000000000000000000000000000000000000000017600090815260208681527f000000000000000000000000000000000000000000000000000000000000000084526055600b20929093528080526001600160a01b039091169181848682865af19050806135b25761358e613d24565b60405163344f54f560e21b81526001600160a01b0383166004820152602401610ddd565b6000516001600160e01b03198116632671a55160e11b146127f657604051630e7ccd9360e11b8152600481018790526001600160a01b0384166024820152604401610ddd565b833b61361357632f8aeb3960e11b6000528360045260246000fd5b6040516323b872dd60e01b6000528360045282602452816044526000806064600080895af1806136aa573d156136845760203d0460208304816003028183111561366b57818303600302610200838002858002030401015b5a602082011015613680573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b6136d457632f8aeb3960e11b6000528460045260246000fd5b60405160805160a05160c051637921219560e11b6000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af180613781573d1561375c5760203d0460208604816003028183111561374357818303600302610200838002858002030401015b5a602082011015613758573d6000803e3d6000fd5b5050505b63f486bc8760e01b600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b60006137aa836020015190565b90508181146133355761333583612908565b600060208851036137f75750604080885260208089018a9052632671a55160e11b918901919091526044880152600160648801819052613806565b50606487018051600101908190525b603c60c082028901038781528660208201528560408201528460608201528360808201528260a082015250505050505050505050565b61384583613877565b61384f818361379d565b816138655761386086868686613d69565b6127f6565b6127f68282600189898960008a6137bc565b806000036134135760405163246cf94560e21b815260040160405180910390fd5b6064810151604082019060c0026044016138b3848383613508565b50506020905250565b6138e8565b637fda727960e01b60005260206000fd5b634e487b7160e01b600052601160045260246000fd5b60208201805151845181106138ff576138ff6138c1565b6020810260208601015160608151015160208451015181518110613925576139256138c1565b6020810260208301015160008060208601511561394c575050606081018051600090915280155b885183518152602084015160208201526040840151604082015260a084015160808201526060812060208c51028c015b808b1015613a235760208b019a508a515199508d518a1061399f5761399f6138c1565b60208a0260208f010151985060208901511561397c57606089510151975060208b5101519650875187106139d5576139d56138c1565b602087026020890101519550606086018051860181511587821060011b1786179550809650506000815250606086208214608084015160a08801511416613a1e57613a1e6138c1565b61397c565b50506060018290528060018114613a415760028114613a5257613a5a565b63246cf94560e21b60005260206000fd5b613a5a6138d2565b505050505050505050505050565b6020820180515184518110613a7f57613a7f6138c1565b602081026020860101518051604081015160208551015181518110613aa657613aa66138c1565b60208102602083010151600080602087015115613acd575050606081018051600090915280155b8951336080820152835181526020840151602082015260408401516040820152865160208c015261012087015160408c015260608120905060208c51028c015b808b1015613bc15760208b019a508a515199508d518a10613b3057613b306138c1565b60208a0260208f0101519850602089015115613b0d57885197506040880151965060208b510151955086518610613b6957613b696138c1565b602086026020880101519450606085018051850181511586821060011b178517945080955050600081525060608520821460408d01516101208a01511460208e01518a51141616613bbc57613bbc6138c1565b613b0d565b50508160608b5101528060018114613a415760028103613be357613be36138d2565b50505050505050505050505050565b6000613c1384631626ba7e60e01b858560405160240161311f9291906153f9565b905080613c3b57613c22613d24565b604051634f7fb80d60e01b815260040160405180910390fd5b613c4b630b135d3f60e11b613e6f565b156117ef57604051632057875960e21b815260040160405180910390fd5b604051602481018490523360448201526001600160a01b038316606482015260848101829052600090613ca99086906303874c7760e21b9060a40161311f565b9050611e038185613cca565b6000806000835160208501865afa9392505050565b81613cf357613cd7613d24565b604051633ed4053f60e21b815260048101829052602401610ddd565b613d036303874c7760e21b613e6f565b1561292d57604051633ed4053f60e21b815260048101829052602401610ddd565b3d156116aa5760203d046020604051048160030281831115613d5457818303600302610200838002858002030401015b5a602082011015613335573d6000803e3d6000fd5b6040516323b872dd60e01b600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d15158116613e5f5780873b151516613e5f5780613e4a5781613e29573d15613e035760203d04602084048160030281831115613dea57818303600302610200838002858002030401015b5a602082011015613dff573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005286600452856024528460445260006064528360845260a46000fd5b639889192360e01b6000528660045285602452846044528360645260846000fd5b632f8aeb3960e11b6000528660045260246000fd5b5050604052505060006060525050565b60008060203d03613e855760206000803e506000515b6001600160e01b031990811692169190911415919050565b6040518060a00160405280613eb0613f14565b81526000602082018190526040820152606080820181905260809091015290565b60408051610100810182526000606082018181526080830182905260a0830182905260c0830182905260e083018290528252602082018190529181019190915290565b60405180610160016040528060006001600160a01b0316815260200160006001600160a01b03168152602001606081526020016060815260200160006003811115613f6157613f61614671565b815260006020820181905260408201819052606082018190526080820181905260a0820181905260c09091015290565b6000815180845260005b81811015613fb757602081850181015186830182015201613f9b565b81811115613fc9576000602083870101525b50601f01601f19169290920160200192915050565b6020815260006105286020830184613f91565b6001600160a01b038116811461341357600080fd5b803561401181613ff1565b919050565b60006020828403121561402857600080fd5b813561052881613ff1565b60006020828403121561404557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156140845761408461404c565b60405290565b60405161016081016001600160401b03811182821017156140845761408461404c565b604051601f8201601f191681016001600160401b03811182821017156140d5576140d561404c565b604052919050565b60006001600160401b038211156140f6576140f661404c565b5060051b60200190565b80356006811061401157600080fd5b600060a0828403121561412157600080fd5b614129614062565b905061413482614100565b8152602082013561414481613ff1565b8060208301525060408201356040820152606082013560608201526080820135608082015292915050565b600082601f83011261418057600080fd5b81356020614195614190836140dd565b6140ad565b82815260a092830285018201928282019190878511156141b457600080fd5b8387015b858110156141d7576141ca898261410f565b84529284019281016141b8565b5090979650505050505050565b600060c082840312156141f657600080fd5b60405160c081018181106001600160401b03821117156142185761421861404c565b60405290508061422783614100565b8152602083013561423781613ff1565b8060208301525060408301356040820152606083013560608201526080830135608082015260a083013561426a81613ff1565b60a0919091015292915050565b600082601f83011261428857600080fd5b81356020614298614190836140dd565b82815260c092830285018201928282019190878511156142b757600080fd5b8387015b858110156141d7576142cd89826141e4565b84529284019281016142bb565b80356004811061401157600080fd5b600061016082840312156142fc57600080fd5b61430461408a565b905061430f82614006565b815261431d60208301614006565b602082015260408201356001600160401b038082111561433c57600080fd5b6143488583860161416f565b6040840152606084013591508082111561436157600080fd5b5061436e84828501614277565b606083015250614380608083016142da565b608082015260a082013560a082015260c082013560c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525092915050565b80356001600160781b038116811461401157600080fd5b600082601f8301126143f557600080fd5b81356001600160401b0381111561440e5761440e61404c565b614421601f8201601f19166020016140ad565b81815284602083860101111561443657600080fd5b816020850160208301376000918101602001919091529392505050565b600060a0828403121561446557600080fd5b61446d614062565b905081356001600160401b038082111561448657600080fd5b614492858386016142e9565b83526144a0602085016143cd565b60208401526144b1604085016143cd565b604084015260608401359150808211156144ca57600080fd5b6144d6858386016143e4565b606084015260808401359150808211156144ef57600080fd5b506144fc848285016143e4565b60808301525092915050565b600082601f83011261451957600080fd5b81356020614529614190836140dd565b82815260059290921b8401810191818101908684111561454857600080fd5b8286015b848110156145875780356001600160401b0381111561456b5760008081fd5b6145798986838b0101614453565b84525091830191830161454c565b509695505050505050565b60008083601f8401126145a457600080fd5b5081356001600160401b038111156145bb57600080fd5b6020830191508360208260051b85010111156145d657600080fd5b9250929050565b6000806000806000606086880312156145f557600080fd5b85356001600160401b038082111561460c57600080fd5b61461889838a01614508565b9650602088013591508082111561462e57600080fd5b61463a89838a01614592565b9096509450604088013591508082111561465357600080fd5b5061466088828901614592565b969995985093965092949392505050565b634e487b7160e01b600052602160045260246000fd5b6006811061469757614697614671565b9052565b6146a6828251614687565b6020818101516001600160a01b0390811691840191909152604080830151908401526060808301519084015260809182015116910152565b600081518084526020808501945080840160005b8381101561473457815161470788825161469b565b808401516001600160a01b031660a08901526040015160c088015260e090960195908201906001016146f2565b509495945050505050565b60208152600061052860208301846146de565b60006020828403121561476457600080fd5b81356001600160401b0381111561477a57600080fd5b8201610160818503121561052857600080fd5b600080602083850312156147a057600080fd5b82356001600160401b038111156147b657600080fd5b6147c285828601614592565b90969095509350505050565b600080600080604085870312156147e457600080fd5b84356001600160401b03808211156147fb57600080fd5b61480788838901614592565b9096509450602087013591508082111561482057600080fd5b5061482d87828801614592565b95989497509550505050565b6000806040838503121561484c57600080fd5b82356001600160401b0381111561486257600080fd5b83016040818603121561487457600080fd5b946020939093013593505050565b6000806000806060858703121561489857600080fd5b84356001600160401b03808211156148af57600080fd5b9086019060a082890312156148c357600080fd5b909450602086013590808211156148d957600080fd5b506148e687828801614592565b9598909750949560400135949350505050565b60008060008060008060008060a0898b03121561491557600080fd5b88356001600160401b038082111561492c57600080fd5b6149388c838d01614592565b909a50985060208b013591508082111561495157600080fd5b61495d8c838d01614592565b909850965060408b013591508082111561497657600080fd5b506149838b828c01614592565b999c989b509699959896976060870135966080013595509350505050565b604080825283519082018190526000906020906060840190828701845b828110156149dc5781511515845292840192908401906001016149be565b5050508381038285015261037781866146de565b606081526000614a036060830186613f91565b6020830194909452506001600160a01b0391909116604090910152919050565b600060208284031215614a3557600080fd5b81356001600160401b03811115614a4b57600080fd5b8201610240818503121561052857600080fd5b600080600080600080600080600060c08a8c031215614a7c57600080fd5b89356001600160401b0380821115614a9357600080fd5b614a9f8d838e01614508565b9a5060208c0135915080821115614ab557600080fd5b614ac18d838e01614592565b909a50985060408c0135915080821115614ada57600080fd5b614ae68d838e01614592565b909850965060608c0135915080821115614aff57600080fd5b50614b0c8c828d01614592565b9a9d999c50979a96999598959660808101359660a09091013595509350505050565b6000614b3c614190846140dd565b83815260208082019190600586811b860136811115614b5a57600080fd5b865b81811015614c555780356001600160401b0380821115614b7c5760008081fd5b818a01915060a08236031215614b925760008081fd5b614b9a614062565b823581528683013560028110614bb05760008081fd5b81880152604083810135908201526060808401359082015260808084013583811115614bdc5760008081fd5b939093019236601f850112614bf357600092508283fd5b83359250614c03614190846140dd565b83815292871b84018801928881019036851115614c205760008081fd5b948901945b84861015614c3e57853582529489019490890190614c25565b918301919091525088525050948301948301614b5c565b5092979650505050505050565b6000808335601e19843603018112614c7957600080fd5b8301803591506001600160401b03821115614c9357600080fd5b602001915060a0810236038213156145d657600080fd5b600060a08284031215614cbc57600080fd5b610528838361410f565b6000808335601e19843603018112614cdd57600080fd5b8301803591506001600160401b03821115614cf757600080fd5b602001915060c0810236038213156145d657600080fd5b600060c08284031215614d2057600080fd5b61052883836141e4565b600060208284031215614d3c57600080fd5b610528826142da565b600061035a3683614453565b634e487b7160e01b600052603260045260246000fd5b60008235603e19833603018112614d7d57600080fd5b9190910192915050565b6000823561015e19833603018112614d7d57600080fd5b600061035a36836142e9565b6000808335601e19843603018112614dc157600080fd5b8301803591506001600160401b03821115614ddb57600080fd5b6020019150368190038213156145d657600080fd5b600060408284031215614e0257600080fd5b604051604081018181106001600160401b0382111715614e2457614e2461404c565b604052823581526020928301359281019290925250919050565b6000614e4c614190846140dd565b80848252602080830192508560051b850136811115614e6a57600080fd5b855b81811015614f045780356001600160401b03811115614e8b5760008081fd5b870136601f820112614e9d5760008081fd5b8035614eab614190826140dd565b81815260069190911b82018501908581019036831115614ecb5760008081fd5b928601925b82841015614ef457614ee23685614df0565b82528682019150604084019350614ed0565b8852505050938201938201614e6c565b50919695505050505050565b6000808335601e19843603018112614f2757600080fd5b8301803591506001600160401b03821115614f4157600080fd5b6020019150600681901b36038213156145d657600080fd5b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615614f8957614f89614f59565b500290565b60008219821115614fa157614fa1614f59565b500190565b600082821015614fb857614fb8614f59565b500390565b600081518084526020808501945080840160005b8381101561473457614fe487835161469b565b60a0969096019590820190600101614fd1565b60006080808301878452602060018060a01b03808916828701526040848188015283895180865260a089019150848b01955060005b8181101561506d578651615041848251614687565b80870151861684880152848101518585015260609081015190840152958501959187019160010161502c565b50508781036060890152615081818a614fbd565b9c9b505050505050505050505050565b6000604082840312156150a357600080fd5b6105288383614df0565b600081518084526020808501945080840160005b838110156147345781516150d6888251614687565b838101516001600160a01b03168885015260408082015190890152606080820151908901526080908101519088015260a090960195908201906001016150c1565b600081518084526020808501945080840160005b83811015614734578151615140888251614687565b808401516001600160a01b0390811689860152604080830151908a0152606080830151908a0152608080830151908a015260a091820151169088015260c0909601959082019060010161512b565b6004811061469757614697614671565b600081518084526020808501945080840160005b83811015614734578151875295820195908201906001016151b2565b6002811061469757614697614671565b600082825180855260208086019550808260051b84010181860160005b848110156141d757601f19868403018952815160a08151855285820151615224878701826151ce565b5060408281015190860152606080830151908601526080918201519185018190526152518186018361519e565b9a86019a94505050908301906001016151fb565b85815260018060a01b038516602082015260a060408201526000610140855160a08085015261529f82850182516001600160a01b03169052565b60208101516101606152bb818701836001600160a01b03169052565b6040830151915080610180870152506152d86102a08601826150ad565b9050606082015161013f19868303016101a08701526152f78282615117565b915050608082015161530d6101c087018261518e565b5060a08201516101e086015260c082015161020086015260e082015161022086015261010080830151610240870152610120808401516102608801528484015161028088015260208a0151945061536f60c08801866001600160781b03169052565b60408a01516001600160781b031660e088015260608a0151878403609f19908101848a015290955093506153a38386613f91565b945060808a0151925083878603018188015250506153c18382613f91565b9250505082810360608401526153d7818661519e565b905082810360808401526132da81856151de565b6020810161035a82846151ce565b8281526040602082015260006105a56040830184613f9156fea2646970667358221220337a1990bf93bd9b7c70054f5e27e0da8850c8fe4a29b2b59e75a7923094510f64736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xE8 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA8174404 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xF47B7740 GT PUSH2 0x59 JUMPI DUP1 PUSH4 0xF47B7740 EQ PUSH2 0x2C7 JUMPI DUP1 PUSH4 0xFB0F3EE1 EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0xFB4C2AF9 EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0xFD9F1E10 EQ PUSH2 0x311 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0xA8174404 EQ PUSH2 0x26D JUMPI DUP1 PUSH4 0xB3A34C4C EQ PUSH2 0x280 JUMPI DUP1 PUSH4 0xDF7B0DAC EQ PUSH2 0x293 JUMPI DUP1 PUSH4 0xED98A574 EQ PUSH2 0x2A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x55944A42 GT PUSH2 0xC6 JUMPI DUP1 PUSH4 0x55944A42 EQ PUSH2 0x1E8 JUMPI DUP1 PUSH4 0x627CDCB9 EQ PUSH2 0x208 JUMPI DUP1 PUSH4 0x79DF72BD EQ PUSH2 0x21D JUMPI DUP1 PUSH4 0x88147732 EQ PUSH2 0x23D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xED JUMPI DUP1 PUSH4 0x2D0335AB EQ PUSH2 0x118 JUMPI DUP1 PUSH4 0x46423AA7 EQ PUSH2 0x146 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x102 PUSH2 0x331 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x3FDE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x124 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x133 CALLDATASIZE PUSH1 0x4 PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x340 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x152 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1C6 PUSH2 0x161 CALLDATASIZE PUSH1 0x4 PUSH2 0x4033 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x80 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP1 DUP5 MSTORE PUSH2 0x100 DUP4 DIV SWAP1 SWAP2 AND ISZERO ISZERO SWAP4 DUP4 ADD DUP5 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB PUSH3 0x10000 DUP4 DIV DUP2 AND SWAP6 DUP5 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x88 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND PUSH1 0x60 SWAP1 SWAP3 ADD DUP3 SWAP1 MSTORE SWAP4 SWAP2 SWAP3 SWAP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP5 ISZERO ISZERO DUP6 MSTORE SWAP3 ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE SWAP2 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x1FB PUSH2 0x1F6 CALLDATASIZE PUSH1 0x4 PUSH2 0x45DD JUMP JUMPDEST PUSH2 0x360 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP2 SWAP1 PUSH2 0x473F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x214 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x381 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x138 PUSH2 0x238 CALLDATASIZE PUSH1 0x4 PUSH2 0x4752 JUMP JUMPDEST PUSH2 0x38B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x249 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x258 CALLDATASIZE PUSH1 0x4 PUSH2 0x478D JUMP JUMPDEST PUSH2 0x51C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x10F JUMP JUMPDEST PUSH2 0x1FB PUSH2 0x27B CALLDATASIZE PUSH1 0x4 PUSH2 0x47CE JUMP JUMPDEST PUSH2 0x52F JUMP JUMPDEST PUSH2 0x25D PUSH2 0x28E CALLDATASIZE PUSH1 0x4 PUSH2 0x4839 JUMP JUMPDEST PUSH2 0x5AD JUMP JUMPDEST PUSH2 0x25D PUSH2 0x2A1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4882 JUMP JUMPDEST PUSH2 0x61E JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x2B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x48F9 JUMP JUMPDEST PUSH2 0x63C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP3 SWAP2 SWAP1 PUSH2 0x49A1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2DC PUSH2 0x6C5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x10F SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x49F0 JUMP JUMPDEST PUSH2 0x25D PUSH2 0x2F9 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A23 JUMP JUMPDEST PUSH2 0x6DD JUMP JUMPDEST PUSH2 0x2B9 PUSH2 0x30C CALLDATASIZE PUSH1 0x4 PUSH2 0x4A5E JUMP JUMPDEST PUSH2 0x6E8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x31D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x32C CALLDATASIZE PUSH1 0x4 PUSH2 0x478D JUMP JUMPDEST PUSH2 0x716 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x33B PUSH2 0x722 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x377 DUP7 PUSH2 0x370 DUP7 DUP9 PUSH2 0x4B2E JUMP JUMPDEST DUP6 DUP6 PUSH2 0x73B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x33B PUSH2 0x756 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x160 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x35A SWAP1 DUP1 PUSH2 0x3AC PUSH1 0x20 DUP7 ADD DUP7 PUSH2 0x4016 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x20 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3CD SWAP2 SWAP1 PUSH2 0x4016 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3E8 PUSH1 0x40 DUP7 ADD DUP7 PUSH2 0x4C62 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x434 JUMPI PUSH2 0x425 PUSH1 0xA0 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x4CAA JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x408 JUMP JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x20 ADD PUSH2 0x44C PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0x4CC6 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x498 JUMPI PUSH2 0x489 PUSH1 0xC0 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x4D0E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x46C JUMP JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x20 ADD PUSH2 0x4B3 PUSH1 0xA0 DUP7 ADD PUSH1 0x80 DUP8 ADD PUSH2 0x4D2A JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x4C4 JUMPI PUSH2 0x4C4 PUSH2 0x4671 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xA0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xC0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xE0 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x100 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH2 0x120 ADD CALLDATALOAD DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP1 PUSH1 0x60 ADD SWAP1 PUSH2 0x50D SWAP2 SWAP1 PUSH2 0x4CC6 JUMP JUMPDEST SWAP1 SWAP2 MSTORE POP PUSH2 0x140 DUP5 ADD CALLDATALOAD PUSH2 0x7B3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 DUP4 DUP4 PUSH2 0x8F9 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x5A2 PUSH2 0x53E DUP7 DUP7 PUSH2 0xAB5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH2 0x59A JUMP JUMPDEST PUSH2 0x587 PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x554 JUMPI SWAP1 POP JUMPDEST POP DUP6 DUP6 PUSH2 0x73B JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 PUSH2 0x5BB DUP5 PUSH2 0xB70 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH2 0x617 JUMP JUMPDEST PUSH2 0x604 PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x5D1 JUMPI SWAP1 POP JUMPDEST POP DUP5 PUSH2 0xC1B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5A2 PUSH2 0x62C DUP7 PUSH2 0x4D45 JUMP JUMPDEST PUSH2 0x636 DUP6 DUP8 PUSH2 0x4B2E JUMP JUMPDEST DUP5 PUSH2 0xC1B JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x6B4 PUSH2 0x64C DUP12 DUP12 PUSH2 0xAB5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE SWAP1 PUSH2 0x6A8 JUMP JUMPDEST PUSH2 0x695 PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x662 JUMPI SWAP1 POP JUMPDEST POP DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xD0C JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0x6D2 PUSH2 0xD4B JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP1 SWAP2 SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35A DUP3 PUSH2 0xDAA JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0x704 DUP12 PUSH2 0x6F9 DUP12 DUP14 PUSH2 0x4B2E JUMP JUMPDEST DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0xD0C JUMP JUMPDEST SWAP2 POP SWAP2 POP SWAP10 POP SWAP10 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x528 DUP4 DUP4 PUSH2 0x1044 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x20 PUSH1 0x0 MSTORE PUSH8 0x7536561706F7274 PUSH1 0x27 MSTORE PUSH1 0x60 PUSH1 0x0 RETURN JUMPDEST PUSH1 0x60 PUSH2 0x74B DUP6 DUP6 PUSH1 0x1 DUP9 MLOAD PUSH2 0x1245 JUMP JUMPDEST PUSH2 0x5A2 DUP6 DUP5 DUP5 PUSH2 0x155C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x760 PUSH2 0x1687 JUMP JUMPDEST POP CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD SWAP1 SWAP3 ADD SWAP2 DUP3 SWAP1 SSTORE SWAP2 MLOAD DUP2 DUP2 MSTORE SWAP1 SWAP3 SWAP2 PUSH32 0x7AB0FC7DE8910A6100B24DF423C3D0835534506DCA9473D30C3E7DF51241B2CF SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 SWAP1 JUMP JUMPDEST PUSH2 0x140 DUP3 ADD MLOAD PUSH1 0x40 DUP1 MLOAD SWAP1 DUP5 ADD MLOAD DUP1 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 PUSH32 0x0 SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x820 JUMPI DUP3 MLOAD PUSH1 0x1F NOT ADD DUP1 MLOAD DUP7 DUP3 MSTORE PUSH1 0xC0 DUP3 KECCAK256 DUP7 MSTORE SWAP1 MSTORE PUSH1 0x20 SWAP4 DUP5 ADD SWAP4 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x7F3 JUMP JUMPDEST POP PUSH1 0x20 DUP2 MUL PUSH1 0x40 MLOAD KECCAK256 SWAP5 POP POP POP POP PUSH1 0x0 PUSH32 0x0 SWAP2 POP PUSH1 0x40 MLOAD PUSH1 0x20 PUSH1 0x60 DUP10 ADD MLOAD ADD PUSH1 0x0 JUMPDEST DUP7 DUP2 LT ISZERO PUSH2 0x88E JUMPI DUP2 MLOAD PUSH1 0x1F NOT ADD DUP1 MLOAD DUP7 DUP3 MSTORE PUSH1 0xE0 DUP3 KECCAK256 DUP6 MSTORE SWAP1 MSTORE PUSH1 0x20 SWAP3 DUP4 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x861 JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP8 MUL SWAP1 KECCAK256 PUSH1 0x1F NOT DUP11 ADD DUP1 MLOAD PUSH32 0x0 DUP3 MSTORE SWAP3 DUP12 ADD DUP1 MLOAD SWAP8 DUP2 MSTORE PUSH1 0x60 DUP13 ADD DUP1 MLOAD SWAP4 DUP2 MSTORE PUSH2 0x140 SWAP1 SWAP13 ADD SWAP11 DUP12 MSTORE PUSH2 0x180 DUP3 KECCAK256 SWAP4 SWAP1 SWAP2 MSTORE SWAP6 SWAP1 SWAP6 MSTORE SWAP4 SWAP1 SWAP8 MSTORE POP POP SWAP3 MSTORE POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x903 PUSH2 0x1687 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xAA8 JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x924 JUMPI PUSH2 0x924 PUSH2 0x4D51 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x936 SWAP2 SWAP1 PUSH2 0x4D67 JUMP JUMPDEST SWAP1 POP CALLDATASIZE PUSH2 0x943 DUP3 DUP1 PUSH2 0x4D87 JUMP JUMPDEST SWAP1 POP PUSH2 0x952 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x4016 JUMP JUMPDEST SWAP5 POP PUSH2 0x965 PUSH2 0x960 DUP3 PUSH2 0x4D9E JUMP JUMPDEST PUSH2 0x16AC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x80 DUP2 ADD DUP4 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB PUSH3 0x10000 DUP5 DIV DUP2 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x88 SHL SWAP1 SWAP3 DIV AND PUSH1 0x60 DUP3 ADD MSTORE SWAP2 SWAP8 POP PUSH2 0x9CF SWAP1 DUP9 SWAP1 DUP4 SWAP1 PUSH1 0x1 PUSH2 0x16E7 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0xA9A JUMPI PUSH2 0xA22 DUP7 DUP9 PUSH2 0x9E8 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x4DAA 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 0x17A0 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0xA4D SWAP2 DUP5 ADD SWAP1 DUP5 ADD PUSH2 0x4016 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xFDE361574A066B44B3B5FE98A87108B7565E327327954C4FAEEA56A4E6491A0A DUP10 PUSH1 0x40 MLOAD PUSH2 0xA91 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST DUP4 PUSH1 0x1 ADD SWAP4 POP POP POP POP PUSH2 0x909 JUMP JUMPDEST POP PUSH1 0x1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xAD0 JUMPI PUSH2 0xAD0 PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xB09 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xAF6 PUSH2 0x3E9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xAEE JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xB68 JUMPI PUSH2 0xB43 DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0xB2C JUMPI PUSH2 0xB2C PUSH2 0x4D51 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0xB3E SWAP2 SWAP1 PUSH2 0x4D67 JUMP JUMPDEST PUSH2 0xB70 JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xB55 JUMPI PUSH2 0xB55 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xB0F JUMP JUMPDEST POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xB78 PUSH2 0x3E9D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xA0 DUP2 ADD SWAP1 SWAP2 MSTORE DUP1 PUSH2 0xB8E DUP5 DUP1 PUSH2 0x4D87 JUMP JUMPDEST PUSH2 0xB97 SWAP1 PUSH2 0x4D9E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP1 PUSH1 0x20 ADD SWAP1 PUSH2 0xBCC SWAP2 SWAP1 PUSH2 0x4DAA 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 DUP3 SWAP1 MSTORE POP SWAP4 DUP6 MSTORE POP POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP1 SWAP3 MSTORE SWAP3 DUP4 MSTORE SWAP1 SWAP3 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC25 PUSH2 0x17F5 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xC39 DUP9 DUP9 PUSH1 0x1 DUP8 PUSH2 0x1804 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP4 SWAP7 POP SWAP2 SWAP5 POP SWAP3 POP PUSH1 0x0 SWAP2 SWAP1 DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0xC61 PUSH2 0x3E9D JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xC59 JUMPI SWAP1 POP POP SWAP1 POP DUP9 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xC8A JUMPI PUSH2 0xC8A PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH2 0xC9F DUP2 DUP10 PUSH2 0x1A8D JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xCB4 JUMPI PUSH2 0xCB4 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH2 0xCD4 DUP2 DUP6 DUP6 DUP5 PUSH2 0x120 ADD MLOAD DUP13 PUSH2 0x1E0A JUMP JUMPDEST PUSH2 0xCF2 DUP6 DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD CALLER DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD PUSH2 0x200E JUMP JUMPDEST PUSH2 0xCFC PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH2 0xD1C DUP11 DUP11 PUSH1 0x0 DUP7 PUSH2 0x1245 JUMP JUMPDEST PUSH2 0xD3A DUP11 PUSH2 0xD2A DUP10 DUP12 PUSH2 0x4E3E JUMP JUMPDEST PUSH2 0xD34 DUP9 DUP11 PUSH2 0x4E3E JUMP JUMPDEST DUP8 PUSH2 0x2073 JUMP JUMPDEST SWAP1 SWAP12 SWAP1 SWAP11 POP SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 PUSH2 0xD58 PUSH2 0x224F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP4 POP PUSH32 0x0 SWAP3 POP PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY POP POP PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP4 ADD MSTORE POP SWAP4 SWAP2 SWAP3 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH2 0x124 CALLDATALOAD SWAP1 DUP2 DIV SWAP1 PUSH1 0x3 AND PUSH1 0x1 DUP3 GT CALLVALUE ISZERO DUP2 EQ DUP1 PUSH2 0xDE6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA61BE9F PUSH1 0xE4 SHL DUP2 MSTORE CALLVALUE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x3 DUP7 GT PUSH1 0xA0 DUP2 MUL PUSH1 0x24 ADD CALLDATALOAD SWAP4 POP PUSH1 0x2 DUP8 EQ PUSH1 0x2 DUP9 GT PUSH1 0x2 DUP10 SUB MUL ADD SWAP3 POP PUSH1 0x1 DUP4 ADD DUP2 MUL PUSH1 0x2 DUP7 ISZERO MUL DUP9 ADD SUB SWAP2 POP POP PUSH2 0xE29 DUP9 DUP7 DUP5 DUP8 DUP8 DUP7 PUSH2 0x2345 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE3B PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x4016 JUMP JUMPDEST SWAP1 POP PUSH2 0x1C4 PUSH1 0x3 DUP9 GT PUSH1 0x20 MUL ADD CALLDATALOAD PUSH1 0x0 DUP7 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xE5D JUMPI PUSH2 0xE5D PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0xEA9 JUMPI PUSH2 0xE88 DUP4 PUSH2 0xE76 PUSH1 0xC0 DUP14 ADD PUSH1 0xA0 DUP15 ADD PUSH2 0x4016 JUMP JUMPDEST DUP5 CALLER DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP16 PUSH1 0xE0 ADD CALLDATALOAD DUP8 PUSH2 0x2685 JUMP JUMPDEST PUSH2 0xEA4 PUSH1 0x40 DUP12 ADD CALLDATALOAD DUP4 PUSH2 0xE9F PUSH2 0x200 DUP15 ADD DUP15 PUSH2 0x4F10 JUMP JUMPDEST PUSH2 0x2739 JUMP JUMPDEST PUSH2 0xCFC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x0 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x2 DUP10 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xEDE JUMPI PUSH2 0xEDE PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0xF3E JUMPI PUSH2 0xF09 PUSH2 0xEF6 PUSH1 0xC0 DUP14 ADD PUSH1 0xA0 DUP15 ADD PUSH2 0x4016 JUMP JUMPDEST DUP5 CALLER DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP16 PUSH1 0xE0 ADD CALLDATALOAD DUP8 DUP8 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0xF39 CALLER DUP5 PUSH2 0xF1B PUSH1 0x20 DUP16 ADD DUP16 PUSH2 0x4016 JUMP JUMPDEST DUP15 PUSH1 0x40 ADD CALLDATALOAD DUP16 DUP1 PUSH2 0x200 ADD SWAP1 PUSH2 0xF31 SWAP2 SWAP1 PUSH2 0x4F10 JUMP JUMPDEST PUSH1 0x0 DUP9 PUSH2 0x284B JUMP JUMPDEST PUSH2 0x102A JUMP JUMPDEST PUSH1 0x3 DUP10 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xF52 JUMPI PUSH2 0xF52 PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0xF7D JUMPI PUSH2 0xF09 PUSH2 0xF6A PUSH1 0xC0 DUP14 ADD PUSH1 0xA0 DUP15 ADD PUSH2 0x4016 JUMP JUMPDEST DUP5 CALLER DUP15 PUSH1 0xC0 ADD CALLDATALOAD DUP16 PUSH1 0xE0 ADD CALLDATALOAD DUP8 DUP8 PUSH2 0x28D2 JUMP JUMPDEST PUSH1 0x4 DUP10 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0xF91 JUMPI PUSH2 0xF91 PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0xFEF JUMPI PUSH2 0xFB9 PUSH2 0xFA6 PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x4016 JUMP JUMPDEST CALLER DUP6 DUP15 PUSH1 0x20 ADD CALLDATALOAD DUP16 PUSH1 0x40 ADD CALLDATALOAD DUP8 DUP8 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0xF39 DUP4 CALLER DUP14 PUSH1 0xA0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xFD1 SWAP2 SWAP1 PUSH2 0x4016 JUMP JUMPDEST DUP15 PUSH1 0xE0 ADD CALLDATALOAD DUP16 DUP1 PUSH2 0x200 ADD SWAP1 PUSH2 0xFE7 SWAP2 SWAP1 PUSH2 0x4F10 JUMP JUMPDEST PUSH1 0x1 DUP9 PUSH2 0x284B JUMP JUMPDEST PUSH2 0x1012 PUSH2 0xFFF PUSH1 0x20 DUP14 ADD DUP14 PUSH2 0x4016 JUMP JUMPDEST CALLER DUP6 DUP15 PUSH1 0x20 ADD CALLDATALOAD DUP16 PUSH1 0x40 ADD CALLDATALOAD DUP8 DUP8 PUSH2 0x28D2 JUMP JUMPDEST PUSH2 0x102A DUP4 CALLER DUP14 PUSH1 0xA0 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xFD1 SWAP2 SWAP1 PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x1033 DUP2 PUSH2 0x2908 JUMP JUMPDEST POP POP PUSH1 0x1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x104E PUSH2 0x1687 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 DUP2 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xAA8 JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x106F JUMPI PUSH2 0x106F PUSH2 0x4D51 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x1081 SWAP2 SWAP1 PUSH2 0x4D87 JUMP JUMPDEST SWAP1 POP PUSH2 0x1090 PUSH1 0x20 DUP3 ADD DUP3 PUSH2 0x4016 JUMP JUMPDEST SWAP5 POP PUSH2 0x10A2 PUSH1 0x40 DUP3 ADD PUSH1 0x20 DUP4 ADD PUSH2 0x4016 JUMP JUMPDEST SWAP4 POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x10C6 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x10E4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x203B1CDD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x11D3 PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP1 PUSH1 0x40 ADD SWAP1 PUSH2 0x1123 SWAP2 SWAP1 PUSH2 0x4C62 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x116F JUMPI PUSH2 0x1160 PUSH1 0xA0 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x4CAA JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1143 JUMP JUMPDEST POP POP POP SWAP2 DUP4 MSTORE POP POP PUSH1 0x20 ADD PUSH2 0x1187 PUSH1 0x60 DUP7 ADD DUP7 PUSH2 0x4CC6 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x498 JUMPI PUSH2 0x11C4 PUSH1 0xC0 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x4D0E JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x11A7 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 DUP2 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0xFFFF NOT AND PUSH2 0x100 OR SWAP1 SSTORE MLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP8 AND SWAP2 SWAP1 DUP9 AND SWAP1 PUSH32 0x6BACC01DBE442496068F7D234EDD811F1A5F833243E0AEC824F86AB861F3C90D SWAP1 PUSH2 0x1233 SWAP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP PUSH1 0x1 ADD PUSH2 0x1054 JUMP JUMPDEST PUSH2 0x124D PUSH2 0x17F5 JUMP JUMPDEST DUP4 MLOAD PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1269 JUMPI PUSH2 0x1269 PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1292 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP2 MSTORE PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x14B1 JUMPI PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x12B8 JUMPI PUSH2 0x12B8 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP5 PUSH1 0x0 SUB PUSH2 0x12DD JUMPI PUSH1 0x0 PUSH1 0x20 SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 DUP2 ADD DUP3 MSTORE PUSH2 0x14A9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x12EE DUP5 DUP12 DUP12 DUP10 PUSH2 0x1804 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH1 0x1 DUP6 ADD DUP7 MSTORE DUP2 PUSH1 0x0 SUB PUSH2 0x1315 JUMPI POP POP PUSH1 0x0 PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x14A9 JUMP JUMPDEST DUP3 DUP7 DUP7 DUP2 MLOAD DUP2 LT PUSH2 0x1328 JUMPI PUSH2 0x1328 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP4 MLOAD PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0xC0 DUP3 ADD MLOAD PUSH1 0x40 SWAP1 SWAP3 ADD MLOAD PUSH1 0x0 NOT SWAP1 SWAP11 ADD SWAP10 SWAP1 SWAP2 DUP3 SWAP1 SUB SWAP1 TIMESTAMP DUP4 SWAP1 SUB SWAP1 DUP2 DUP4 SUB SWAP1 PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x13F5 JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x137B JUMPI PUSH2 0x137B PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1396 DUP11 DUP11 DUP5 PUSH1 0x80 ADD MLOAD PUSH2 0x2931 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x80 ADD MLOAD DUP3 PUSH1 0x60 ADD MLOAD SUB PUSH2 0x13B3 JUMPI PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x13C8 JUMP JUMPDEST PUSH2 0x13C2 DUP11 DUP11 DUP5 PUSH1 0x60 ADD MLOAD PUSH2 0x2931 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x13E3 SWAP1 DUP3 DUP9 DUP9 DUP12 PUSH1 0x0 PUSH2 0x2981 JUMP JUMPDEST PUSH1 0x60 SWAP1 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH1 0x1 ADD PUSH2 0x135E JUMP JUMPDEST POP DUP9 MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x149D JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x141C JUMPI PUSH2 0x141C PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1437 DUP12 DUP12 DUP5 PUSH1 0x80 ADD MLOAD PUSH2 0x2931 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x80 ADD MLOAD DUP3 PUSH1 0x60 ADD MLOAD SUB PUSH2 0x1454 JUMPI PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH2 0x1469 JUMP JUMPDEST PUSH2 0x1463 DUP12 DUP12 DUP5 PUSH1 0x60 ADD MLOAD PUSH2 0x2931 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE JUMPDEST PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x1484 SWAP1 DUP3 DUP10 DUP10 DUP13 PUSH1 0x1 PUSH2 0x2981 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH1 0xA0 DUP2 ADD MLOAD PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE PUSH1 0x1 ADD PUSH2 0x13FF JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x129C JUMP JUMPDEST POP PUSH2 0x14BC DUP7 DUP7 PUSH2 0x1A8D JUMP JUMPDEST DUP4 ISZERO CALLER MUL PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1552 JUMPI PUSH1 0x0 DUP1 SHL DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x14E1 JUMPI PUSH2 0x14E1 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SUB ISZERO PUSH2 0x154A JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1503 JUMPI PUSH2 0x1503 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH2 0x1548 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1526 JUMPI PUSH2 0x1526 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP3 PUSH1 0x0 ADD MLOAD DUP4 PUSH1 0x20 ADD MLOAD DUP7 DUP6 PUSH1 0x40 ADD MLOAD DUP7 PUSH1 0x60 ADD MLOAD PUSH2 0x200E JUMP JUMPDEST POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x14C3 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1577 JUMPI PUSH2 0x1577 PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x15B0 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x159D PUSH2 0x3ED1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1595 JUMPI SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 DUP1 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1665 JUMPI CALLDATASIZE DUP7 DUP7 DUP4 DUP2 DUP2 LT PUSH2 0x15D2 JUMPI PUSH2 0x15D2 PUSH2 0x4D51 JUMP JUMPDEST SWAP1 POP PUSH1 0x20 MUL DUP2 ADD SWAP1 PUSH2 0x15E4 SWAP2 SWAP1 PUSH2 0x4D67 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1608 DUP10 PUSH2 0x15F6 DUP5 DUP1 PUSH2 0x4F10 JUMP JUMPDEST PUSH2 0x1603 PUSH1 0x20 DUP8 ADD DUP8 PUSH2 0x4F10 JUMP JUMPDEST PUSH2 0x29DC JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x163A JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP PUSH2 0x165B JUMP JUMPDEST DUP1 DUP7 DUP6 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x164F JUMPI PUSH2 0x164F PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x15B7 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x1673 JUMPI DUP1 DUP4 MLOAD SUB DUP4 MSTORE JUMPDEST POP PUSH2 0x167E DUP6 DUP4 PUSH2 0x2CCD JUMP JUMPDEST POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SLOAD EQ PUSH2 0x16AA JUMPI PUSH1 0x40 MLOAD PUSH4 0x7FA8A987 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH2 0x16C2 DUP3 PUSH1 0x60 ADD MLOAD MLOAD DUP4 PUSH2 0x140 ADD MLOAD PUSH2 0x2EE2 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x35A SWAP1 DUP4 SWAP1 PUSH2 0x7B3 JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x20 ADD MLOAD ISZERO PUSH2 0x171D JUMPI DUP2 ISZERO PUSH2 0x1715 JUMPI PUSH1 0x40 MLOAD PUSH4 0x694555D PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDDD JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x5A5 JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND ISZERO PUSH2 0x1795 JUMPI DUP3 ISZERO PUSH2 0x1752 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEE9E0E63 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDDD JUMP JUMPDEST DUP4 PUSH1 0x60 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND DUP5 PUSH1 0x40 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND LT PUSH2 0x1795 JUMPI DUP2 ISZERO PUSH2 0x1715 JUMPI PUSH1 0x40 MLOAD PUSH4 0x10FDA3E1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDDD JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SUB PUSH2 0x17B5 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17E2 PUSH2 0x17C2 PUSH2 0x224F JUMP JUMPDEST PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x22 DUP6 DUP2 MSTORE PUSH1 0x42 DUP3 KECCAK256 SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x17EF DUP5 DUP3 DUP5 PUSH2 0x2F03 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x17FD PUSH2 0x1687 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP8 PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH2 0x1824 DUP2 PUSH1 0xA0 ADD MLOAD DUP3 PUSH1 0xC0 ADD MLOAD DUP9 PUSH2 0x3046 JUMP JUMPDEST PUSH2 0x1838 JUMPI POP PUSH1 0x0 SWAP3 POP DUP3 SWAP2 POP DUP2 SWAP1 POP PUSH2 0x1A83 JUMP JUMPDEST PUSH1 0x20 DUP9 ADD MLOAD PUSH1 0x40 DUP10 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP1 DUP3 GT DUP1 PUSH2 0x185B JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x1879 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2D029599 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 LT DUP1 ISZERO PUSH2 0x188D JUMPI POP PUSH1 0x80 DUP4 ADD MLOAD PUSH1 0x1 AND ISZERO JUMPDEST ISZERO PUSH2 0x18AB JUMPI PUSH1 0x40 MLOAD PUSH4 0xA11B63FF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x18B4 DUP4 PUSH2 0x16AC JUMP JUMPDEST SWAP6 POP PUSH2 0x18D6 DUP11 DUP11 DUP10 DUP10 DUP8 PUSH1 0xE0 ADD MLOAD DUP9 PUSH1 0x80 ADD MLOAD DUP10 PUSH1 0x0 ADD MLOAD DUP11 PUSH1 0x20 ADD MLOAD PUSH2 0x308C JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP2 MLOAD PUSH1 0x80 DUP2 ADD DUP4 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB PUSH3 0x10000 DUP5 DIV DUP2 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x88 SHL SWAP1 SWAP3 DIV AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 PUSH2 0x193D SWAP1 DUP9 SWAP1 DUP4 SWAP1 DUP13 PUSH2 0x16E7 JUMP JUMPDEST PUSH2 0x1952 JUMPI POP PUSH1 0x0 SWAP5 POP DUP5 SWAP4 POP PUSH2 0x1A83 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD PUSH2 0x196B JUMPI PUSH2 0x196B DUP5 PUSH1 0x0 ADD MLOAD DUP9 DUP14 PUSH1 0x60 ADD MLOAD PUSH2 0x17A0 JUMP JUMPDEST PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x60 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB SWAP2 DUP3 AND SWAP2 AND DUP1 ISZERO PUSH2 0x1A2F JUMPI DUP4 PUSH1 0x1 SUB PUSH2 0x199B JUMPI DUP1 SWAP5 POP DUP1 SWAP4 POP PUSH2 0x19C7 JUMP JUMPDEST DUP4 DUP2 EQ PUSH2 0x19C7 JUMPI PUSH2 0x19AC DUP5 DUP4 PUSH2 0x4F6F JUMP JUMPDEST SWAP2 POP PUSH2 0x19B8 DUP2 DUP7 PUSH2 0x4F6F JUMP JUMPDEST SWAP5 POP PUSH2 0x19C4 DUP2 DUP6 PUSH2 0x4F6F JUMP JUMPDEST SWAP4 POP JUMPDEST DUP4 PUSH2 0x19D2 DUP7 DUP5 PUSH2 0x4F8E JUMP JUMPDEST GT ISZERO PUSH2 0x19DE JUMPI DUP2 DUP5 SUB SWAP5 POP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB DUP7 DUP2 AND PUSH1 0x1 PUSH1 0x88 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB DUP7 DUP11 ADD SWAP3 SWAP1 SWAP3 AND PUSH3 0x10000 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0x1 OR AND OR SWAP1 SSTORE PUSH2 0x1A78 JUMP JUMPDEST PUSH1 0x0 DUP10 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB DUP7 DUP2 AND PUSH1 0x1 PUSH1 0x88 SHL MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB SWAP2 DUP10 AND PUSH3 0x10000 MUL PUSH1 0x1 PUSH1 0x1 PUSH1 0x88 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR PUSH1 0x1 OR AND OR SWAP1 SSTORE JUMPDEST POP SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP POP POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD DUP3 MLOAD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x1CD4 JUMPI PUSH1 0x0 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1AB0 JUMPI PUSH2 0x1AB0 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 ADD MLOAD SWAP1 POP DUP4 DUP2 LT PUSH2 0x1AE3 JUMPI PUSH1 0x40 MLOAD PUSH4 0x21A561B1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP7 DUP2 DUP2 MLOAD DUP2 LT PUSH2 0x1AF5 JUMPI PUSH2 0x1AF5 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND PUSH1 0x0 SUB PUSH2 0x1B18 JUMPI POP POP PUSH2 0x1CCC JUMP JUMPDEST PUSH1 0x0 DUP8 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1B2C JUMPI PUSH2 0x1B2C PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD MLOAD PUSH1 0x40 DUP5 ADD MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP1 DUP1 DUP7 PUSH1 0x20 ADD MLOAD PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x1B5A JUMPI PUSH2 0x1B5A PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x1BF4 JUMPI PUSH1 0x40 DUP5 ADD MLOAD DUP1 MLOAD DUP5 LT PUSH2 0x1B85 JUMPI PUSH1 0x40 MLOAD PUSH4 0x5FD9FC67 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1B99 JUMPI PUSH2 0x1B99 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD DUP1 MLOAD PUSH1 0x40 DUP3 ADD MLOAD SWAP1 SWAP6 POP SWAP4 POP SWAP1 POP PUSH1 0x4 DUP5 EQ PUSH1 0x3 SUB DUP2 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1BCC JUMPI PUSH2 0x1BCC PUSH2 0x4671 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1BDF JUMPI PUSH2 0x1BDF PUSH2 0x4671 JUMP JUMPDEST SWAP1 MSTORE POP POP PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE POP PUSH2 0x1C85 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MLOAD DUP1 MLOAD DUP5 LT PUSH2 0x1C1A JUMPI PUSH1 0x40 MLOAD PUSH4 0x30446BEF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP2 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x1C2E JUMPI PUSH2 0x1C2E PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD DUP1 MLOAD PUSH1 0x40 DUP3 ADD MLOAD SWAP1 SWAP6 POP SWAP4 POP SWAP1 POP PUSH1 0x4 DUP5 EQ PUSH1 0x3 SUB DUP2 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1C61 JUMPI PUSH2 0x1C61 PUSH2 0x4671 JUMP JUMPDEST SWAP1 DUP2 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1C74 JUMPI PUSH2 0x1C74 PUSH2 0x4671 JUMP JUMPDEST SWAP1 MSTORE POP POP PUSH1 0x60 DUP9 ADD MLOAD PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE POP JUMPDEST PUSH2 0x1C8F DUP3 PUSH1 0x3 LT SWAP1 JUMP JUMPDEST PUSH2 0x1CAC JUMPI PUSH1 0x40 MLOAD PUSH4 0x4A75B57B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 ISZERO PUSH2 0x1CC5 JUMPI PUSH2 0x1CC5 DUP7 PUSH1 0x60 ADD MLOAD DUP3 DUP9 PUSH1 0x80 ADD MLOAD PUSH2 0x316D JUMP JUMPDEST POP POP POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1A94 JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1E03 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1CF4 JUMPI PUSH2 0x1CF4 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND PUSH1 0x0 SUB PUSH2 0x1D19 JUMPI POP PUSH2 0x1DFB JUMP JUMPDEST PUSH1 0x0 DUP7 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1D2D JUMPI PUSH2 0x1D2D PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x60 ADD MLOAD MLOAD SWAP1 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1DA4 JUMPI PUSH2 0x1D7B DUP4 PUSH1 0x60 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1D69 JUMPI PUSH2 0x1D69 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x3 LT SWAP1 JUMP JUMPDEST ISZERO PUSH2 0x1D9C JUMPI PUSH1 0x40 MLOAD PUSH1 0x1 PUSH3 0x22973 PUSH1 0xE6 SHL SUB NOT DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x1D48 JUMP JUMPDEST POP POP PUSH1 0x40 DUP2 ADD MLOAD MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1DF6 JUMPI PUSH2 0x1DD0 DUP4 PUSH1 0x40 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1D69 JUMPI PUSH2 0x1D69 PUSH2 0x4D51 JUMP JUMPDEST ISZERO PUSH2 0x1DEE JUMPI PUSH1 0x40 MLOAD PUSH4 0xA6CFC673 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 ADD PUSH2 0x1DAF JUMP JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x1CD8 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 PUSH1 0xA0 ADD MLOAD DUP7 PUSH1 0xC0 ADD MLOAD PUSH2 0x1E20 SWAP2 SWAP1 PUSH2 0x4FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH1 0xA0 ADD MLOAD TIMESTAMP PUSH2 0x1E34 SWAP2 SWAP1 PUSH2 0x4FA6 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1E42 DUP3 DUP5 PUSH2 0x4FA6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE SWAP2 SWAP3 POP CALLVALUE SWAP2 PUSH1 0x0 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH2 0x31DD PUSH1 0x0 JUMPDEST DUP12 PUSH1 0x40 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1F26 JUMPI PUSH1 0x0 DUP13 PUSH1 0x40 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1E93 JUMPI PUSH2 0x1E93 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1EB8 DUP3 PUSH1 0x60 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD DUP16 DUP16 DUP13 DUP13 DUP16 PUSH1 0x0 PUSH2 0x329A JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE CALLER PUSH1 0x80 DUP5 ADD MSTORE SWAP1 POP PUSH1 0x0 DUP3 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1EDC JUMPI PUSH2 0x1EDC PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x1F08 JUMPI DUP6 DUP2 GT ISZERO PUSH2 0x1F02 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP7 SUB SWAP6 POP JUMPDEST PUSH2 0x1F1C DUP3 DUP16 PUSH1 0x0 ADD MLOAD DUP14 DUP9 DUP9 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1E6E JUMP JUMPDEST POP PUSH2 0x31DD SWAP1 POP PUSH1 0x0 JUMPDEST DUP12 PUSH1 0x60 ADD MLOAD MLOAD DUP2 LT ISZERO PUSH2 0x1FE7 JUMPI PUSH1 0x0 DUP13 PUSH1 0x60 ADD MLOAD DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1F54 JUMPI PUSH2 0x1F54 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x1F79 DUP3 PUSH1 0x60 ADD MLOAD DUP4 PUSH1 0x80 ADD MLOAD DUP16 DUP16 DUP13 DUP13 DUP16 PUSH1 0x1 PUSH2 0x329A JUMP JUMPDEST PUSH1 0x60 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP4 ADD MLOAD PUSH1 0x80 DUP5 ADD MSTORE SWAP1 POP PUSH1 0x0 DUP3 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1FA1 JUMPI PUSH2 0x1FA1 PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x1FCD JUMPI DUP6 DUP2 GT ISZERO PUSH2 0x1FC7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP7 SUB SWAP6 POP JUMPDEST PUSH2 0x1FDD DUP3 CALLER DUP13 DUP9 DUP9 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x1F2F JUMP JUMPDEST POP POP PUSH2 0x1FF2 DUP2 PUSH2 0x2908 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2002 JUMPI PUSH2 0x2002 CALLER DUP4 PUSH2 0x32E6 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 SWAP1 POP PUSH1 0x60 DUP3 SWAP1 POP DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x9D9AF8E38D66C62E2C12F0225249FD9D721C54B83F48D9352C97C6CACDCB6F31 DUP11 DUP9 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x2061 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4FF7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP3 MLOAD DUP3 MLOAD PUSH1 0x60 SWAP2 DUP3 SWAP2 PUSH2 0x2086 DUP2 DUP4 PUSH2 0x4F8E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x209D JUMPI PUSH2 0x209D PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x20D6 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x20C3 PUSH2 0x3ED1 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x20BB JUMPI SWAP1 POP JUMPDEST POP SWAP3 POP PUSH1 0x0 DUP1 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x216F JUMPI PUSH1 0x0 DUP10 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x20F9 JUMPI PUSH2 0x20F9 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x2112 DUP13 PUSH1 0x0 DUP5 DUP13 PUSH2 0x333A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x2144 JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP PUSH2 0x2165 JUMP JUMPDEST DUP1 DUP8 DUP6 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x2159 JUMPI PUSH2 0x2159 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x20DD JUMP JUMPDEST POP PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x2207 JUMPI PUSH1 0x0 DUP9 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x218F JUMPI PUSH2 0x218F PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x21A8 DUP13 PUSH1 0x1 DUP5 DUP13 PUSH2 0x333A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x0 ADD MLOAD PUSH1 0x80 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x21DA JUMPI PUSH1 0x1 DUP5 ADD SWAP4 POP PUSH2 0x21FD JUMP JUMPDEST DUP1 DUP8 DUP6 DUP9 DUP7 ADD SUB DUP2 MLOAD DUP2 LT PUSH2 0x21F1 JUMPI PUSH2 0x21F1 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2173 JUMP JUMPDEST POP DUP1 ISZERO PUSH2 0x2215 JUMPI DUP1 DUP5 MLOAD SUB DUP5 MSTORE JUMPDEST POP DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x2238 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD5DA9A1B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2242 DUP9 DUP5 PUSH2 0x2CCD JUMP JUMPDEST SWAP4 POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH32 0x0 CHAINID EQ PUSH2 0x2320 JUMPI PUSH2 0x33B PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0x0 SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0x0 SWAP1 PUSH1 0xC0 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP1 JUMP JUMPDEST POP PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH2 0x234D PUSH2 0x17F5 JUMP JUMPDEST PUSH2 0x2363 DUP7 PUSH2 0x120 ADD CALLDATALOAD DUP8 PUSH2 0x140 ADD CALLDATALOAD PUSH1 0x1 PUSH2 0x3046 JUMP JUMPDEST POP PUSH2 0x236C PUSH2 0x33D5 JUMP JUMPDEST PUSH2 0x2394 PUSH2 0x237D PUSH2 0x200 DUP9 ADD DUP9 PUSH2 0x4F10 JUMP JUMPDEST PUSH2 0x2389 SWAP2 POP PUSH1 0x1 PUSH2 0x4F8E JUMP JUMPDEST DUP8 PUSH2 0x1E0 ADD CALLDATALOAD PUSH2 0x2EE2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH32 0x0 SWAP1 POP DUP1 PUSH1 0x80 MSTORE DUP6 PUSH1 0xA0 MSTORE PUSH1 0x60 PUSH1 0x24 PUSH1 0xC0 CALLDATACOPY PUSH1 0x40 PUSH1 0x64 PUSH2 0x120 CALLDATACOPY PUSH1 0xE0 PUSH1 0x80 KECCAK256 PUSH2 0x160 MSTORE PUSH2 0x264 CALLDATALOAD PUSH1 0x20 DUP2 MUL PUSH2 0x2A0 ADD PUSH1 0x1 PUSH2 0x264 CALLDATALOAD ADD DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP DUP8 DUP2 MSTORE PUSH1 0x80 PUSH1 0x24 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH2 0x160 DUP8 PUSH1 0xA0 MSTORE DUP7 PUSH1 0xC0 MSTORE PUSH1 0x0 PUSH1 0xE0 MSTORE PUSH2 0x204 CALLDATALOAD SWAP3 POP PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x2465 JUMPI DUP1 PUSH1 0x40 MUL PUSH2 0x284 ADD PUSH1 0x20 DUP2 PUSH2 0x100 CALLDATACOPY PUSH1 0x40 DUP2 PUSH2 0x120 CALLDATACOPY PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0xE0 PUSH1 0x80 KECCAK256 DUP4 MSTORE PUSH1 0xA0 DUP5 ADD SWAP4 POP DUP10 DUP5 MSTORE DUP9 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 DUP2 PUSH1 0x60 DUP7 ADD CALLDATACOPY POP PUSH1 0x1 ADD PUSH2 0x241A JUMP JUMPDEST PUSH1 0x20 PUSH1 0x1 DUP6 ADD MUL PUSH2 0x160 KECCAK256 PUSH1 0x60 MSTORE PUSH2 0x264 CALLDATALOAD SWAP4 POP JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x24AB JUMPI DUP1 PUSH1 0x40 MUL PUSH2 0x284 ADD SWAP2 POP PUSH1 0xA0 DUP4 ADD SWAP3 POP DUP9 DUP4 MSTORE DUP8 PUSH1 0x20 DUP5 ADD MSTORE PUSH1 0x40 DUP3 PUSH1 0x60 DUP6 ADD CALLDATACOPY PUSH1 0x1 ADD PUSH2 0x247A JUMP JUMPDEST POP POP POP POP POP PUSH1 0x0 PUSH32 0x0 SWAP1 POP DUP1 PUSH1 0x80 MSTORE DUP3 PUSH1 0xA0 MSTORE PUSH1 0x60 PUSH1 0xC4 PUSH1 0xC0 CALLDATACOPY PUSH1 0x20 PUSH2 0x104 PUSH2 0x120 CALLDATACOPY PUSH1 0xC0 PUSH1 0x80 KECCAK256 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0xE0 MSTORE PUSH1 0x20 PUSH2 0x264 CALLDATALOAD MUL PUSH2 0x200 ADD PUSH1 0x1 DUP2 MSTORE DUP4 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 PUSH1 0xC4 PUSH1 0x40 DUP4 ADD CALLDATACOPY POP POP PUSH1 0x84 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH32 0x0 PUSH1 0x80 DUP2 SWAP1 MSTORE SWAP1 SWAP2 POP PUSH1 0x40 PUSH1 0x84 PUSH1 0xA0 CALLDATACOPY PUSH1 0x60 MLOAD PUSH2 0x100 MSTORE DUP9 PUSH2 0x120 MSTORE PUSH1 0xA0 PUSH2 0x144 PUSH2 0x140 CALLDATACOPY DUP2 PUSH2 0x1E0 MSTORE PUSH2 0x180 PUSH1 0x80 KECCAK256 SWAP4 POP POP POP POP PUSH1 0x20 PUSH2 0x264 CALLDATALOAD MUL PUSH2 0x180 ADD DUP2 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x80 PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x120 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0xA0 PUSH2 0x264 CALLDATALOAD MUL PUSH2 0x1E0 ADD PUSH1 0xA4 CALLDATALOAD PUSH1 0x84 CALLDATALOAD PUSH32 0x9D9AF8E38D66C62E2C12F0225249FD9D721C54B83F48D9352C97C6CACDCB6F31 DUP4 DUP6 LOG3 POP POP PUSH1 0x0 PUSH1 0x60 MSTORE PUSH2 0x2620 DUP2 DUP9 PUSH2 0x160 ADD CALLDATALOAD DUP9 DUP11 PUSH1 0x60 ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x260B SWAP2 SWAP1 PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x261B PUSH1 0xA0 DUP14 ADD PUSH1 0x80 DUP15 ADD PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x3416 JUMP JUMPDEST PUSH2 0x267C DUP2 PUSH2 0x2634 PUSH1 0x80 DUP11 ADD PUSH1 0x60 DUP12 ADD PUSH2 0x4016 JUMP JUMPDEST PUSH2 0x2642 PUSH2 0x220 DUP12 ADD DUP12 PUSH2 0x4DAA 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 0x3466 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 ISZERO PUSH2 0x26E1 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD SWAP1 POP PUSH4 0x2671A551 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x24 DUP3 ADD MSTORE DUP8 PUSH1 0x44 DUP3 ADD MSTORE DUP7 PUSH1 0x64 DUP3 ADD MSTORE DUP6 PUSH1 0x84 DUP3 ADD MSTORE DUP5 PUSH1 0xA4 DUP3 ADD MSTORE DUP4 PUSH1 0xC4 DUP3 ADD MSTORE DUP3 PUSH1 0xE4 DUP3 ADD MSTORE PUSH2 0x26DB DUP3 DUP3 PUSH2 0x104 PUSH2 0x3508 JUMP JUMPDEST POP PUSH2 0x267C JUMP JUMPDEST PUSH1 0x2 DUP8 PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x26F5 JUMPI PUSH2 0x26F5 PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x272C JUMPI DUP2 PUSH1 0x1 EQ PUSH2 0x271B JUMPI PUSH1 0x40 MLOAD PUSH4 0xEFCC00B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2727 DUP7 DUP7 DUP7 DUP7 PUSH2 0x35F8 JUMP JUMPDEST PUSH2 0x267C JUMP JUMPDEST PUSH2 0x267C DUP7 DUP7 DUP7 DUP7 DUP7 PUSH2 0x36B9 JUMP JUMPDEST CALLVALUE DUP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x27AC JUMPI CALLDATASIZE DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x2759 JUMPI PUSH2 0x2759 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x40 MUL SWAP2 SWAP1 SWAP2 ADD SWAP2 POP POP DUP1 CALLDATALOAD DUP5 DUP2 GT ISZERO PUSH2 0x2786 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x279F PUSH2 0x2799 PUSH1 0x40 DUP5 ADD PUSH1 0x20 DUP6 ADD PUSH2 0x4016 JUMP JUMPDEST DUP3 PUSH2 0x32E6 JUMP JUMPDEST SWAP1 SWAP4 SUB SWAP3 POP PUSH1 0x1 ADD PUSH2 0x273E JUMP JUMPDEST POP DUP2 DUP7 GT ISZERO PUSH2 0x27CE JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x27D8 DUP6 DUP8 PUSH2 0x32E6 JUMP JUMPDEST DUP6 DUP3 GT ISZERO PUSH2 0x27EC JUMPI PUSH2 0x27EC CALLER DUP8 DUP5 SUB PUSH2 0x32E6 JUMP JUMPDEST PUSH2 0x27F6 PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2808 DUP2 DUP4 PUSH2 0x379D JUMP JUMPDEST DUP2 PUSH2 0x283A JUMPI DUP3 PUSH1 0x1 EQ PUSH2 0x282E JUMPI PUSH1 0x40 MLOAD PUSH4 0xEFCC00B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2727 DUP8 DUP8 DUP8 DUP8 PUSH2 0x35F8 JUMP JUMPDEST PUSH2 0x267C DUP3 DUP3 PUSH1 0x2 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x37BC JUMP JUMPDEST PUSH1 0x20 DUP3 MUL PUSH2 0x1E4 SUB CALLDATALOAD DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x28B9 JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x2873 JUMPI PUSH2 0x2873 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x40 MUL SWAP2 SWAP1 SWAP2 ADD SWAP2 POP POP DUP1 CALLDATALOAD DUP7 ISZERO PUSH2 0x2892 JUMPI PUSH2 0x288F DUP2 DUP12 PUSH2 0x4FA6 JUMP JUMPDEST SWAP10 POP JUMPDEST PUSH2 0x28AF DUP12 DUP15 PUSH2 0x28A7 PUSH1 0x40 DUP7 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x4016 JUMP JUMPDEST DUP5 DUP10 DUP12 PUSH2 0x383C JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2858 JUMP JUMPDEST POP PUSH2 0x28C8 DUP9 DUP12 DUP12 DUP11 DUP7 DUP9 PUSH2 0x383C JUMP JUMPDEST PUSH2 0x2002 PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST PUSH2 0x28DB DUP4 PUSH2 0x3877 JUMP JUMPDEST PUSH2 0x28E5 DUP2 DUP4 PUSH2 0x379D JUMP JUMPDEST DUP2 PUSH2 0x28F7 JUMPI PUSH2 0x2727 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x36B9 JUMP JUMPDEST PUSH2 0x267C DUP3 DUP3 PUSH1 0x3 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x37BC JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 EQ PUSH2 0x2914 JUMPI POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2921 DUP3 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH2 0x292D DUP2 DUP4 PUSH2 0x3898 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 SUB PUSH2 0x2941 JUMPI POP DUP1 PUSH2 0x528 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP6 DUP5 MULMOD ISZERO SWAP1 POP DUP1 PUSH2 0x2968 JUMPI PUSH1 0x40 MLOAD PUSH4 0xC63CF089 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2974 DUP7 DUP6 PUSH2 0x4F6F JUMP JUMPDEST SWAP5 SWAP1 SWAP5 DIV SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP6 DUP8 EQ PUSH2 0x29D1 JUMPI PUSH1 0x0 DUP3 ISZERO PUSH2 0x2999 JUMPI POP PUSH1 0x0 NOT DUP4 ADD JUMPDEST PUSH1 0x0 DUP2 PUSH2 0x29A6 DUP9 DUP11 PUSH2 0x4F6F JUMP JUMPDEST PUSH2 0x29B0 DUP9 DUP13 PUSH2 0x4F6F JUMP JUMPDEST PUSH2 0x29BA SWAP2 SWAP1 PUSH2 0x4F8E JUMP JUMPDEST PUSH2 0x29C4 SWAP2 SWAP1 PUSH2 0x4F8E JUMP JUMPDEST DUP6 SWAP1 DIV SWAP3 POP PUSH2 0x377 SWAP2 POP POP JUMP JUMPDEST POP SWAP4 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x29E4 PUSH2 0x3ED1 JUMP JUMPDEST DUP4 ISZERO DUP1 PUSH2 0x29EF JUMPI POP DUP2 ISZERO JUMPDEST ISZERO PUSH2 0x2A0D JUMPI PUSH1 0x40 MLOAD PUSH4 0x4C74EDB7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2A15 PUSH2 0x3ED1 JUMP JUMPDEST PUSH2 0x2A72 DUP8 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x2A67 JUMPI PUSH2 0x2A58 PUSH1 0x40 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x5091 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2A3B JUMP JUMPDEST POP POP POP POP POP DUP4 PUSH2 0x38BC JUMP JUMPDEST DUP1 MLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP10 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP8 DUP2 MSTORE PUSH2 0x2AD1 SWAP2 DUP11 SWAP2 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP2 SWAP1 PUSH1 0x0 SWAP1 DUP6 ADD JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x2AC6 JUMPI PUSH2 0x2AB7 PUSH1 0x40 DUP4 MUL DUP7 ADD CALLDATASIZE DUP2 SWAP1 SUB DUP2 ADD SWAP1 PUSH2 0x5091 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x2A9A JUMP JUMPDEST POP POP POP POP POP DUP6 PUSH2 0x3A68 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2AE4 JUMPI PUSH2 0x2AE4 PUSH2 0x4671 JUMP JUMPDEST DUP4 MLOAD MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2AF8 JUMPI PUSH2 0x2AF8 PUSH2 0x4671 JUMP JUMPDEST EQ ISZERO DUP1 PUSH2 0x2B23 JUMPI POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST DUP1 PUSH2 0x2B3A JUMPI POP DUP1 PUSH1 0x40 ADD MLOAD DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x40 ADD MLOAD EQ ISZERO JUMPDEST ISZERO PUSH2 0x2B58 JUMPI PUSH1 0x40 MLOAD PUSH4 0x9CFB455 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD DUP2 PUSH1 0x60 ADD MLOAD GT ISZERO PUSH2 0x2C0F JUMPI PUSH1 0x0 DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x2B81 JUMPI PUSH2 0x2B81 PUSH2 0x4D51 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2B97 SWAP2 SWAP1 PUSH2 0x5091 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD DUP3 PUSH1 0x60 ADD MLOAD PUSH2 0x2BB1 SWAP2 SWAP1 PUSH2 0x4FA6 JUMP JUMPDEST DUP10 DUP3 PUSH1 0x0 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2BC7 JUMPI PUSH2 0x2BC7 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2BEC JUMPI PUSH2 0x2BEC PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD PUSH1 0x60 SWAP1 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MLOAD DUP2 ADD MLOAD SWAP1 DUP4 ADD MSTORE POP PUSH2 0x2CA1 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP8 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x2C24 JUMPI PUSH2 0x2C24 PUSH2 0x4D51 JUMP JUMPDEST SWAP1 POP PUSH1 0x40 MUL ADD DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x2C3A SWAP2 SWAP1 PUSH2 0x5091 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x60 ADD MLOAD DUP5 PUSH1 0x0 ADD MLOAD PUSH1 0x60 ADD MLOAD PUSH2 0x2C54 SWAP2 SWAP1 PUSH2 0x4FA6 JUMP JUMPDEST DUP10 DUP3 PUSH1 0x0 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2C6A JUMPI PUSH2 0x2C6A PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x0 ADD MLOAD PUSH1 0x40 ADD MLOAD DUP3 PUSH1 0x20 ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x2C8F JUMPI PUSH2 0x2C8F PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD DUP2 DUP2 MSTORE POP POP POP JUMPDEST PUSH1 0x60 DUP1 DUP3 ADD MLOAD DUP5 MLOAD SWAP1 SWAP2 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 ADD MSTORE POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x60 SWAP1 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x2CEA JUMPI PUSH2 0x2CEA PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x2D13 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP2 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x2DF9 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2D35 JUMPI PUSH2 0x2D35 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP DUP1 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND PUSH1 0x0 SUB PUSH2 0x2D5A JUMPI POP PUSH2 0x2DF1 JUMP JUMPDEST PUSH1 0x1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x2D6E JUMPI PUSH2 0x2D6E PUSH2 0x4D51 JUMP JUMPDEST SWAP2 ISZERO ISZERO PUSH1 0x20 SWAP3 DUP4 MUL SWAP2 SWAP1 SWAP2 ADD SWAP1 SWAP2 ADD MSTORE DUP1 MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x0 JUMPDEST DUP2 MLOAD DUP2 LT ISZERO PUSH2 0x2DED JUMPI PUSH1 0x0 DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2DA4 JUMPI PUSH2 0x2DA4 PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x60 ADD MLOAD SWAP1 POP DUP1 PUSH1 0x0 EQ PUSH2 0x2DE4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x14BEA841 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0xDDD JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x2D87 JUMP JUMPDEST POP POP POP JUMPDEST PUSH1 0x1 ADD PUSH2 0x2D19 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE CALLVALUE SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP6 MLOAD DUP2 LT ISZERO PUSH2 0x2EB5 JUMPI PUSH1 0x0 DUP7 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2E3E JUMPI PUSH2 0x2E3E PUSH2 0x4D51 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MLOAD DUP1 MLOAD SWAP1 SWAP2 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x2E63 JUMPI PUSH2 0x2E63 PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x2E97 JUMPI DUP5 DUP2 PUSH1 0x60 ADD MLOAD GT ISZERO PUSH2 0x2E8D JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A783B8D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x60 ADD MLOAD DUP6 SUB SWAP5 POP JUMPDEST PUSH2 0x2EAB DUP2 DUP4 PUSH1 0x20 ADD MLOAD DUP5 PUSH1 0x40 ADD MLOAD DUP8 PUSH2 0x31DD JUMP JUMPDEST POP POP PUSH1 0x1 ADD PUSH2 0x2E21 JUMP JUMPDEST POP PUSH2 0x2EBF DUP2 PUSH2 0x2908 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x2ECF JUMPI PUSH2 0x2ECF CALLER DUP4 PUSH2 0x32E6 JUMP JUMPDEST PUSH2 0x2ED9 PUSH1 0x1 PUSH1 0x0 SSTORE JUMP JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x292D JUMPI PUSH1 0x40 MLOAD PUSH4 0x2335530B PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x40 SUB PUSH2 0x2F34 JUMPI POP POP POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP2 AND SWAP1 PUSH1 0xFF SHR PUSH1 0x1B ADD PUSH2 0x2F9A JUMP JUMPDEST DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x2F8F JUMPI POP POP POP PUSH1 0x20 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD MLOAD PUSH1 0x60 DUP4 ADD MLOAD PUSH1 0x0 BYTE PUSH1 0x1B DUP2 EQ DUP1 ISZERO SWAP1 PUSH2 0x2F67 JUMPI POP DUP1 PUSH1 0xFF AND PUSH1 0x1C EQ ISZERO JUMPDEST ISZERO PUSH2 0x2F8A JUMPI PUSH1 0x40 MLOAD PUSH4 0xF801E85 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0xFF DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDDD JUMP JUMPDEST PUSH2 0x2F9A JUMP JUMPDEST PUSH2 0x27F6 DUP7 DUP7 DUP7 PUSH2 0x3BF2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP9 SWAP1 MSTORE PUSH1 0xFF DUP5 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP5 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 0x2FEE 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 0x3022 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8BAA579F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x267C JUMPI PUSH2 0x267C DUP8 DUP8 DUP8 PUSH2 0x3BF2 JUMP JUMPDEST PUSH1 0x0 TIMESTAMP DUP5 GT DUP1 PUSH2 0x3056 JUMPI POP TIMESTAMP DUP4 GT ISZERO JUMPDEST ISZERO PUSH2 0x3082 JUMPI DUP2 ISZERO PUSH2 0x307A JUMPI PUSH1 0x40 MLOAD PUSH4 0x37BF5613 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 PUSH2 0x528 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x30A0 JUMPI PUSH2 0x30A0 PUSH2 0x4671 JUMP JUMPDEST GT DUP1 ISZERO PUSH2 0x30B6 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x30CB JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1552 JUMPI PUSH1 0x80 DUP9 ADD MLOAD MLOAD ISZERO DUP1 ISZERO PUSH2 0x30E2 JUMPI POP DUP7 MLOAD ISZERO JUMPDEST ISZERO PUSH2 0x30F8 JUMPI PUSH2 0x30F3 DUP2 DUP7 DUP5 DUP8 PUSH2 0x3C69 JUMP JUMPDEST PUSH2 0x1552 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3156 DUP3 PUSH4 0x33131570 PUSH1 0xE0 SHL DUP9 CALLER DUP14 DUP13 DUP15 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x311F SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5265 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 MSTORE PUSH2 0x3CB5 JUMP JUMPDEST SWAP1 POP PUSH2 0x3162 DUP2 DUP8 PUSH2 0x3CCA JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP5 MLOAD MUL DUP2 ADD JUMPDEST DUP1 DUP3 LT ISZERO PUSH2 0x31B9 JUMPI DUP2 MLOAD DUP1 DUP5 GT DUP1 ISZERO PUSH2 0x319C JUMPI DUP2 PUSH1 0x0 MSTORE DUP5 PUSH1 0x20 MSTORE PUSH2 0x31A5 JUMP JUMPDEST DUP5 PUSH1 0x0 MSTORE DUP2 PUSH1 0x20 MSTORE JUMPDEST POP POP PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP3 POP PUSH1 0x20 DUP3 ADD SWAP2 POP PUSH2 0x317C JUMP JUMPDEST POP POP DUP4 EQ SWAP1 POP DUP1 PUSH2 0x17EF JUMPI PUSH1 0x40 MLOAD PUSH4 0x9BDE339 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x31F2 JUMPI PUSH2 0x31F2 PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x320E JUMPI PUSH2 0x3209 DUP5 PUSH1 0x80 ADD MLOAD DUP6 PUSH1 0x60 ADD MLOAD PUSH2 0x32E6 JUMP JUMPDEST PUSH2 0x17EF JUMP JUMPDEST PUSH1 0x1 DUP5 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x3223 JUMPI PUSH2 0x3223 PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x3242 JUMPI PUSH2 0x3209 DUP5 PUSH1 0x20 ADD MLOAD DUP5 DUP7 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x60 ADD MLOAD DUP7 DUP7 PUSH2 0x383C JUMP JUMPDEST PUSH1 0x2 DUP5 MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x3257 JUMPI PUSH2 0x3257 PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x327B JUMPI PUSH2 0x3209 DUP5 PUSH1 0x20 ADD MLOAD DUP5 DUP7 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD DUP8 DUP8 PUSH2 0x27FE JUMP JUMPDEST PUSH2 0x17EF DUP5 PUSH1 0x20 ADD MLOAD DUP5 DUP7 PUSH1 0x80 ADD MLOAD DUP8 PUSH1 0x40 ADD MLOAD DUP9 PUSH1 0x60 ADD MLOAD DUP8 DUP8 PUSH2 0x28D2 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP10 SUB PUSH2 0x32B5 JUMPI PUSH2 0x32AE DUP8 DUP8 DUP11 PUSH2 0x2931 JUMP JUMPDEST SWAP1 POP PUSH2 0x32DA JUMP JUMPDEST PUSH2 0x32D7 PUSH2 0x32C3 DUP9 DUP9 DUP13 PUSH2 0x2931 JUMP JUMPDEST PUSH2 0x32CE DUP10 DUP10 DUP13 PUSH2 0x2931 JUMP JUMPDEST DUP8 DUP8 DUP8 DUP8 PUSH2 0x2981 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x32EF DUP2 PUSH2 0x3877 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP6 DUP8 GAS CALL SWAP1 POP DUP1 PUSH2 0x3335 JUMPI PUSH2 0x330A PUSH2 0x3D24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x470C7C1D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH2 0xDDD JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x3342 PUSH2 0x3ED1 JUMP JUMPDEST DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x3366 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x375C24C1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xDDD SWAP2 SWAP1 PUSH2 0x53EB JUMP JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x1 DUP2 GT ISZERO PUSH2 0x337A JUMPI PUSH2 0x337A PUSH2 0x4671 JUMP JUMPDEST SUB PUSH2 0x338F JUMPI PUSH2 0x338A DUP6 DUP5 DUP4 PUSH2 0x3A68 JUMP JUMPDEST PUSH2 0x33A8 JUMP JUMPDEST PUSH2 0x339A DUP6 DUP5 DUP4 PUSH2 0x38BC JUMP JUMPDEST CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP3 SWAP1 MSTORE JUMPDEST DUP1 MLOAD PUSH1 0x60 ADD MLOAD PUSH1 0x0 SUB PUSH2 0x5A5 JUMPI PUSH1 0x20 DUP2 ADD MLOAD DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x244 CALLDATALOAD PUSH2 0x260 PUSH2 0x264 CALLDATALOAD PUSH1 0x40 MUL ADD EQ PUSH1 0x4 CALLDATALOAD PUSH1 0x20 EQ PUSH2 0x224 CALLDATALOAD PUSH2 0x240 EQ AND AND DUP1 PUSH2 0x3413 JUMPI PUSH1 0x40 MLOAD PUSH4 0x39F3E3FD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x342A JUMPI PUSH2 0x342A PUSH2 0x4671 JUMP JUMPDEST GT DUP1 ISZERO PUSH2 0x3440 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x3455 JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x1E03 JUMPI PUSH2 0x1E03 DUP2 DUP7 DUP5 DUP8 PUSH2 0x3C69 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP3 MLOAD PUSH1 0x80 DUP2 ADD DUP5 MSTORE SWAP1 SLOAD PUSH1 0xFF DUP1 DUP3 AND ISZERO ISZERO DUP4 MSTORE PUSH2 0x100 DUP3 DIV AND ISZERO ISZERO SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB PUSH3 0x10000 DUP4 DIV DUP2 AND SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x88 SHL SWAP1 SWAP2 DIV SWAP1 SWAP2 AND PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x34CE DUP5 DUP3 PUSH1 0x1 DUP1 PUSH2 0x16E7 JUMP JUMPDEST POP DUP1 MLOAD PUSH2 0x34E0 JUMPI PUSH2 0x34E0 DUP4 DUP6 DUP5 PUSH2 0x17A0 JUMP JUMPDEST POP POP POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH18 0x10000000000000000000000000000010001 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF PUSH1 0xA0 SHL PUSH32 0x0 OR PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP7 DUP2 MSTORE PUSH32 0x0 DUP5 MSTORE PUSH1 0x55 PUSH1 0xB KECCAK256 SWAP3 SWAP1 SWAP4 MSTORE DUP1 DUP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP2 DUP2 DUP5 DUP7 DUP3 DUP7 GAS CALL SWAP1 POP DUP1 PUSH2 0x35B2 JUMPI PUSH2 0x358E PUSH2 0x3D24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x344F54F5 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xDDD JUMP JUMPDEST PUSH1 0x0 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0x2671A551 PUSH1 0xE1 SHL EQ PUSH2 0x27F6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE7CCD93 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xDDD JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x3613 JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x36AA JUMPI RETURNDATASIZE ISZERO PUSH2 0x3684 JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x366B JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x3680 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x36D4 JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH4 0x79212195 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0x3781 JUMPI RETURNDATASIZE ISZERO PUSH2 0x375C JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x3743 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x3758 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x37AA DUP4 PUSH1 0x20 ADD MLOAD SWAP1 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x3335 JUMPI PUSH2 0x3335 DUP4 PUSH2 0x2908 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP9 MLOAD SUB PUSH2 0x37F7 JUMPI POP PUSH1 0x40 DUP1 DUP9 MSTORE PUSH1 0x20 DUP1 DUP10 ADD DUP11 SWAP1 MSTORE PUSH4 0x2671A551 PUSH1 0xE1 SHL SWAP2 DUP10 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x44 DUP9 ADD MSTORE PUSH1 0x1 PUSH1 0x64 DUP9 ADD DUP2 SWAP1 MSTORE PUSH2 0x3806 JUMP JUMPDEST POP PUSH1 0x64 DUP8 ADD DUP1 MLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 MSTORE JUMPDEST PUSH1 0x3C PUSH1 0xC0 DUP3 MUL DUP10 ADD SUB DUP8 DUP2 MSTORE DUP7 PUSH1 0x20 DUP3 ADD MSTORE DUP6 PUSH1 0x40 DUP3 ADD MSTORE DUP5 PUSH1 0x60 DUP3 ADD MSTORE DUP4 PUSH1 0x80 DUP3 ADD MSTORE DUP3 PUSH1 0xA0 DUP3 ADD MSTORE POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x3845 DUP4 PUSH2 0x3877 JUMP JUMPDEST PUSH2 0x384F DUP2 DUP4 PUSH2 0x379D JUMP JUMPDEST DUP2 PUSH2 0x3865 JUMPI PUSH2 0x3860 DUP7 DUP7 DUP7 DUP7 PUSH2 0x3D69 JUMP JUMPDEST PUSH2 0x27F6 JUMP JUMPDEST PUSH2 0x27F6 DUP3 DUP3 PUSH1 0x1 DUP10 DUP10 DUP10 PUSH1 0x0 DUP11 PUSH2 0x37BC JUMP JUMPDEST DUP1 PUSH1 0x0 SUB PUSH2 0x3413 JUMPI PUSH1 0x40 MLOAD PUSH4 0x246CF945 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x64 DUP2 ADD MLOAD PUSH1 0x40 DUP3 ADD SWAP1 PUSH1 0xC0 MUL PUSH1 0x44 ADD PUSH2 0x38B3 DUP5 DUP4 DUP4 PUSH2 0x3508 JUMP JUMPDEST POP POP PUSH1 0x20 SWAP1 MSTORE POP JUMP JUMPDEST PUSH2 0x38E8 JUMP JUMPDEST PUSH4 0x7FDA7279 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 DUP3 ADD DUP1 MLOAD MLOAD DUP5 MLOAD DUP2 LT PUSH2 0x38FF JUMPI PUSH2 0x38FF PUSH2 0x38C1 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL PUSH1 0x20 DUP7 ADD ADD MLOAD PUSH1 0x60 DUP2 MLOAD ADD MLOAD PUSH1 0x20 DUP5 MLOAD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x3925 JUMPI PUSH2 0x3925 PUSH2 0x38C1 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL PUSH1 0x20 DUP4 ADD ADD MLOAD PUSH1 0x0 DUP1 PUSH1 0x20 DUP7 ADD MLOAD ISZERO PUSH2 0x394C JUMPI POP POP PUSH1 0x60 DUP2 ADD DUP1 MLOAD PUSH1 0x0 SWAP1 SWAP2 MSTORE DUP1 ISZERO JUMPDEST DUP9 MLOAD DUP4 MLOAD DUP2 MSTORE PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0xA0 DUP5 ADD MLOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0x60 DUP2 KECCAK256 PUSH1 0x20 DUP13 MLOAD MUL DUP13 ADD JUMPDEST DUP1 DUP12 LT ISZERO PUSH2 0x3A23 JUMPI PUSH1 0x20 DUP12 ADD SWAP11 POP DUP11 MLOAD MLOAD SWAP10 POP DUP14 MLOAD DUP11 LT PUSH2 0x399F JUMPI PUSH2 0x399F PUSH2 0x38C1 JUMP JUMPDEST PUSH1 0x20 DUP11 MUL PUSH1 0x20 DUP16 ADD ADD MLOAD SWAP9 POP PUSH1 0x20 DUP10 ADD MLOAD ISZERO PUSH2 0x397C JUMPI PUSH1 0x60 DUP10 MLOAD ADD MLOAD SWAP8 POP PUSH1 0x20 DUP12 MLOAD ADD MLOAD SWAP7 POP DUP8 MLOAD DUP8 LT PUSH2 0x39D5 JUMPI PUSH2 0x39D5 PUSH2 0x38C1 JUMP JUMPDEST PUSH1 0x20 DUP8 MUL PUSH1 0x20 DUP10 ADD ADD MLOAD SWAP6 POP PUSH1 0x60 DUP7 ADD DUP1 MLOAD DUP7 ADD DUP2 MLOAD ISZERO DUP8 DUP3 LT PUSH1 0x1 SHL OR DUP7 OR SWAP6 POP DUP1 SWAP7 POP POP PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x60 DUP7 KECCAK256 DUP3 EQ PUSH1 0x80 DUP5 ADD MLOAD PUSH1 0xA0 DUP9 ADD MLOAD EQ AND PUSH2 0x3A1E JUMPI PUSH2 0x3A1E PUSH2 0x38C1 JUMP JUMPDEST PUSH2 0x397C JUMP JUMPDEST POP POP PUSH1 0x60 ADD DUP3 SWAP1 MSTORE DUP1 PUSH1 0x1 DUP2 EQ PUSH2 0x3A41 JUMPI PUSH1 0x2 DUP2 EQ PUSH2 0x3A52 JUMPI PUSH2 0x3A5A JUMP JUMPDEST PUSH4 0x246CF945 PUSH1 0xE2 SHL PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 REVERT JUMPDEST PUSH2 0x3A5A PUSH2 0x38D2 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP1 MLOAD MLOAD DUP5 MLOAD DUP2 LT PUSH2 0x3A7F JUMPI PUSH2 0x3A7F PUSH2 0x38C1 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL PUSH1 0x20 DUP7 ADD ADD MLOAD DUP1 MLOAD PUSH1 0x40 DUP2 ADD MLOAD PUSH1 0x20 DUP6 MLOAD ADD MLOAD DUP2 MLOAD DUP2 LT PUSH2 0x3AA6 JUMPI PUSH2 0x3AA6 PUSH2 0x38C1 JUMP JUMPDEST PUSH1 0x20 DUP2 MUL PUSH1 0x20 DUP4 ADD ADD MLOAD PUSH1 0x0 DUP1 PUSH1 0x20 DUP8 ADD MLOAD ISZERO PUSH2 0x3ACD JUMPI POP POP PUSH1 0x60 DUP2 ADD DUP1 MLOAD PUSH1 0x0 SWAP1 SWAP2 MSTORE DUP1 ISZERO JUMPDEST DUP10 MLOAD CALLER PUSH1 0x80 DUP3 ADD MSTORE DUP4 MLOAD DUP2 MSTORE PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE DUP7 MLOAD PUSH1 0x20 DUP13 ADD MSTORE PUSH2 0x120 DUP8 ADD MLOAD PUSH1 0x40 DUP13 ADD MSTORE PUSH1 0x60 DUP2 KECCAK256 SWAP1 POP PUSH1 0x20 DUP13 MLOAD MUL DUP13 ADD JUMPDEST DUP1 DUP12 LT ISZERO PUSH2 0x3BC1 JUMPI PUSH1 0x20 DUP12 ADD SWAP11 POP DUP11 MLOAD MLOAD SWAP10 POP DUP14 MLOAD DUP11 LT PUSH2 0x3B30 JUMPI PUSH2 0x3B30 PUSH2 0x38C1 JUMP JUMPDEST PUSH1 0x20 DUP11 MUL PUSH1 0x20 DUP16 ADD ADD MLOAD SWAP9 POP PUSH1 0x20 DUP10 ADD MLOAD ISZERO PUSH2 0x3B0D JUMPI DUP9 MLOAD SWAP8 POP PUSH1 0x40 DUP9 ADD MLOAD SWAP7 POP PUSH1 0x20 DUP12 MLOAD ADD MLOAD SWAP6 POP DUP7 MLOAD DUP7 LT PUSH2 0x3B69 JUMPI PUSH2 0x3B69 PUSH2 0x38C1 JUMP JUMPDEST PUSH1 0x20 DUP7 MUL PUSH1 0x20 DUP9 ADD ADD MLOAD SWAP5 POP PUSH1 0x60 DUP6 ADD DUP1 MLOAD DUP6 ADD DUP2 MLOAD ISZERO DUP7 DUP3 LT PUSH1 0x1 SHL OR DUP6 OR SWAP5 POP DUP1 SWAP6 POP POP PUSH1 0x0 DUP2 MSTORE POP PUSH1 0x60 DUP6 KECCAK256 DUP3 EQ PUSH1 0x40 DUP14 ADD MLOAD PUSH2 0x120 DUP11 ADD MLOAD EQ PUSH1 0x20 DUP15 ADD MLOAD DUP11 MLOAD EQ AND AND PUSH2 0x3BBC JUMPI PUSH2 0x3BBC PUSH2 0x38C1 JUMP JUMPDEST PUSH2 0x3B0D JUMP JUMPDEST POP POP DUP2 PUSH1 0x60 DUP12 MLOAD ADD MSTORE DUP1 PUSH1 0x1 DUP2 EQ PUSH2 0x3A41 JUMPI PUSH1 0x2 DUP2 SUB PUSH2 0x3BE3 JUMPI PUSH2 0x3BE3 PUSH2 0x38D2 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C13 DUP5 PUSH4 0x1626BA7E PUSH1 0xE0 SHL DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x311F SWAP3 SWAP2 SWAP1 PUSH2 0x53F9 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3C3B JUMPI PUSH2 0x3C22 PUSH2 0x3D24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x4F7FB80D PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3C4B PUSH4 0xB135D3F PUSH1 0xE1 SHL PUSH2 0x3E6F JUMP JUMPDEST ISZERO PUSH2 0x17EF JUMPI PUSH1 0x40 MLOAD PUSH4 0x20578759 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x24 DUP2 ADD DUP5 SWAP1 MSTORE CALLER PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x3CA9 SWAP1 DUP7 SWAP1 PUSH4 0x3874C77 PUSH1 0xE2 SHL SWAP1 PUSH1 0xA4 ADD PUSH2 0x311F JUMP JUMPDEST SWAP1 POP PUSH2 0x1E03 DUP2 DUP6 PUSH2 0x3CCA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x20 DUP6 ADD DUP7 GAS STATICCALL SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH2 0x3CF3 JUMPI PUSH2 0x3CD7 PUSH2 0x3D24 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x3ED4053F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDDD JUMP JUMPDEST PUSH2 0x3D03 PUSH4 0x3874C77 PUSH1 0xE2 SHL PUSH2 0x3E6F JUMP JUMPDEST ISZERO PUSH2 0x292D JUMPI PUSH1 0x40 MLOAD PUSH4 0x3ED4053F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xDDD JUMP JUMPDEST RETURNDATASIZE ISZERO PUSH2 0x16AA JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 PUSH1 0x40 MLOAD DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x3D54 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x3335 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x3E5F JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x3E5F JUMPI DUP1 PUSH2 0x3E4A JUMPI DUP2 PUSH2 0x3E29 JUMPI RETURNDATASIZE ISZERO PUSH2 0x3E03 JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x3DEA JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x3DFF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x98891923 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 RETURNDATASIZE SUB PUSH2 0x3E85 JUMPI PUSH1 0x20 PUSH1 0x0 DUP1 RETURNDATACOPY POP PUSH1 0x0 MLOAD JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 DUP2 AND SWAP3 AND SWAP2 SWAP1 SWAP2 EQ ISZERO SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH2 0x3EB0 PUSH2 0x3F14 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0x100 DUP2 ADD DUP3 MSTORE PUSH1 0x0 PUSH1 0x60 DUP3 ADD DUP2 DUP2 MSTORE PUSH1 0x80 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0xA0 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0xC0 DUP4 ADD DUP3 SWAP1 MSTORE PUSH1 0xE0 DUP4 ADD DUP3 SWAP1 MSTORE DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH2 0x160 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F61 JUMPI PUSH2 0x3F61 PUSH2 0x4671 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x40 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xA0 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x3FB7 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD DUP3 ADD MSTORE ADD PUSH2 0x3F9B JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x3FC9 JUMPI PUSH1 0x0 PUSH1 0x20 DUP4 DUP8 ADD ADD MSTORE JUMPDEST POP 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 0x528 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3F91 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x3413 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4011 DUP2 PUSH2 0x3FF1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4028 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x528 DUP2 PUSH2 0x3FF1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4045 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD 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 0xA0 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4084 JUMPI PUSH2 0x4084 PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x160 DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x4084 JUMPI PUSH2 0x4084 PUSH2 0x404C 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 0x40D5 JUMPI PUSH2 0x40D5 PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x40F6 JUMPI PUSH2 0x40F6 PUSH2 0x404C JUMP JUMPDEST POP PUSH1 0x5 SHL PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x6 DUP2 LT PUSH2 0x4011 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4121 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4129 PUSH2 0x4062 JUMP JUMPDEST SWAP1 POP PUSH2 0x4134 DUP3 PUSH2 0x4100 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH2 0x4144 DUP2 PUSH2 0x3FF1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4180 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x4195 PUSH2 0x4190 DUP4 PUSH2 0x40DD JUMP JUMPDEST PUSH2 0x40AD JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xA0 SWAP3 DUP4 MUL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP3 ADD SWAP2 SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0x41B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x41D7 JUMPI PUSH2 0x41CA DUP10 DUP3 PUSH2 0x410F JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 DUP2 ADD PUSH2 0x41B8 JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x41F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x4218 JUMPI PUSH2 0x4218 PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP1 POP DUP1 PUSH2 0x4227 DUP4 PUSH2 0x4100 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4237 DUP2 PUSH2 0x3FF1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP4 ADD MSTORE POP PUSH1 0x40 DUP4 ADD CALLDATALOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP4 ADD CALLDATALOAD PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 DUP4 ADD CALLDATALOAD PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP4 ADD CALLDATALOAD PUSH2 0x426A DUP2 PUSH2 0x3FF1 JUMP JUMPDEST PUSH1 0xA0 SWAP2 SWAP1 SWAP2 ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4288 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x4298 PUSH2 0x4190 DUP4 PUSH2 0x40DD JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0xC0 SWAP3 DUP4 MUL DUP6 ADD DUP3 ADD SWAP3 DUP3 DUP3 ADD SWAP2 SWAP1 DUP8 DUP6 GT ISZERO PUSH2 0x42B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 DUP8 ADD JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x41D7 JUMPI PUSH2 0x42CD DUP10 DUP3 PUSH2 0x41E4 JUMP JUMPDEST DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 DUP2 ADD PUSH2 0x42BB JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0x4011 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x160 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x42FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4304 PUSH2 0x408A JUMP JUMPDEST SWAP1 POP PUSH2 0x430F DUP3 PUSH2 0x4006 JUMP JUMPDEST DUP2 MSTORE PUSH2 0x431D PUSH1 0x20 DUP4 ADD PUSH2 0x4006 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x433C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4348 DUP6 DUP4 DUP7 ADD PUSH2 0x416F JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x436E DUP5 DUP3 DUP6 ADD PUSH2 0x4277 JUMP JUMPDEST PUSH1 0x60 DUP4 ADD MSTORE POP PUSH2 0x4380 PUSH1 0x80 DUP4 ADD PUSH2 0x42DA JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP3 ADD CALLDATALOAD PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP3 ADD CALLDATALOAD PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xE0 DUP3 ADD CALLDATALOAD PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 DUP1 DUP4 ADD CALLDATALOAD DUP2 DUP4 ADD MSTORE POP PUSH2 0x120 DUP1 DUP4 ADD CALLDATALOAD DUP2 DUP4 ADD MSTORE POP PUSH2 0x140 DUP1 DUP4 ADD CALLDATALOAD DUP2 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x4011 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x43F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x440E JUMPI PUSH2 0x440E PUSH2 0x404C JUMP JUMPDEST PUSH2 0x4421 PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD PUSH2 0x40AD JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x4436 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x446D PUSH2 0x4062 JUMP JUMPDEST SWAP1 POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4492 DUP6 DUP4 DUP7 ADD PUSH2 0x42E9 JUMP JUMPDEST DUP4 MSTORE PUSH2 0x44A0 PUSH1 0x20 DUP6 ADD PUSH2 0x43CD JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x44B1 PUSH1 0x40 DUP6 ADD PUSH2 0x43CD JUMP JUMPDEST PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x60 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x44CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x44D6 DUP6 DUP4 DUP7 ADD PUSH2 0x43E4 JUMP JUMPDEST PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP5 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x44EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x44FC DUP5 DUP3 DUP6 ADD PUSH2 0x43E4 JUMP JUMPDEST PUSH1 0x80 DUP4 ADD MSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4519 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH2 0x4529 PUSH2 0x4190 DUP4 PUSH2 0x40DD JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x5 SWAP3 SWAP1 SWAP3 SHL DUP5 ADD DUP2 ADD SWAP2 DUP2 DUP2 ADD SWAP1 DUP7 DUP5 GT ISZERO PUSH2 0x4548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 DUP7 ADD JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x4587 JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x456B JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x4579 DUP10 DUP7 DUP4 DUP12 ADD ADD PUSH2 0x4453 JUMP JUMPDEST DUP5 MSTORE POP SWAP2 DUP4 ADD SWAP2 DUP4 ADD PUSH2 0x454C JUMP JUMPDEST POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x45A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x45BB 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 0x45D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x45F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x460C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4618 DUP10 DUP4 DUP11 ADD PUSH2 0x4508 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x462E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x463A DUP10 DUP4 DUP11 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4660 DUP9 DUP3 DUP10 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x6 DUP2 LT PUSH2 0x4697 JUMPI PUSH2 0x4697 PUSH2 0x4671 JUMP JUMPDEST SWAP1 MSTORE JUMP JUMPDEST PUSH2 0x46A6 DUP3 DUP3 MLOAD PUSH2 0x4687 JUMP JUMPDEST PUSH1 0x20 DUP2 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP2 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP5 ADD MSTORE PUSH1 0x80 SWAP2 DUP3 ADD MLOAD AND SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4734 JUMPI DUP2 MLOAD PUSH2 0x4707 DUP9 DUP3 MLOAD PUSH2 0x469B JUMP JUMPDEST DUP1 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0xA0 DUP10 ADD MSTORE PUSH1 0x40 ADD MLOAD PUSH1 0xC0 DUP9 ADD MSTORE PUSH1 0xE0 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x46F2 JUMP JUMPDEST POP SWAP5 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x528 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x46DE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4764 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x477A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH2 0x160 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x47A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x47C2 DUP6 DUP3 DUP7 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x47E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x47FB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4807 DUP9 DUP4 DUP10 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4820 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x482D DUP8 DUP3 DUP9 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x484C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4862 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x40 DUP2 DUP7 SUB SLT ISZERO PUSH2 0x4874 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x60 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4898 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x48AF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP7 ADD SWAP1 PUSH1 0xA0 DUP3 DUP10 SUB SLT ISZERO PUSH2 0x48C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x48D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x48E6 DUP8 DUP3 DUP9 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP6 SWAP9 SWAP1 SWAP8 POP SWAP5 SWAP6 PUSH1 0x40 ADD CALLDATALOAD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4915 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x492C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4938 DUP13 DUP4 DUP14 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH1 0x20 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x495D DUP13 DUP4 DUP14 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x40 DUP12 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4976 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4983 DUP12 DUP3 DUP13 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP10 SWAP13 SWAP9 SWAP12 POP SWAP7 SWAP10 SWAP6 SWAP9 SWAP7 SWAP8 PUSH1 0x60 DUP8 ADD CALLDATALOAD SWAP7 PUSH1 0x80 ADD CALLDATALOAD SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 DUP3 MSTORE DUP4 MLOAD SWAP1 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x20 SWAP1 PUSH1 0x60 DUP5 ADD SWAP1 DUP3 DUP8 ADD DUP5 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x49DC JUMPI DUP2 MLOAD ISZERO ISZERO DUP5 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP1 DUP5 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x49BE JUMP JUMPDEST POP POP POP DUP4 DUP2 SUB DUP3 DUP6 ADD MSTORE PUSH2 0x377 DUP2 DUP7 PUSH2 0x46DE JUMP JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x0 PUSH2 0x4A03 PUSH1 0x60 DUP4 ADD DUP7 PUSH2 0x3F91 JUMP JUMPDEST PUSH1 0x20 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND PUSH1 0x40 SWAP1 SWAP2 ADD MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4A35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4A4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH2 0x240 DUP2 DUP6 SUB SLT ISZERO PUSH2 0x528 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xC0 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x4A7C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP10 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4A93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A9F DUP14 DUP4 DUP15 ADD PUSH2 0x4508 JUMP JUMPDEST SWAP11 POP PUSH1 0x20 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4AB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4AC1 DUP14 DUP4 DUP15 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP1 SWAP11 POP SWAP9 POP PUSH1 0x40 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4ADA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4AE6 DUP14 DUP4 DUP15 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP1 SWAP9 POP SWAP7 POP PUSH1 0x60 DUP13 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4AFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B0C DUP13 DUP3 DUP14 ADD PUSH2 0x4592 JUMP JUMPDEST SWAP11 SWAP14 SWAP10 SWAP13 POP SWAP8 SWAP11 SWAP7 SWAP10 SWAP6 SWAP9 SWAP6 SWAP7 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP7 PUSH1 0xA0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x4B3C PUSH2 0x4190 DUP5 PUSH2 0x40DD JUMP JUMPDEST DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD SWAP2 SWAP1 PUSH1 0x5 DUP7 DUP2 SHL DUP7 ADD CALLDATASIZE DUP2 GT ISZERO PUSH2 0x4B5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP7 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4C55 JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4B7C JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP11 ADD SWAP2 POP PUSH1 0xA0 DUP3 CALLDATASIZE SUB SLT ISZERO PUSH2 0x4B92 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x4B9A PUSH2 0x4062 JUMP JUMPDEST DUP3 CALLDATALOAD DUP2 MSTORE DUP7 DUP4 ADD CALLDATALOAD PUSH1 0x2 DUP2 LT PUSH2 0x4BB0 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP2 DUP9 ADD MSTORE PUSH1 0x40 DUP4 DUP2 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x60 DUP1 DUP5 ADD CALLDATALOAD SWAP1 DUP3 ADD MSTORE PUSH1 0x80 DUP1 DUP5 ADD CALLDATALOAD DUP4 DUP2 GT ISZERO PUSH2 0x4BDC JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP4 SWAP1 SWAP4 ADD SWAP3 CALLDATASIZE PUSH1 0x1F DUP6 ADD SLT PUSH2 0x4BF3 JUMPI PUSH1 0x0 SWAP3 POP DUP3 DUP4 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x4C03 PUSH2 0x4190 DUP5 PUSH2 0x40DD JUMP JUMPDEST DUP4 DUP2 MSTORE SWAP3 DUP8 SHL DUP5 ADD DUP9 ADD SWAP3 DUP9 DUP2 ADD SWAP1 CALLDATASIZE DUP6 GT ISZERO PUSH2 0x4C20 JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP5 DUP10 ADD SWAP5 JUMPDEST DUP5 DUP7 LT ISZERO PUSH2 0x4C3E JUMPI DUP6 CALLDATALOAD DUP3 MSTORE SWAP5 DUP10 ADD SWAP5 SWAP1 DUP10 ADD SWAP1 PUSH2 0x4C25 JUMP JUMPDEST SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 MSTORE POP POP SWAP5 DUP4 ADD SWAP5 DUP4 ADD PUSH2 0x4B5C JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4C79 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4C93 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP PUSH1 0xA0 DUP2 MUL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x45D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xA0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4CBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x528 DUP4 DUP4 PUSH2 0x410F JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4CDD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4CF7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP PUSH1 0xC0 DUP2 MUL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x45D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0xC0 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D20 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x528 DUP4 DUP4 PUSH2 0x41E4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4D3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x528 DUP3 PUSH2 0x42DA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35A CALLDATASIZE DUP4 PUSH2 0x4453 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 PUSH1 0x3E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4D7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 CALLDATALOAD PUSH2 0x15E NOT DUP4 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4D7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x35A CALLDATASIZE DUP4 PUSH2 0x42E9 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4DC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4DDB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP CALLDATASIZE DUP2 SWAP1 SUB DUP3 SGT ISZERO PUSH2 0x45D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4E02 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x40 DUP2 ADD DUP2 DUP2 LT PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT OR ISZERO PUSH2 0x4E24 JUMPI PUSH2 0x4E24 PUSH2 0x404C JUMP JUMPDEST PUSH1 0x40 MSTORE 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 PUSH2 0x4E4C PUSH2 0x4190 DUP5 PUSH2 0x40DD JUMP JUMPDEST DUP1 DUP5 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP3 POP DUP6 PUSH1 0x5 SHL DUP6 ADD CALLDATASIZE DUP2 GT ISZERO PUSH2 0x4E6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4F04 JUMPI DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4E8B JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP8 ADD CALLDATASIZE PUSH1 0x1F DUP3 ADD SLT PUSH2 0x4E9D JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH2 0x4EAB PUSH2 0x4190 DUP3 PUSH2 0x40DD JUMP JUMPDEST DUP2 DUP2 MSTORE PUSH1 0x6 SWAP2 SWAP1 SWAP2 SHL DUP3 ADD DUP6 ADD SWAP1 DUP6 DUP2 ADD SWAP1 CALLDATASIZE DUP4 GT ISZERO PUSH2 0x4ECB JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST SWAP3 DUP7 ADD SWAP3 JUMPDEST DUP3 DUP5 LT ISZERO PUSH2 0x4EF4 JUMPI PUSH2 0x4EE2 CALLDATASIZE DUP6 PUSH2 0x4DF0 JUMP JUMPDEST DUP3 MSTORE DUP7 DUP3 ADD SWAP2 POP PUSH1 0x40 DUP5 ADD SWAP4 POP PUSH2 0x4ED0 JUMP JUMPDEST DUP9 MSTORE POP POP POP SWAP4 DUP3 ADD SWAP4 DUP3 ADD PUSH2 0x4E6C JUMP JUMPDEST POP SWAP2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 CALLDATALOAD PUSH1 0x1E NOT DUP5 CALLDATASIZE SUB ADD DUP2 SLT PUSH2 0x4F27 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD DUP1 CALLDATALOAD SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x4F41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 ADD SWAP2 POP PUSH1 0x6 DUP2 SWAP1 SHL CALLDATASIZE SUB DUP3 SGT ISZERO PUSH2 0x45D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 NOT DIV DUP4 GT DUP3 ISZERO ISZERO AND ISZERO PUSH2 0x4F89 JUMPI PUSH2 0x4F89 PUSH2 0x4F59 JUMP JUMPDEST POP MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x4FA1 JUMPI PUSH2 0x4FA1 PUSH2 0x4F59 JUMP JUMPDEST POP ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0x4FB8 JUMPI PUSH2 0x4FB8 PUSH2 0x4F59 JUMP JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4734 JUMPI PUSH2 0x4FE4 DUP8 DUP4 MLOAD PUSH2 0x469B JUMP JUMPDEST PUSH1 0xA0 SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4FD1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x80 DUP1 DUP4 ADD DUP8 DUP5 MSTORE PUSH1 0x20 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND DUP3 DUP8 ADD MSTORE PUSH1 0x40 DUP5 DUP2 DUP9 ADD MSTORE DUP4 DUP10 MLOAD DUP1 DUP7 MSTORE PUSH1 0xA0 DUP10 ADD SWAP2 POP DUP5 DUP12 ADD SWAP6 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x506D JUMPI DUP7 MLOAD PUSH2 0x5041 DUP5 DUP3 MLOAD PUSH2 0x4687 JUMP JUMPDEST DUP1 DUP8 ADD MLOAD DUP7 AND DUP5 DUP9 ADD MSTORE DUP5 DUP2 ADD MLOAD DUP6 DUP6 ADD MSTORE PUSH1 0x60 SWAP1 DUP2 ADD MLOAD SWAP1 DUP5 ADD MSTORE SWAP6 DUP6 ADD SWAP6 SWAP2 DUP8 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x502C JUMP JUMPDEST POP POP DUP8 DUP2 SUB PUSH1 0x60 DUP10 ADD MSTORE PUSH2 0x5081 DUP2 DUP11 PUSH2 0x4FBD JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x50A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x528 DUP4 DUP4 PUSH2 0x4DF0 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4734 JUMPI DUP2 MLOAD PUSH2 0x50D6 DUP9 DUP3 MLOAD PUSH2 0x4687 JUMP JUMPDEST DUP4 DUP2 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP9 DUP6 ADD MSTORE PUSH1 0x40 DUP1 DUP3 ADD MLOAD SWAP1 DUP10 ADD MSTORE PUSH1 0x60 DUP1 DUP3 ADD MLOAD SWAP1 DUP10 ADD MSTORE PUSH1 0x80 SWAP1 DUP2 ADD MLOAD SWAP1 DUP9 ADD MSTORE PUSH1 0xA0 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x50C1 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4734 JUMPI DUP2 MLOAD PUSH2 0x5140 DUP9 DUP3 MLOAD PUSH2 0x4687 JUMP JUMPDEST DUP1 DUP5 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP10 DUP7 ADD MSTORE PUSH1 0x40 DUP1 DUP4 ADD MLOAD SWAP1 DUP11 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP11 ADD MSTORE PUSH1 0x80 DUP1 DUP4 ADD MLOAD SWAP1 DUP11 ADD MSTORE PUSH1 0xA0 SWAP2 DUP3 ADD MLOAD AND SWAP1 DUP9 ADD MSTORE PUSH1 0xC0 SWAP1 SWAP7 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x512B JUMP JUMPDEST PUSH1 0x4 DUP2 LT PUSH2 0x4697 JUMPI PUSH2 0x4697 PUSH2 0x4671 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH1 0x20 DUP1 DUP6 ADD SWAP5 POP DUP1 DUP5 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4734 JUMPI DUP2 MLOAD DUP8 MSTORE SWAP6 DUP3 ADD SWAP6 SWAP1 DUP3 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x51B2 JUMP JUMPDEST PUSH1 0x2 DUP2 LT PUSH2 0x4697 JUMPI PUSH2 0x4697 PUSH2 0x4671 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MLOAD DUP1 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP6 POP DUP1 DUP3 PUSH1 0x5 SHL DUP5 ADD ADD DUP2 DUP7 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x41D7 JUMPI PUSH1 0x1F NOT DUP7 DUP5 SUB ADD DUP10 MSTORE DUP2 MLOAD PUSH1 0xA0 DUP2 MLOAD DUP6 MSTORE DUP6 DUP3 ADD MLOAD PUSH2 0x5224 DUP8 DUP8 ADD DUP3 PUSH2 0x51CE JUMP JUMPDEST POP PUSH1 0x40 DUP3 DUP2 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH1 0x60 DUP1 DUP4 ADD MLOAD SWAP1 DUP7 ADD MSTORE PUSH1 0x80 SWAP2 DUP3 ADD MLOAD SWAP2 DUP6 ADD DUP2 SWAP1 MSTORE PUSH2 0x5251 DUP2 DUP7 ADD DUP4 PUSH2 0x519E JUMP JUMPDEST SWAP11 DUP7 ADD SWAP11 SWAP5 POP POP POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x51FB JUMP JUMPDEST DUP6 DUP2 MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x140 DUP6 MLOAD PUSH1 0xA0 DUP1 DUP6 ADD MSTORE PUSH2 0x529F DUP3 DUP6 ADD DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD MLOAD PUSH2 0x160 PUSH2 0x52BB DUP2 DUP8 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP4 ADD MLOAD SWAP2 POP DUP1 PUSH2 0x180 DUP8 ADD MSTORE POP PUSH2 0x52D8 PUSH2 0x2A0 DUP7 ADD DUP3 PUSH2 0x50AD JUMP JUMPDEST SWAP1 POP PUSH1 0x60 DUP3 ADD MLOAD PUSH2 0x13F NOT DUP7 DUP4 SUB ADD PUSH2 0x1A0 DUP8 ADD MSTORE PUSH2 0x52F7 DUP3 DUP3 PUSH2 0x5117 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x80 DUP3 ADD MLOAD PUSH2 0x530D PUSH2 0x1C0 DUP8 ADD DUP3 PUSH2 0x518E JUMP JUMPDEST POP PUSH1 0xA0 DUP3 ADD MLOAD PUSH2 0x1E0 DUP7 ADD MSTORE PUSH1 0xC0 DUP3 ADD MLOAD PUSH2 0x200 DUP7 ADD MSTORE PUSH1 0xE0 DUP3 ADD MLOAD PUSH2 0x220 DUP7 ADD MSTORE PUSH2 0x100 DUP1 DUP4 ADD MLOAD PUSH2 0x240 DUP8 ADD MSTORE PUSH2 0x120 DUP1 DUP5 ADD MLOAD PUSH2 0x260 DUP9 ADD MSTORE DUP5 DUP5 ADD MLOAD PUSH2 0x280 DUP9 ADD MSTORE PUSH1 0x20 DUP11 ADD MLOAD SWAP5 POP PUSH2 0x536F PUSH1 0xC0 DUP9 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST PUSH1 0x40 DUP11 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x78 SHL SUB AND PUSH1 0xE0 DUP9 ADD MSTORE PUSH1 0x60 DUP11 ADD MLOAD DUP8 DUP5 SUB PUSH1 0x9F NOT SWAP1 DUP2 ADD DUP5 DUP11 ADD MSTORE SWAP1 SWAP6 POP SWAP4 POP PUSH2 0x53A3 DUP4 DUP7 PUSH2 0x3F91 JUMP JUMPDEST SWAP5 POP PUSH1 0x80 DUP11 ADD MLOAD SWAP3 POP DUP4 DUP8 DUP7 SUB ADD DUP2 DUP9 ADD MSTORE POP POP PUSH2 0x53C1 DUP4 DUP3 PUSH2 0x3F91 JUMP JUMPDEST SWAP3 POP POP POP DUP3 DUP2 SUB PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x53D7 DUP2 DUP7 PUSH2 0x519E JUMP JUMPDEST SWAP1 POP DUP3 DUP2 SUB PUSH1 0x80 DUP5 ADD MSTORE PUSH2 0x32DA DUP2 DUP6 PUSH2 0x51DE JUMP JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x35A DUP3 DUP5 PUSH2 0x51CE JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x0 PUSH2 0x5A5 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x3F91 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLER PUSH27 0x1990BF93BD9B7C70054F5E27E0DA8850C8FE4A29B2B59E75A79230 SWAP5 MLOAD 0xF PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "771:1277:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27768:195:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26810:215;;;;;;;;;;-1:-1:-1;26810:215:0;;;;;:::i;:::-;;:::i;:::-;;;1389:25:45;;;1377:2;1362:18;26810:215:0;1243:177:45;26270:354:0;;;;;;;;;;-1:-1:-1;26270:354:0;;;;;:::i;:::-;26390:16;17252:23:35;;;:12;:23;;;;;;;;;17219:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17219:56:35;;;;;;;;;;;-1:-1:-1;;;17219:56:35;;;;;;;;;;;;;;;;;26270:354:0;;;;;1854:14:45;;1847:22;1829:41;;1913:14;;1906:22;1901:2;1886:18;;1879:50;1945:18;;;1938:34;2003:2;1988:18;;1981:34;1816:3;1801:19;26270:354:0;1610:411:45;21821:494:0;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;24317:177::-;;;;;;;;;;;;;:::i;24678:705::-;;;;;;;;;;-1:-1:-1;24678:705:0;;;;;:::i;:::-;;:::i;23870:192::-;;;;;;;;;;-1:-1:-1;23870:192:0;;;;;:::i;:::-;;:::i;:::-;;;14890:14:45;;14883:22;14865:41;;14853:2;14838:18;23870:192:0;14725:187:45;18909:478:0;;;;;;:::i;:::-;;:::i;4982:458::-;;;;;;:::i;:::-;;:::i;7921:430::-;;;;;;:::i;:::-;;:::i;11346:875::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;27330:303::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;:::i;3349:275::-;;;;;;:::i;:::-;;:::i;16588:820::-;;;;;;:::i;:::-;;:::i;22834:196::-;;;;;;;;;;-1:-1:-1;22834:196:0;;;;;:::i;:::-;;:::i;27768:195::-;27848:26;27949:7;:5;:7::i;:::-;27934:22;;27768:195;:::o;26810:215::-;-1:-1:-1;;;;;1796:16:32;;26909:13:0;1796:16:32;;;:7;:16;;;;;;27000:18:0;26992:26;26810:215;-1:-1:-1;;26810:215:0:o;21821:494::-;22038:29;22177:131;22215:14;22177:131;22247:17;;22177:131;:::i;:::-;22282:12;;22177:20;:131::i;:::-;22158:150;21821:494;-1:-1:-1;;;;;;21821:494:0:o;24317:177::-;24370:16;24470:17;:15;:17::i;24678:705::-;24952:389;;;;;;;;;24796:17;;24922:454;;24952:389;24985:13;;;;:5;:13;:::i;:::-;-1:-1:-1;;;;;24952:389:0;;;;;25016:5;:10;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24952:389:0;;;;;25044:11;;;;:5;:11;:::i;:::-;24952:389;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;24952:389:0;;;-1:-1:-1;;24952:389:0;;25073:19;;;;:5;:19;:::i;:::-;24952:389;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;24952:389:0;;;-1:-1:-1;;24952:389:0;;25110:15;;;;;;;;:::i;:::-;24952:389;;;;;;;;:::i;:::-;;;;;25143:5;:15;;;24952:389;;;;25176:5;:13;;;24952:389;;;;25207:5;:14;;;24952:389;;;;25239:5;:10;;;24952:389;;;;25267:5;:16;;;24952:389;;;;25301:5;:19;;;;;;;;:::i;:::-;24952:389;;;-1:-1:-1;25355:11:0;;;;24922:16;:454::i;23870:192::-;23964:14;24038:17;24048:6;;24038:9;:17::i;:::-;24026:29;23870:192;-1:-1:-1;;;23870:192:0:o;18909:478::-;19049:29;19188:192;19226:32;19251:6;;19226:24;:32::i;:::-;19276:25;;;19299:1;19276:25;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19276:25:0;;;;;;;;;;;;;;;;;19354:12;;19188:20;:192::i;:::-;19169:211;;18909:478;;;;;;;:::o;4982:458::-;5122:14;5240:193;5286:30;5310:5;5286:23;:30::i;:::-;5330:25;;;5353:1;5330:25;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5330:25:0;;;;;;;;;;;;;;;;;5404:19;5240:32;:193::i;7921:430::-;8130:14;8211:133;;8257:13;8211:133;:::i;:::-;;8284:17;;8211:133;:::i;:::-;8315:19;8211:32;:133::i;11346:875::-;11685:29;11716;11861:353;11910:32;11935:6;;11910:24;:32::i;:::-;11991:25;;;12014:1;11991:25;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11991:25:0;;;;;;;;;;;;;;;;;12069:17;;12104:25;;12147:19;12184:16;11861:31;:353::i;:::-;11842:372;;;;11346:875;;;;;;;;;;;:::o;27330:303::-;27430:21;27465:23;27502:25;27612:14;:12;:14::i;:::-;27605:21;;;;;;27330:303;;;:::o;3349:275::-;3485:14;3576:41;3606:10;3576:29;:41::i;16588:820::-;17004:29;;17140:261;17189:14;17140:261;17221:17;;17140:261;:::i;:::-;17256:17;;17291:25;;17334:19;17371:16;17140:31;:261::i;:::-;17121:280;;;;16588:820;;;;;;;;;;;;:::o;22834:196::-;22936:14;23008:15;23016:6;;23008:7;:15::i;1412:245:1:-;1461:13;1563:4;1560:1;1553:15;1594:18;1588:4;1581:32;1636:4;1560:1;1626:15;32960:661:33;33159:29;33277:204;33325:14;33353:17;33384:4;33450:14;:21;33277:34;:204::i;:::-;33562:52;33585:14;33601:12;;33562:22;:52::i;886:494:32:-;931:16;1025:21;:19;:21::i;:::-;-1:-1:-1;1247:10:32;1239:19;;;;:7;:19;;;;;;;;;1237:21;;;;;;;;;1335:38;;1389:25:45;;;1237:21:32;;1247:10;1335:38;;1362:18:45;1335:38:32;;;;;;;886:494;:::o;1366:7239:30:-;1654:47;;;;2460:21;2454:28;;2573:30;;;2567:37;2669:18;;1492:17;;1654:47;1492:17;;2230:20;;2791:7;2774:25;;;;1492:17;2889:889;2914:11;2911:1;2908:18;2889:889;;;3127:18;;-1:-1:-1;;3123:32:30;3251:10;;3340:21;;;3485;3470:37;;3451:57;;3572:18;;-1:-1:-1;3740:24:30;;;;3684:25;;;;2957:1;2950:9;2889:889;;;2893:14;3963:7;3950:11;3946:25;3906:21;3900:28;3873:112;3860:125;;;;;4084:25;4211:28;4200:39;;4449:21;4443:28;4788:7;4689:41;4648:15;4619:133;4592:178;4571:238;4935:1;4920:953;4945:27;4942:1;4939:34;4920:953;;;5182:26;;-1:-1:-1;;5178:40:30;5322:10;;5411:21;;;5556:29;5541:45;;5522:65;;5651:18;;-1:-1:-1;5835:24:30;;;;5771:33;;;;5004:1;4997:9;4920:953;;;-1:-1:-1;;6017:21:30;6011:28;;6090:7;6057:41;;5984:128;;-1:-1:-1;;6450:29:30;;6588:18;;6223:15;6699:29;;6824:101;;;7030:19;;7133:31;;;7330:41;7276:109;;7506:27;;7625:47;;;7774:28;7753:50;;;7882:23;;;8034:17;8011:41;;8145:34;;;;8271;;;;8400:50;;;;-1:-1:-1;;8544:45:30;;-1:-1:-1;8011:41:30;1366:7239;-1:-1:-1;1366:7239:30:o;13470:2547:35:-;13548:14;13644:21;:19;:21::i;:::-;13726:17;;13976:6;13726:17;14044:1850;14068:11;14064:1;:15;14044:1850;;;14140:20;14163:6;;14170:1;14163:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;14140:32;-1:-1:-1;14241:40:35;14284:16;14140:32;;14284:16;:::i;:::-;14241:59;-1:-1:-1;14387:23:35;;;;14241:59;14387:23;:::i;:::-;14377:33;-1:-1:-1;14521:102:35;;14590:15;14521:102;:::i;:::-;:47;:102::i;:::-;14717:30;14750:23;;;:12;:23;;;;;;;;14717:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14717:56:35;;;;;;;;;;;;-1:-1:-1;;;14717:56:35;;;;;;;;14509:114;;-1:-1:-1;14868:254:35;;14509:114;;14717:56;;;14868:18;:254::i;:::-;-1:-1:-1;15212:23:35;;15207:570;;15313:53;15330:7;15339:9;15350:15;;;;:5;:15;:::i;:::-;15313:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15313:16:35;;-1:-1:-1;;;15313:53:35:i;:::-;15460:23;;;;:12;:23;;;;;;;;;:42;;-1:-1:-1;;15460:42:35;15498:4;15460:42;;;15716:20;;;;;;;;:::i;:::-;-1:-1:-1;;;;;15608:150:35;15683:7;-1:-1:-1;;;;;15608:150:35;;15648:9;15608:150;;;;1389:25:45;;1377:2;1362:18;;1243:177;15608:150:35;;;;;;;;15207:570;15876:3;;;;;14083:1811;;;14044:1850;;;-1:-1:-1;16006:4:35;;13470:2547;-1:-1:-1;;;;;;13470:2547:35:o;18379:859:34:-;18485:37;18635:6;;-1:-1:-1;;;;;18746:32:34;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;18729:49;;18937:9;18932:210;18956:11;18952:1;:15;18932:210;;;19093:34;19117:6;;19124:1;19117:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;19093:23;:34::i;:::-;19073:14;19088:1;19073:17;;;;;;;;:::i;:::-;;;;;;;;;;:54;18969:3;;18932:210;;;;19210:21;18379:859;;;;:::o;17711:380::-;17813:34;;:::i;:::-;17956:128;;;;;;;;;;17983:16;:5;;:16;:::i;:::-;17956:128;;;:::i;:::-;;;;;18013:1;-1:-1:-1;;;;;17956:128:34;;;;;18028:1;-1:-1:-1;;;;;17956:128:34;;;;;18043:5;:15;;;;;;;;:::i;:::-;17956:128;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17956:128:34;;;-1:-1:-1;;17956:128:34;;;;;;;;;;;;;;;;;-1:-1:-1;17940:144:34;17711:380;-1:-1:-1;;17711:380:34:o;2946:2055::-;3146:4;3239:21;:19;:21::i;:::-;3339:33;3471:17;3502:21;3537:23;3573:165;3620:13;3651:17;3686:4;3708:16;3573:29;:165::i;:::-;3852:22;;;3872:1;3852:22;;;;;;;;;3457:281;;-1:-1:-1;3457:281:34;;-1:-1:-1;3457:281:34;-1:-1:-1;3812:37:34;;3852:22;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;3812:62;;3983:13;3963:14;3978:1;3963:17;;;;;;;;:::i;:::-;;;;;;:33;;;;4086:58;4110:14;4126:17;4086:23;:58::i;:::-;4231:38;4272:14;4287:1;4272:17;;;;;;;;:::i;:::-;;;;;;;:28;;;4231:69;;4389:198;4433:15;4462:13;4489:15;4518;:26;;;4558:19;4389:30;:198::i;:::-;4669:230;4707:9;4730:15;:23;;;4767:15;:20;;;4801:10;4825:15;:21;;;4860:15;:29;;;4669:24;:230::i;:::-;4949:23;2287:1:24;1322:16:36;:31;1231:129;4949:23:34;-1:-1:-1;4990:4:34;;2946:2055;-1:-1:-1;;;;;;;;;2946:2055:34:o;5692:1149:33:-;6074:29;6105;6231:204;6279:14;6307:17;6338:5;6409:16;6231:34;:204::i;:::-;6557:170;6600:14;6557:170;6628:17;;6557:170;:::i;:::-;;6659:25;;6557:170;:::i;:::-;6698:19;6557:29;:170::i;:::-;6525:202;;;;-1:-1:-1;5692:1149:33;-1:-1:-1;;;;;;;;;5692:1149:33:o;11826:686:30:-;11910:21;11945:23;11982:25;12090:18;:16;:18::i;:::-;12321:26;;;2251:1:24;12321:26:30;;;;;;;;;12072:36;;-1:-1:-1;12225:19:30;;-1:-1:-1;12321:26:30;;;;;;;;-1:-1:-1;;;;;12467:7:30;12454:21;;12447:49;-1:-1:-1;12454:21:30;11826:686;;-1:-1:-1;11826:686:30;:::o;2882:9033:22:-;2995:4;3674:1;3498:31;3485:45;3623:53;;;;3532:1;3481:53;3813:1;3803:12;;4242:11;4235:19;4161:111;;;4450:93;;4502:26;;-1:-1:-1;;;4502:26:22;;4518:9;4502:26;;;1389:25:45;1362:18;;4502:26:22;;;;;;;;4450:93;3835:718;4643:33;4686:25;4721:24;4988:1;4981:5;4978:12;5262:9;5225:35;5221:51;5164:35;5139:151;5109:195;5080:224;;5571:1;5564:5;5561:12;5540:1;5533:5;5530:12;5526:1;5519:5;5515:13;5511:32;5490:97;5470:117;;5975:1;5957:16;5953:24;5896:35;5871:124;5850:1;5819:28;5812:36;5808:44;5801:5;5797:56;5776:233;5757:252;;;6106:233;6156:10;6180:9;6203:16;6233:28;6275:25;6314:15;6106:36;:233::i;:::-;6412:23;6438:18;;;;;;;;:::i;:::-;6412:44;-1:-1:-1;6790:31:22;6837:1;6827:12;;6841:7;6823:26;6786:64;6756:108;6534:18;6935:28;:47;;;;;;;;:::i;:::-;;6931:4956;;6998:283;7048:15;7081:21;;;;;;;;:::i;:::-;7120:7;7145:10;7173;:26;;;7217:10;:22;;;7257:10;6998:32;:283::i;:::-;7377:159;7418:30;;;;7466:7;7491:31;;;;7418:10;7491:31;:::i;:::-;7377:23;:159::i;:::-;6931:4956;;;7964:30;;;13284:4:24;7964:30:22;;;;;;;;;7937:24;;7964:30;;;;;;;;;;-1:-1:-1;;7937:57:22;-1:-1:-1;8022:35:22;8013:5;:44;;;;;;;;:::i;:::-;;8009:3745;;8158:294;8195:21;;;;;;;;:::i;:::-;8238:7;8267:10;8299;:26;;;8347:10;:22;;;8391:10;8423:11;8158:15;:294::i;:::-;8543:374;8590:10;8622:7;8651:29;;;;:10;:29;:::i;:::-;8702:10;:30;;;8754:10;:31;;;;;;;;:::i;:::-;8807:5;8888:11;8543:25;:374::i;:::-;8009:3745;;;8951:36;8942:5;:45;;;;;;;;:::i;:::-;;8938:2816;;9088:295;9126:21;;;;;;;;:::i;:::-;9169:7;9198:10;9230;:26;;;9278:10;:22;;;9322:10;9354:11;9088:16;:295::i;8938:2816::-;9882:35;9873:5;:44;;;;;;;;:::i;:::-;;9869:1885;;10018:318;10055:29;;;;:10;:29;:::i;:::-;10106:10;10138:7;10167:10;:34;;;10223:10;:30;;;10275:10;10307:11;10018:15;:318::i;:::-;10427:358;10474:7;10503:10;10535;:21;;;;;;;;;;:::i;:::-;10578:10;:22;;;10622:10;:31;;;;;;;;:::i;:::-;10675:4;10756:11;10427:25;:358::i;9869:1885::-;10971:319;11009:29;;;;:10;:29;:::i;:::-;11060:10;11092:7;11121:10;:34;;;11177:10;:30;;;11229:10;11261:11;10971:16;:319::i;:::-;11381:358;11428:7;11457:10;11489;:21;;;;;;;;;;:::i;11381:358::-;11848:28;11864:11;11848:15;:28::i;:::-;7553:4334;-1:-1:-1;11904:4:22;;2882:9033;-1:-1:-1;;;;;;;;;2882:9033:22:o;10437:2201:35:-;10523:14;10619:21;:19;:21::i;:::-;10651:15;;10896:6;10651:15;10964:1551;10988:11;10984:1;:15;10964:1551;;;11060:30;11093:6;;11100:1;11093:9;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;11060:42;-1:-1:-1;11131:13:35;;;;11060:42;11131:13;:::i;:::-;11121:23;-1:-1:-1;11169:10:35;;;;;;;;:::i;:::-;11162:17;-1:-1:-1;11275:10:35;-1:-1:-1;;;;;11275:21:35;;;;;;:43;;-1:-1:-1;11300:10:35;-1:-1:-1;;;;;11300:18:35;;;;11275:43;11271:115;;;11349:18;;-1:-1:-1;;;11349:18:35;;;;;;;;;;;11271:115;11483:17;11503:562;11541:473;;;;;;;;11582:7;-1:-1:-1;;;;;11541:473:35;;;;;11615:4;-1:-1:-1;;;;;11541:473:35;;;;;11645:5;:11;;;;;;;;:::i;:::-;11541:473;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;11541:473:35;;;-1:-1:-1;;11541:473:35;;11682:19;;;;:5;:19;:::i;:::-;11541:473;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;11503:562;12193:5;12155:23;;;:12;:23;;;;;;;:43;;-1:-1:-1;;12216:42:35;12155:43;12216:42;;;12361:40;11483:582;;-1:-1:-1;;;;;;12361:40:35;;;;;;;;;;;;11483:582;1389:25:45;;1377:2;1362:18;;1243:177;12361:40:35;;;;;;;;-1:-1:-1;;12497:3:35;;10964:1551;;8147:9851:33;8457:21;:19;:21::i;:::-;8574;;8552:19;8574:21;-1:-1:-1;;;;;8701:26:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8701:26:33;;8670:57;;8861:1;8848:11;8841:22;9031:9;9026:7445;9050:11;9046:1;:15;9026:7445;;;9133:34;9170:14;9185:1;9170:17;;;;;;;;:::i;:::-;;;;;;;9133:54;;9289:16;9309:1;9289:21;9285:455;;9441:1;9415:23;;;;:27;9594:1;9587:9;;9567:30;;9713:8;;9285:455;9859:17;9898;9937:19;9977:211;10032:13;10071:17;10114:15;10155:11;9977:29;:211::i;:::-;9837:351;;;;;;10328:1;10325;10321:9;10308:11;10301:30;10452:9;10465:1;10452:14;10448:272;;-1:-1:-1;;10597:1:33;10571:23;;;;:27;;;;-1:-1:-1;10693:8:33;;10448:272;10819:9;10802:11;10814:1;10802:14;;;;;;;;:::i;:::-;;;;;;;;;;:26;11033:24;;:34;;;;11185:32;;;;11634:30;;;;;-1:-1:-1;;10908:18:33;;;;11033:34;;11185:44;;;;11347:15;:27;;;;11494:18;;;;11013:17;11745:1615;11769:5;:12;11765:1;:16;11745:1615;;;11858:26;11887:5;11893:1;11887:8;;;;;;;;:::i;:::-;;;;;;;11858:37;;11993:17;12013:151;12051:9;12086:11;12123:9;:19;;;12013:12;:151::i;:::-;11993:171;;12295:9;:19;;;12270:9;:21;;;:44;12266:539;;12420:21;;;:33;;;12266:539;;;12613:169;12655:9;12694:11;12735:9;:21;;;12613:12;:169::i;:::-;12589:21;;;:193;12266:539;12907:19;;;:31;;;13106:21;;;;13060:281;;12929:9;13198:7;13231:9;13266:8;13300:5;13060:20;:281::i;:::-;13036:21;;;;:305;;;;-1:-1:-1;11783:3:33;;11745:1615;;;-1:-1:-1;13523:24:33;;:38;;;13458:40;13668:2789;13692:13;:20;13688:1;:24;13668:2789;;;13797:42;13868:13;13882:1;13868:16;;;;;;;;:::i;:::-;;;;;;;13797:109;;14001:17;14021:159;14059:9;14094:11;14131:17;:27;;;14021:12;:159::i;:::-;14001:179;;14368:17;:27;;;14311:17;:29;;;:84;14282:646;;14522:29;;;:41;;;14282:646;;;14728:177;14770:9;14809:11;14850:17;:29;;;14728:12;:177::i;:::-;14696:29;;;:209;14282:646;15030:27;;;:39;;;15281:29;;;;15231:322;;15060:9;15397:7;15434:9;15473:8;15511:4;15231:20;:322::i;:::-;15173:29;;;:402;-1:-1:-1;16293:34:33;16197:164;;16158:233;16052:29;15964:164;;;15928:489;13714:3;;13668:2789;;;;9068:7403;;;;;;;;;;9026:7445;9063:3;;9026:7445;;;;16556:58;16580:14;16596:17;16556:23;:58::i;:::-;16928:23;;16953:8;16924:38;16705:17;17204:778;17228:11;17224:1;:15;17204:778;;;17363:1;17355:10;;17337:11;17349:1;17337:14;;;;;;;;:::i;:::-;;;;;;;:28;17333:83;17389:8;17333:83;17500:38;17563:14;17578:1;17563:17;;;;;;;;:::i;:::-;;;;;;;:28;;;17500:109;;17677:290;17723:11;17735:1;17723:14;;;;;;;;:::i;:::-;;;;;;;17759:15;:23;;;17804:15;:20;;;17846:9;17877:15;:21;;;17920:15;:29;;;17677:24;:290::i;:::-;17246:736;17204:778;17241:3;;17204:778;;;;8370:9628;;;8147:9851;;;;:::o;34535:2261::-;34683:29;34822:12;;-1:-1:-1;;;;;34945:34:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;34932:47;;35145:31;35246:9;35241:943;35265:17;35261:1;:21;35241:943;;;35365:32;35400:12;;35413:1;35400:15;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;35365:50;-1:-1:-1;35510:26:33;35539:177;35578:14;35614:27;35365:50;;35614:27;:::i;:::-;35663:35;;;;:11;:35;:::i;:::-;35539:17;:177::i;:::-;35510:206;;35844:9;:17;;;-1:-1:-1;;;;;35816:45:33;:9;:14;;;:24;;;-1:-1:-1;;;;;35816:45:33;;35812:358;;35972:1;35945:28;;;;35812:358;;;36142:9;36100:10;36115:23;36111:1;:27;36100:39;;;;;;;;:::i;:::-;;;;;;:51;;;;35812:358;-1:-1:-1;;35284:3:33;;35241:943;;;-1:-1:-1;36268:28:33;;36264:320;;36506:23;36493:10;36487:17;36483:47;36447:10;36415:137;36264:320;35069:1525;36656:63;36692:14;36708:10;36656:35;:63::i;:::-;;36770:19;34535:2261;;;;;:::o;1510:215:36:-;2287:1:24;1635:16:36;;:32;1631:88;;1690:18;;-1:-1:-1;;;1690:18:36;;;;;;;;;;;1631:88;1510:215::o;1567:650:21:-;1701:7;1801:187;1881:15;:29;;;:36;1931:15;:47;;;1801:66;:187::i;:::-;2172:23;;-1:-1:-1;;;;;1796:16:32;2172:23:21;1796:16:32;;;:7;:16;;;;;;2095:115:21;;2129:15;;2095:16;:115::i;3992:1454:40:-;4176:10;4259:11;:23;;;4255:301;;;4375:15;4371:88;;;4417:27;;-1:-1:-1;;;4417:27:40;;;;;1389:25:45;;;1362:18;;4417:27:40;1243:177:45;4371:88:40;-1:-1:-1;4540:5:40;4533:12;;4255:301;4620:21;;;;-1:-1:-1;;;;;4620:26:40;;4616:748;;4746:15;4742:612;;;4868:31;;-1:-1:-1;;;4868:31:40;;;;;1389:25:45;;;1362:18;;4868:31:40;1243:177:45;4742:612:40;5027:11;:23;;;-1:-1:-1;;;;;5002:48:40;:11;:21;;;-1:-1:-1;;;;;5002:48:40;;4998:356;;5151:15;5147:98;;;5197:29;;-1:-1:-1;;;5197:29:40;;;;;1389:25:45;;;1362:18;;5197:29:40;1243:177:45;4998:356:40;-1:-1:-1;5435:4:40;3992:1454;;;;;;:::o;2639:569::-;2863:10;-1:-1:-1;;;;;2852:21:40;;;2848:58;;2639:569;;;:::o;2848:58::-;2996:14;3013:50;3033:18;:16;:18::i;:::-;-1:-1:-1;;;12925:13:30;13112:25;;;13237:29;13230:54;;;;13589:23;13582:42;;;13712:25;13699:39;;13817:34;;;13699:39;12805:1062;3013:50:40;2996:67;;3152:49;3174:7;3183:6;3191:9;3152:21;:49::i;:::-;2769:439;2639:569;;;:::o;916:217:36:-;1030:21;:19;:21::i;:::-;2318:1:24;1099:16:36;:27;916:217::o;4350:5564:35:-;4612:17;4643:20;4677:22;4774:38;4815:13;:24;;;4774:65;;4949:142;4978:15;:25;;;5021:15;:23;;;5062:15;4949:11;:142::i;:::-;4931:302;;-1:-1:-1;5213:1:35;;-1:-1:-1;5213:1:35;;-1:-1:-1;5213:1:35;;-1:-1:-1;5197:25:35;;4931:302;5349:23;;;;5413:25;;;;-1:-1:-1;;;;;5341:32:35;;;;5405:34;5527:23;;;;:41;;-1:-1:-1;5554:14:35;;5527:41;5523:92;;;5591:13;;-1:-1:-1;;;5591:13:35;;;;;;;;;;;5523:92;5735:11;5723:9;:23;:93;;;;-1:-1:-1;5790:25:35;;;;18339:1;18324:17;18317:25;5762:54;5706:262;;;5925:32;;-1:-1:-1;;;5925:32:35;;;;;;;;;;;5706:262;6071:86;6132:15;6071:47;:86::i;:::-;6059:98;;6249:307;6301:13;6328:17;6359:16;6389:9;6412:15;:24;;;6450:15;:25;;;6489:15;:23;;;6526:15;:20;;;6249:38;:307::i;:::-;6634:30;6667:23;;;:12;:23;;;;;;;;6634:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6634:56:35;;;;;;;;;;;;-1:-1:-1;;;6634:56:35;;;;;;;;;6777:189;;6680:9;;6634:56;;6937:15;6777:18;:189::i;:::-;6759:348;;-1:-1:-1;7091:1:35;;-1:-1:-1;7091:1:35;;-1:-1:-1;7072:24:35;;-1:-1:-1;;;7072:24:35;6759:348;7203:23;;7198:194;;7242:139;7276:15;:23;;;7317:9;7344:13;:23;;;7242:16;:139::i;:::-;7509:21;;;;7568:23;;;;-1:-1:-1;;;;;7483:47:35;;;;7540:51;7687:22;;7683:2092;;7810:11;7825:1;7810:16;7806:668;;7937:17;7925:29;;7986:17;7972:31;;7806:668;;;8139:11;8118:17;:32;8114:360;;8250:30;8269:11;8250:30;;:::i;:::-;;-1:-1:-1;8379:30:35;8392:17;8379:30;;:::i;:::-;;-1:-1:-1;8427:32:35;8442:17;8427:32;;:::i;:::-;;;8114:360;8603:11;8573:27;8591:9;8573:15;:27;:::i;:::-;:41;8569:329;;;8850:15;8836:11;:29;8824:41;;8569:329;9098:23;;;;:12;:23;;;;;:42;;-1:-1:-1;;;;;9347:58:35;;;-1:-1:-1;;;9347:58:35;-1:-1:-1;;;;;9284:27:35;;;9219:110;;;;;;-1:-1:-1;;;;;;9219:110:35;;;;;;;9136:4;9219:110;9347:58;;;;7683:2092;;;9525:23;;;;:12;:23;;;;;:42;;-1:-1:-1;;;;;9706:58:35;;;-1:-1:-1;;;9706:58:35;-1:-1:-1;;;;;9638:54:35;;;;;-1:-1:-1;;;;;;9638:54:35;;;;;;;9563:4;9638:54;9706:58;;;;7683:2092;-1:-1:-1;9884:9:35;;-1:-1:-1;9895:11:35;;-1:-1:-1;;;;4350:5564:35;;;;;;;;;:::o;1535:7144:27:-;1913:24;;2049:21;;1880:30;2137:4711;2161:22;2157:1;:26;2137:4711;;;2259:40;2324:17;2342:1;2324:20;;;;;;;;:::i;:::-;;;;;;;2259:103;;2460:18;2481:16;:27;;;2460:48;;2605:19;2591:10;:33;2587:120;;2655:33;;-1:-1:-1;;;2655:33:27;;;;;;;;;;;2587:120;2801:14;2816:10;2801:26;;;;;;;;:::i;:::-;;;;;;;:36;;;-1:-1:-1;;;;;2801:41:27;2841:1;2801:41;2797:96;;2866:8;;;;2797:96;2969:38;3032:14;3047:10;3032:26;;;;;;;;:::i;:::-;;;;;;;;;;;:37;3210:22;;;;3032:37;;-1:-1:-1;3032:37:27;;;3472:16;:21;;;:35;;;;;;;;:::i;:::-;;3468:2718;;3601:21;;;;3735:12;;3717:30;;3713:125;;3782:33;;-1:-1:-1;;;3782:33:27;;;;;;;;;;;3713:125;3933:26;3962:5;3968:14;3962:21;;;;;;;;:::i;:::-;;;;;;;;;;;4098:18;;4161:30;;;;4098:18;;-1:-1:-1;4161:30:27;-1:-1:-1;3962:21:27;-1:-1:-1;4407:1:27;4394:15;;4391:1;4387:23;3962:21;4387:23;4453:32;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;4621:52:27;;;;4588:30;;;;:85;-1:-1:-1;3468:2718:27;;;4868:29;;;;5032:20;;5014:38;;5010:141;;5087:41;;-1:-1:-1;;;5087:41:27;;;;;;;;;;;5010:141;5252:42;5323:13;5337:14;5323:29;;;;;;;;:::i;:::-;;;;;;;;;;;5489:26;;5586:38;;;;5489:26;;-1:-1:-1;5586:38:27;-1:-1:-1;5323:29:27;-1:-1:-1;5862:1:27;5849:15;;5846:1;5842:23;5323:29;5842:23;5908:40;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;6118:27:27;;;;6051:38;;;;:116;-1:-1:-1;3468:2718:27;6285:29;6305:8;9438:1;-1:-1:-1;9425:15:27;9178:278;6285:29;6280:111;;6345:27;;-1:-1:-1;;;6345:27:27;;;;;;;;;;;6280:111;6487:34;;6483:351;;6626:189;6664:16;:27;;;6717:20;6763:16;:30;;;6626:12;:189::i;:::-;2190:4658;;;;;;2137:4711;2185:3;;2137:4711;;;;6916:9;6911:1752;6935:19;6931:1;:23;6911:1752;;;7027:34;7064:14;7079:1;7064:17;;;;;;;;:::i;:::-;;;;;;;7027:54;;7176:13;:23;;;-1:-1:-1;;;;;7176:28:27;7203:1;7176:28;7172:83;;7228:8;;;7172:83;7331:38;7394:14;7409:1;7394:17;;;;;;;;:::i;:::-;;;;;;;:28;;;7331:109;;7536:18;7557:15;:29;;;:36;7536:57;;7687:9;7682:414;7706:10;7702:1;:14;7682:414;;;7850:116;7899:15;:29;;;7929:1;7899:32;;;;;;;;:::i;:::-;;;;;;;:41;;;9438:1;-1:-1:-1;9425:15:27;9178:278;7850:116;7821:257;;;8022:33;;-1:-1:-1;;;;;;8022:33:27;;;;;;;;;;;7821:257;7718:3;;7682:414;;;-1:-1:-1;;8196:21:27;;;;:28;8310:9;8305:344;8329:10;8325:1;:14;8305:344;;;8473:54;8493:15;:21;;;8515:1;8493:24;;;;;;;;:::i;8473:54::-;8444:187;;;8583:25;;-1:-1:-1;;;8583:25:27;;;;;;;;;;;8444:187;8341:3;;8305:344;;;;6961:1702;;;6911:1752;6956:3;;6911:1752;;;;1777:6896;;1535:7144;;:::o;6233:9703:34:-;6542:16;6587:15;:25;;;6561:15;:23;;;:51;;;;:::i;:::-;6542:70;;6622:15;6658;:25;;;6640:15;:43;;;;:::i;:::-;6622:61;-1:-1:-1;6693:17:34;6713:18;6622:61;6713:8;:18;:::i;:::-;7228:30;;;13284:4:24;7228:30:34;;;;;;;;;6693:38;;-1:-1:-1;6831:9:34;;6806:22;;7228:30;;;;;;;;;;-1:-1:-1;;7201:57:34;-1:-1:-1;8948:9:34;9308;9303:2097;9327:15;:21;;;:28;9323:1;:32;9303:2097;;;9421:26;9450:15;:21;;;9472:1;9450:24;;;;;;;;:::i;:::-;;;;;;;9421:53;;9573:14;9590:297;9626:9;:21;;;9669:9;:19;;;9710:9;9741:11;9774:7;9803:9;9834:8;9864:5;9590:14;:297::i;:::-;10115:26;10100:42;;10093:58;;;10355:8;10299:29;10284:45;;10252:133;9573:314;-1:-1:-1;;10505:18:34;;:37;;;;;;;;:::i;:::-;;10501:461;;10660:14;10651:6;:23;10647:112;;;10709:27;;-1:-1:-1;;;10709:27:34;;;;;;;;;;;10647:112;10915:6;10897:24;;;;10501:461;11049:184;11089:9;11120:15;:23;;;11165:17;11204:11;11049:18;:184;;:::i;:::-;-1:-1:-1;;11364:3:34;;9303:2097;;;-1:-1:-1;12716:9:34;;-1:-1:-1;13094:9:34;13089:2509;13113:15;:29;;;:36;13109:1;:40;13089:2509;;;13223:42;13290:15;:29;;;13320:1;13290:32;;;;;;;;:::i;:::-;;;;;;;13223:117;;13440:14;13457:312;13493:17;:29;;;13544:17;:27;;;13593:9;13624:11;13657:7;13686:9;13717:8;13747:4;13457:14;:312::i;:::-;14034:26;14011:50;;13979:136;;;14446:34;14358:152;;14323:213;14267:29;14244:53;;14212:346;13440:329;-1:-1:-1;;14678:26:34;;:45;;;;;;;;:::i;:::-;;14674:469;;14841:14;14832:6;:23;14828:112;;;14890:27;;-1:-1:-1;;;14890:27:34;;;;;;;;;;;14828:112;15096:6;15078:24;;;;14674:469;15242:189;15290:17;15329:10;15361:19;15402:11;15242:26;:189;;:::i;:::-;-1:-1:-1;;15562:3:34;;13089:2509;;;;12213:3395;15698:28;15714:11;15698:15;:28::i;:::-;15795:19;;15791:139;;15870:49;15891:10;15904:14;15870:12;:49::i;:::-;6464:9472;;;;;6233:9703;;;;;:::o;16580:855::-;16893:29;16969:5;16955:19;;17074:35;17159:13;17142:30;;17340:4;-1:-1:-1;;;;;17268:160:34;17319:7;-1:-1:-1;;;;;17268:160:34;;17296:9;17358;17381:10;17405:13;17268:160;;;;;;;;;:::i;:::-;;;;;;;;16814:621;;16580:855;;;;;;:::o;21356:4149:33:-;21833:24;;22004:32;;21645:29;;;;22178:55;22004:32;21833:24;22178:55;:::i;:::-;-1:-1:-1;;;;;22149:94:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;22136:107;;22409:31;22516:9;22511:1022;22535:22;22531:1;:26;22511:1022;;;22657:40;22722:17;22740:1;22722:20;;;;;;;;:::i;:::-;;;;;;;22657:103;;22858:26;22887:178;22928:14;22964:10;22996;23028:19;22887;:178::i;:::-;22858:207;;23193:9;:17;;;-1:-1:-1;;;;;23165:45:33;:9;:14;;;:24;;;-1:-1:-1;;;;;23165:45:33;;23161:358;;23321:1;23294:28;;;;23161:358;;;23491:9;23449:10;23464:23;23460:1;:27;23449:39;;;;;;;;:::i;:::-;;;;;;:51;;;;23161:358;-1:-1:-1;;22559:3:33;;22511:1022;;;;23612:9;23607:1121;23631:30;23627:1;:34;23607:1121;;;23765:40;23830:25;23856:1;23830:28;;;;;;;;:::i;:::-;;;;;;;23765:111;;23974:26;24003:186;24044:14;24080:18;24120:10;24152:19;24003;:186::i;:::-;23974:215;;24317:9;:17;;;-1:-1:-1;;;;;24289:45:33;:9;:14;;;:24;;;-1:-1:-1;;;;;24289:45:33;;24285:429;;24445:1;24418:28;;;;24285:429;;;24686:9;24573:10;24638:23;24613:22;24609:1;:26;:52;24573:110;;;;;;;;:::i;:::-;;;;;;:122;;;;24285:429;-1:-1:-1;;23663:3:33;;23607:1121;;;-1:-1:-1;24812:28:33;;24808:320;;25050:23;25037:10;25031:17;25027:47;24991:10;24959:137;24808:320;22333:2805;25198:10;:17;25219:1;25198:22;25194:88;;25243:28;;-1:-1:-1;;;25243:28:33;;;;;;;;;;;25194:88;25354:97;25403:14;25431:10;25354:35;:97::i;:::-;25336:115;;25462:36;;21356:4149;;;;;;;:::o;11278:208:30:-;11329:7;11399:9;11382:13;:26;:97;;11455:24;2761:187:23;;;2789:24;2761:187;;;44292:25:45;2831:10:23;44333:18:45;;;44326:34;;;;2859:13:23;44376:18:45;;;44369:34;2890:13:23;44419:18:45;;;44412:34;2929:4:23;44462:19:45;;;44455:61;2685:7:23;;44264:19:45;;2761:187:23;;;;;;;;;;;;2738:220;;;;;;2731:227;;2628:337;;11382:97:30;-1:-1:-1;11423:17:30;;11278:208::o;13773:24898:22:-;14159:21;:19;:21::i;:::-;14272:59;14284:10;:20;;;14306:10;:18;;;14326:4;14272:11;:59::i;:::-;;14616:40;:38;:40::i;:::-;14748:190;14828:31;;;;:10;:31;:::i;:::-;:42;;-1:-1:-1;14869:1:22;14828:42;:::i;:::-;14884:10;:44;;;14748:66;:190::i;:::-;15002:17;16134:16;16153:28;16134:47;;16653:8;16610:41;16603:59;16770:16;16707:41;16679:125;17260:10;17203:35;17143:38;17109:179;17652:8;17594:36;17530:42;17496:182;18023:29;17956:41;17921:153;17860:39;17832:260;18437:44;18403:96;18778:7;18751:25;18747:39;18679:46;18654:150;19247:1;19151:44;19109:112;19080:190;19034:24;19006:282;19531:7;19485:24;19460:96;19432:124;;19683:16;19657:24;19650:50;20030:9;19973:35;19931:19;19905:24;19901:50;19867:190;20867:39;21237:28;21174:41;21146:137;21388:25;21328:38;21300:131;21500:1;21455:43;21448:54;21694:50;21660:102;21631:131;;21788:1;21841:3364;21854:25;21851:1;21848:32;21841:3364;;;22319:1;22292:25;22288:33;22220:42;22191:152;22633:7;22583:24;22513:44;22475:187;22962:25;22912:24;22844:42;22806:203;23291:7;23243:22;23214:106;23188:132;;23669:29;23598:41;23559:165;23511:22;23479:267;24298:17;24248:24;24219:118;24191:146;;24507:28;24457:24;24425:132;24755:25;24721:7;24695:24;24691:38;24659:143;25157:8;25107:24;25029:26;24975:24;24942:139;24904:283;-1:-1:-1;21915:1:22;21908:9;21841:3364;;;25858:7;25854:1;25827:25;25823:33;25819:47;25754:39;25719:169;25676:21;25648:258;26388:44;26354:96;26325:125;;26502:1721;26515:25;26512:1;26509:32;26502:1721;;;26854:1;26827:25;26823:33;26755:42;26726:152;26694:184;;27316:17;27266:24;27237:118;27209:146;;27525:28;27475:24;27443:132;27773:25;27739:7;27713:24;27709:38;27677:143;28175:8;28125:24;28047:26;27993:24;27960:139;27922:283;26576:1;26569:9;26502:1721;;;26506:2;;;;16327:11910;28731:16;28750:20;28731:39;;29088:8;29053:33;29046:51;29217:15;29182:33;29175:58;29729:10;29680:27;29628:30;29594:163;30018:7;29968:28;29912:34;29878:165;30345:21;30286:33;30251:137;30228:1;30200:206;30727:7;30724:1;30714:21;30680:32;30673:63;31155:7;31059:44;31017:112;30988:196;30928:38;30903:299;31311:1;31285:24;31278:35;31437:15;31427:7;31401:24;31397:38;31390:63;31831:10;31782:27;31734:25;31708:24;31704:56;31670:189;-1:-1:-1;;32987:24:22;32974:38;-1:-1:-1;;;;;1796:16:32;;32907:15:22;1796:16:32;;;:7;:16;;;;;;33262:15:22;33383:29;33376:47;;;33121:34;;-1:-1:-1;33685:8:22;33639:24;33589:28;33555:156;33903:21;33897:28;33835:40;33807:136;34069:9;34037:30;34030:49;34354:9;34306:26;34254:30;34220:161;34515:5;34487:26;34480:41;34684:17;34633:29;34602:117;34589:130;;33301:1432;;;36153:7;36086:44;36073:58;36048:130;36005:25;35984:208;36303:9;36289:12;36282:31;36445:8;36411:31;36397:12;36393:50;36386:68;36682:32;36631;36617:12;36613:51;36547:181;36887:40;36828;36814:12;36810:59;36741:200;37360:17;37293:44;37280:58;37255:140;37214:23;37193:216;38067:21;38054:35;37956:24;37943:38;37845:23;37757:8;37667:12;37581:522;;;38172:1;38162:8;38155:19;38273:185;38322:9;38345:10;:19;;;38378:9;38401:10;:18;;;;;;;;;;:::i;:::-;38433:15;;;;;;;;:::i;:::-;38273:35;:185::i;:::-;38531:133;38579:9;38602:18;;;;;;;;:::i;:::-;38634:20;;;;:10;:20;:::i;:::-;38531:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38531:34:22;;-1:-1:-1;;;38531:133:22:i;:::-;14072:24599;13773:24898;;;;;;:::o;4505:3517:28:-;4819:24;;4815:3201;;4939:22;5176:21;5170:28;5152:46;;-1:-1:-1;;;5293:14:28;5286:49;5612:35;5526:42;5486:14;5457:133;5429:236;5942:38;5856:42;5816:14;5787:133;5759:239;6173:8;6114:36;6098:14;6094:57;6066:133;6367:5;6311:33;6295:14;6291:54;6263:127;6567:4;6512:32;6496:14;6492:53;6464:125;6726:2;6693:30;6677:14;6673:51;6666:63;6913:10;6852:38;6836:14;6832:59;6804:137;7120:6;7063:34;7047:14;7043:55;7015:129;7220:138;7262:10;7290:14;13164:5:24;7220:24:28;:138::i;:::-;4845:2524;4815:3201;;;7482:15;7470:8;:27;;;;;;;;:::i;:::-;;7466:540;;7595:6;7605:1;7595:11;7591:94;;7637:29;;-1:-1:-1;;;7637:29:28;;;;;;;;;;;7591:94;7772:51;7795:5;7802:4;7808:2;7812:10;7772:22;:51::i;:::-;7466:540;;;7931:60;7955:5;7962:4;7968:2;7972:10;7984:6;7931:23;:60::i;39190:2289:22:-;39450:9;39584:20;39425:22;39673:1131;39697:25;39693:1;:29;39673:1131;;;39790:48;39859:20;;39880:1;39859:23;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;40025:26:22;;40128:42;;;40124:115;;;40197:27;;-1:-1:-1;;;40197:27:22;;;;;;;;;;;40124:115;40312:116;40342:29;;;;;;;;:::i;:::-;40389:25;40312:12;:116::i;:::-;40600:43;;;;-1:-1:-1;40776:3:22;;39673:1131;;;;40887:14;40878:6;:23;40874:88;;;40924:27;;-1:-1:-1;;;40924:27:22;;;;;;;;;;;40874:88;41014:24;41027:2;41031:6;41014:12;:24::i;:::-;41144:6;41127:14;:23;41123:277;;;41317:58;41338:10;41368:6;41351:14;:23;41317:12;:58::i;:::-;41449:23;2287:1:24;1322:16:36;:31;1231:129;41449:23:22;39351:2128;;39190:2289;;;;:::o;11890:1080:28:-;12184:59;12219:11;12232:10;12184:34;:59::i;:::-;12305:10;12301:663;;12419:6;12429:1;12419:11;12415:86;;12457:29;;-1:-1:-1;;;12457:29:28;;;;;;;;;;;12415:86;12580:51;12603:5;12610:4;12616:2;12620:10;12580:22;:51::i;12301:663::-;12730:223;12755:10;12783:11;12820:1;12840:5;12863:4;12885:2;12905:10;12933:6;12730:7;:223::i;42147:2122:22:-;42828:7;42811:25;;42756:33;42731:123;42701:167;43002:20;42479:18;43091:938;43115:25;43111:1;:29;43091:938;;;43208:48;43277:20;;43298:1;43277:23;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;;43365:26:22;;43481:85;;;;43516:35;43526:25;43516:35;;:::i;:::-;;;43481:85;43657:225;43689:10;43717:4;43739:29;;;;;;;;:::i;:::-;43786:25;43829:10;43857:11;43657:14;:225::i;:::-;-1:-1:-1;;44001:3:22;;43091:938;;;;44120:69;44135:10;44147:4;44153:2;44157:6;44165:10;44177:11;44120:14;:69::i;:::-;44239:23;2287:1:24;1322:16:36;:31;1231:129;13937:1015:28;14223:28;14244:6;14223:20;:28::i;:::-;14327:59;14362:11;14375:10;14327:34;:59::i;:::-;14448:10;14444:502;;14553:60;14577:5;14584:4;14590:2;14594:10;14606:6;14553:23;:60::i;14444:502::-;14712:223;14737:10;14765:11;14802:1;14822:5;14845:4;14867:2;14887:10;14915:6;14712:7;:223::i;16525:423::-;16650:11;:18;16672:2;16650:24;16646:61;;16525:423;:::o;16646:61::-;16783:29;16815:38;16841:11;21614:26;21597:44;21574:81;;21307:364;16815:38;16783:70;;16897:44;16906:21;16929:11;16897:8;:44::i;:::-;16585:363;16525:423;:::o;3534:1206:20:-;3664:16;3782:11;3769:9;:24;3765:67;;-1:-1:-1;3816:5:20;3809:12;;3765:67;3969:10;4208:11;4197:9;4190:5;4183:37;4176:45;4167:54;;4317:5;4312:61;;4345:17;;-1:-1:-1;;;4345:17:20;;;;;;;;;;;4312:61;4461:27;4491:17;4499:9;4491:5;:17;:::i;:::-;4687:37;;;;;3534:1206;-1:-1:-1;;;;;3534:1206:20:o;1290:1436::-;1505:7;1619:9;1604:11;:24;1600:1014;;1725:20;1849:7;1845:189;;;-1:-1:-1;;;1989:12:20;;1845:189;2154:27;2254:12;2231:19;2243:7;2231:9;:19;:::i;:::-;2203:23;2217:9;2203:11;:23;:::i;:::-;2202:49;;;;:::i;:::-;:64;;;;:::i;:::-;2447:34;;;;-1:-1:-1;2587:16:20;;-1:-1:-1;;2587:16:20;1600:1014;-1:-1:-1;2710:9:20;;1290:1436;-1:-1:-1;;;;;1290:1436:20:o;1730:3201:29:-;1955:26;;:::i;:::-;2088:27;;;:66;;-1:-1:-1;2119:35:29;;2088:66;2071:170;;;2186:44;;-1:-1:-1;;;2186:44:29;;;;;;;;;;;2071:170;2294:39;;:::i;:::-;2421:155;2479:14;2507:23;;2421:155;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2544:22;2421:44;:155::i;:::-;2697:27;;2800:126;;;;;;;;;;;;;;;;;;;2850:14;;2800:126;2878:15;;;;;;2657:37;;2800:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2907:9;2800:36;:126::i;:::-;3060:26;;3033:53;;;;;;;;:::i;:::-;:14;;:23;:53;;;;;;;;:::i;:::-;;;:116;;;;3126:17;:23;;;-1:-1:-1;;;;;3102:47:29;:9;:14;;;:20;;;-1:-1:-1;;;;;3102:47:29;;;3033:116;:189;;;;3194:17;:28;;;3165:9;:14;;;:25;;;:57;;3033:189;3016:303;;;3254:54;;-1:-1:-1;;;3254:54:29;;;;;;;;;;;3016:303;3429:9;:14;;;:21;;;3402:17;:24;;;:48;3398:1167;;;3546:43;3610:23;;3634:1;3610:26;;;;;;;:::i;:::-;;;;;;3546:104;;;;;;;;;;:::i;:::-;;;3933:9;:14;;;:21;;;3906:17;:24;;;:48;;;;:::i;:::-;3746:14;3761:15;:26;;;3746:42;;;;;;;;:::i;:::-;;;;;;;:70;;;:101;;;3848:15;:25;;;3746:128;;;;;;;;:::i;:::-;;;;;;;;;;;:157;;;;:208;;;;4072:14;;:21;;;4045:24;;;:48;-1:-1:-1;3398:1167:29;;;4196:43;4243:15;;4259:1;4243:18;;;;;;;:::i;:::-;;;;;;4196:66;;;;;;;;;;:::i;:::-;;;4530:17;:24;;;4506:9;:14;;;:21;;;:48;;;;:::i;:::-;4354:14;4369:15;:26;;;4354:42;;;;;;;;:::i;:::-;;;;;;;:70;;;:93;;;4448:15;:25;;;4354:120;;;;;;;;:::i;:::-;;;;;;;:149;;:200;;;;;4110:455;3398:1167;4674:24;;;;;4650:14;;:21;;;:48;4735:27;;;;;4708:14;;-1:-1:-1;;;;;4708:54:29;;;:24;;:54;-1:-1:-1;1730:3201:29;;;;;;;:::o;26290:4230:33:-;26588:21;;26445:29;;26588:21;-1:-1:-1;;;;;26697:23:33;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26697:23:33;;26679:41;;26912:9;26907:1427;26931:11;26927:1;:15;26907:1427;;;27018:34;27055:14;27070:1;27055:17;;;;;;;;:::i;:::-;;;;;;;27018:54;;27173:13;:23;;;-1:-1:-1;;;;;27173:28:33;27200:1;27173:28;27169:323;;27465:8;;;27169:323;27579:4;27558:15;27574:1;27558:18;;;;;;;;:::i;:::-;:25;;;:18;;;;;;;;;;;:25;27745:24;;:38;;;27680:40;27897:423;27921:13;:20;27917:1;:24;27897:423;;;28046:19;28068:13;28082:1;28068:16;;;;;;;;:::i;:::-;;;;;;;:28;;;28046:50;;28190:11;28205:1;28190:16;28186:116;;28241:38;;-1:-1:-1;;;28241:38:33;;;;;36229:25:45;;;36270:18;;;36263:34;;;36313:18;;;36306:34;;;36202:18;;28241:38:33;36027:319:45;28186:116:33;-1:-1:-1;27943:3:33;;27897:423;;;;26949:1385;;26907:1427;26944:3;;26907:1427;;;-1:-1:-1;28840:30:33;;;13284:4:24;28840:30:33;;;;;;;;;28443:9;;28418:22;;28840:30;;;;;;;;;;;-1:-1:-1;28840:30:33;28813:57;;28926:9;28921:1123;28945:10;:17;28941:1;:21;28921:1123;;;29052:26;29081:10;29092:1;29081:13;;;;;;;;:::i;:::-;;;;;;;;;;;29135:14;;29081:13;;-1:-1:-1;29108:24:33;29245:13;;:32;;;;;;;;:::i;:::-;;29241:434;;29392:14;29378:4;:11;;;:28;29374:109;;;29437:27;;-1:-1:-1;;;29437:27:33;;;;;;;;;;;29374:109;29631:4;:11;;;29613:29;;;;29241:434;29750:147;29777:4;29799:9;:17;;;29834:9;:20;;;29872:11;29750:9;:147::i;:::-;-1:-1:-1;;30016:3:33;;28921:1123;;;;30134:28;30150:11;30134:15;:28::i;:::-;30254:19;;30250:99;;30289:49;30310:10;30323:14;30289:12;:49::i;:::-;30398:23;2287:1:24;1322:16:36;:31;1231:129;30398:23:33;30489:24;;;26290:4230;;;;:::o;2782:425:21:-;3102:30;3069;:63;3065:136;;;3155:35;;-1:-1:-1;;;3155:35:21;;;;;;;;;;;1253:2726:37;1447:9;1466;1485:7;1587:9;:16;1607:2;1587:22;1583:1839;;-1:-1:-1;;;1935:7:37;1920:23;;1914:30;2069:8;2054:24;;2048:31;-1:-1:-1;;;;;2176:37:37;;;2323:3;2319:12;2333:2;2315:21;1583:1839;;;2370:9;:16;2390:2;2370:22;2366:1056;;-1:-1:-1;;;2676:7:37;2661:23;;2655:30;2785:8;2770:24;;2764:31;2902:10;2887:26;;2881:33;2878:1;2873:42;3005:2;3000:7;;;;;:18;;;3011:1;:7;;3016:2;3011:7;;3000:18;2996:80;;;3045:16;;-1:-1:-1;;;3045:16:37;;36523:4:45;36511:17;;3045:16:37;;;36493:36:45;36466:18;;3045:16:37;36351:184:45;2996:80:37;2366:1056;;;3264:55;3293:6;3301;3309:9;3264:28;:55::i;2366:1056::-;3538:26;;;3512:23;3538:26;;;;;;;;;36767:25:45;;;36840:4;36828:17;;36808:18;;;36801:45;;;;36862:18;;;36855:34;;;36905:18;;;36898:34;;;3538:26:37;;36739:19:45;;3538:26:37;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3538:26:37;;-1:-1:-1;;3538:26:37;;;-1:-1:-1;;;;;;;3616:29:37;;3612:361;;3668:18;;-1:-1:-1;;;3668:18:37;;;;;;;;;;;3612:361;3806:6;-1:-1:-1;;;;;3787:25:37;:15;-1:-1:-1;;;;;3787:25:37;;3783:190;;3907:55;3936:6;3944;3952:9;3907:28;:55::i;1337:627:40:-;1469:10;1586:15;1574:9;:27;:57;;;;1616:15;1605:7;:26;;1574:57;1570:314;;;1724:15;1720:74;;;1766:13;;-1:-1:-1;;;1766:13:40;;;;;;;;;;;1720:74;-1:-1:-1;1868:5:40;1861:12;;1570:314;-1:-1:-1;1953:4:40;1337:627;;;;;:::o;4158:1675:41:-;4623:1;4610:9;4602:18;;;;;;;;:::i;:::-;:22;:56;;;;-1:-1:-1;4640:10:41;-1:-1:-1;;;;;4640:18:41;;;;4602:56;:93;;;;-1:-1:-1;4674:10:41;-1:-1:-1;;;;;4674:21:41;;;;4602:93;4585:1242;;;4810:23;;;;:30;:35;:84;;;;-1:-1:-1;4865:24:41;;:29;4810:84;4789:1028;;;4986:53;5004:4;5010:9;5021:7;5030:8;4986:17;:53::i;:::-;4789:1028;;;5237:12;5252:395;5285:4;5359:53;;;5438:9;5473:10;5509:13;5548:16;5590:17;5311:318;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5311:318:41;;;;;;;;;;;;;;-1:-1:-1;;;;;5311:318:41;-1:-1:-1;;;;;;5311:318:41;;;;;;;;;;5252:11;:395::i;:::-;5237:410;;5746:56;5783:7;5792:9;5746:36;:56::i;:::-;5060:757;4158:1675;;;;;;;;:::o;9790:1564:27:-;9918:12;10045:4;10164:7;10157:5;10153:19;10312:7;10304:5;10298:12;10294:26;10288:4;10284:37;10251:845;10345:3;10339:4;10336:13;10251:845;;;10487:11;;10581:28;;;10626:169;;;;10852:10;10849:1;10842:21;10922:12;10916:4;10909:26;10574:408;;10626:169;10665:12;10662:1;10655:23;10742:10;10736:4;10729:24;10574:408;;;11073:8;11070:1;11060:22;11044:38;;10386:7;10380:4;10376:18;10368:26;;10251:845;;;-1:-1:-1;;11181:22:27;;;-1:-1:-1;11181:22:27;11288:60;;11323:14;;-1:-1:-1;;;11323:14:27;;;;;;;;;;;1958:1436:28;2206:15;2189:13;;:32;;;;;;;;:::i;:::-;;2185:1203;;2297:41;2310:4;:14;;;2326:4;:11;;;2297:12;:41::i;:::-;2185:1203;;;2376:14;2359:13;;:31;;;;;;;;:::i;:::-;;2355:1033;;2477:196;2509:4;:10;;;2537:4;2559;:14;;;2591:4;:11;;;2620:10;2648:11;2477:14;:196::i;2355:1033::-;2711:15;2694:13;;:32;;;;;;;;:::i;:::-;;2690:698;;2813:230;2846:4;:10;;;2874:4;2896;:14;;;2928:4;:15;;;2961:4;:11;;;2990:10;3018:11;2813:15;:230::i;2690:698::-;3146:231;3180:4;:10;;;3208:4;3230;:14;;;3262:4;:15;;;3295:4;:11;;;3324:10;3352:11;3146:16;:231::i;5488:917:20:-;5753:14;5874:9;5859:11;:24;5855:544;;5953:47;5966:9;5977:11;5990:9;5953:12;:47::i;:::-;5944:56;;5855:544;;;6119:269;6157:49;6170:9;6181:11;6194;6157:12;:49::i;:::-;6224:47;6237:9;6248:11;6261:9;6224:12;:47::i;:::-;6289:7;6314:9;6341:8;6367:7;6119:20;:269::i;:::-;6110:278;;5855:544;5488:917;;;;;;;;;;:::o;8253:742:28:-;8386:28;8407:6;8386:20;:28::i;:::-;8506:12;8662:1;8659;8656;8653;8645:6;8641:2;8634:5;8629:35;8618:46;;8721:7;8716:273;;8820:34;:32;:34::i;:::-;8939:39;;-1:-1:-1;;;8939:39:28;;-1:-1:-1;;;;;43743:32:45;;8939:39:28;;;43725:51:45;43792:18;;;43785:34;;;43698:18;;8939:39:28;43543:282:45;8716:273:28;8320:675;8253:742;;:::o;6016:1908:29:-;6238:26;;:::i;:::-;6540:21;:28;6572:1;6540:33;6536:125;;6641:4;6600:46;;-1:-1:-1;;;6600:46:29;;;;;;;;:::i;6536:125::-;6756:10;6748:4;:18;;;;;;;;:::i;:::-;;6744:951;;6864:164;6922:14;6958:21;7001:9;6864:36;:164::i;:::-;6744:951;;;7253:172;7319:14;7355:21;7398:9;7253:44;:172::i;:::-;7531:10;7511:17;;;:30;7638:20;;;:42;;;6744:951;7794:14;;:21;;;:14;:26;7790:118;;7875:17;;;;7840:14;;-1:-1:-1;;;;;7840:53:29;;;:24;;;;:53;6016:1908;;;;;;:::o;3968:2077:21:-;5199:26;5186:40;5358:24;5566:44;5520:120;5749:25;5408:392;5329:493;5096:744;4651:27;4638:41;4701:25;4614:130;4879:42;4866:56;4944:40;4842:160;4514:502;5045:809;;5952:87;;5992:36;;-1:-1:-1;;;5992:36:21;;;;;;;;;;;5952:87;4032:2013;3968:2077::o;1277:544:41:-;1599:1;1586:9;1578:18;;;;;;;;:::i;:::-;:22;:56;;;;-1:-1:-1;1616:10:41;-1:-1:-1;;;;;1616:18:41;;;;1578:56;:93;;;;-1:-1:-1;1650:10:41;-1:-1:-1;;;;;1650:21:41;;;;1578:93;1561:254;;;1751:53;1769:4;1775:9;1786:7;1795:8;1751:17;:53::i;1502:1032:35:-;1718:30;1751:23;;;:12;:23;;;;;;;;;1718:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1718:56:35;;;;;;;;;;;;-1:-1:-1;;;1718:56:35;;;;;;;;;;1843:218;1764:9;1718:56;;;1843:18;:218::i;:::-;-1:-1:-1;2158:23:35;;2153:102;;2197:47;2214:7;2223:9;2234;2197:16;:47::i;:::-;-1:-1:-1;;;2336:23:35;;;;:12;:23;;;;;2488:39;;;1502:1032::o;19436:1453:28:-;9815:21:30;9809:28;;-1:-1:-1;;;9433:19:30;10021:41;19653:15:28;10011:52:30;;;10158:7;10151:27;;;9578;10273:41;;10701:31;10580:28;10486:264;10940:48;;;;19843:12:28;;;-1:-1:-1;;;;;10420:458:30;;;;19653:15:28;20082:12;20050:14;19653:15;10420:458:30;19983:5:28;19961:191;19950:202;;20210:7;20205:254;;20308:34;:32;:34::i;:::-;20419:29;;-1:-1:-1;;;20419:29:28;;-1:-1:-1;;;;;44691:32:45;;20419:29:28;;;44673:51:45;44646:18;;20419:29:28;44527:203:45;20205:254:28;20538:13;20666:8;-1:-1:-1;;;;;;20771:43:28;;-1:-1:-1;;;20771:43:28;20767:116;;20837:35;;-1:-1:-1;;;20837:35:28;;;;;44909:25:45;;;-1:-1:-1;;;;;44970:32:45;;44950:18;;;44943:60;44882:18;;20837:35:28;44735:274:45;10217:4678:38;10536:5;10524:18;10514:254;;-1:-1:-1;;;10569:24:38;10562:60;10674:5;10646:26;10639:41;10730:23;10704:24;10697:57;10514:254;10879:21;10873:28;-1:-1:-1;;;10995:27:38;10988:66;11104:4;11074:28;11067:42;11157:2;11129:26;11122:38;11208:10;11180:26;11173:46;11498:1;11479;11435:26;11390:27;11371:1;11348:5;11325;11303:210;11578:7;11568:3120;;11729:16;11726:2180;;;12044:7;12026:16;12022:30;12334:7;12322:10;12318:24;12462:15;12449:11;12445:33;12591:10;12574:15;12571:31;12568:769;;;12782:32;;;12852:11;12741:156;13199:26;13096:27;;;13017:37;;;12972:189;12931:328;12704:585;12637:678;12568:769;13581:5;13564:14;13558:4;13554:25;13551:36;13548:340;;;13716:16;13713:1;13710;13695:38;13849:16;13846:1;13839:27;13548:340;;;;11726:2180;-1:-1:-1;;;14018:41:38;13990:152;14211:5;14166:43;14159:58;14285:4;14241:42;14234:56;14356:2;14314:40;14307:52;14425:10;14383:40;14376:60;14506:1;14460:44;14453:55;14616:40;14553:41;14525:149;11568:3120;-1:-1:-1;14766:21:38;14759:41;-1:-1:-1;;14877:1:38;14867:8;14860:19;-1:-1:-1;;10217:4678:38:o;15519:5338::-;15864:5;15852:18;15842:254;;-1:-1:-1;;;15897:24:38;15890:60;16002:5;15974:26;15967:41;16058:23;16032:24;16025:57;15842:254;16210:21;16204:28;16267:8;16261:15;16311:8;16305:15;16355:8;16349:15;-1:-1:-1;;;16479:32:38;16455:122;16632:4;16597:33;16590:47;16690:2;16657:31;16650:43;16746:10;16713:31;16706:51;16814:6;16777:35;16770:51;16916:43;16858:40;16834:139;17035:1;16993:40;16986:51;17271:1;17252;17203:31;17153:32;17134:1;17111:5;17088;17066:220;17351:7;17341:3125;;17502:16;17499:2180;;;17817:7;17799:16;17795:30;18107:7;18095:10;18091:24;18235:15;18222:11;18218:33;18364:10;18347:15;18344:31;18341:769;;;18555:32;;;18625:11;18514:156;18972:26;18869:27;;;18790:37;;;18745:189;18704:328;18477:585;18410:678;18341:769;19354:5;19337:14;19331:4;19327:25;19324:36;19321:340;;;19489:16;19486:1;19483;19468:38;19622:16;19619:1;19612:27;19321:340;;;;17499:2180;-1:-1:-1;;;19791:41:38;19763:152;19984:5;19939:43;19932:58;20058:4;20014:42;20007:56;20129:2;20087:40;20080:52;20198:10;20156:40;20149:60;20279:6;20233:44;20226:60;20394:40;20331:41;20303:149;17341:3125;-1:-1:-1;20487:8:38;20480:26;;;;20548:8;20541:26;20609:8;20602:26;20728:21;20721:41;-1:-1:-1;;20839:1:38;-1:-1:-1;20822:19:38;-1:-1:-1;;;15519:5338:38:o;15703:458:28:-;15900:29;15932:38;15958:11;21614:26;21597:44;21574:81;;21307:364;15932:38;15900:70;;16090:10;16065:21;:35;16061:94;;16116:28;16132:11;16116:15;:28::i;22667:2146::-;22919:16;13284:4:24;23093:11:28;:18;:41;23089:1009;;-1:-1:-1;23288:16:28;23268:37;;;23372:26;23355:44;;;23348:64;;;-1:-1:-1;;;23436:42:28;;;23429:60;;;;23551:28;23534:46;;23506:138;23161:1;23685:28;23668:46;;23661:64;;;23089:1009;;;-1:-1:-1;23922:28:28;23905:46;;23899:53;;23974:1;23874:119;24010:64;;;;23089:1009;24275:36;24230:25;24220:8;24216:40;24203:11;24199:58;24178:147;24358:8;24345:11;24338:29;24437:5;24404:30;24391:11;24387:48;24380:63;24512:4;24480:29;24467:11;24463:47;24456:61;24584:2;24554:27;24541:11;24537:45;24530:57;24695:10;24641:35;24628:11;24624:53;24600:119;24790:6;24756:31;24743:11;24739:49;24732:65;;24145:662;22667:2146;;;;;;;;:::o;9931:958::-;10187:28;10208:6;10187:20;:28::i;:::-;10291:59;10326:11;10339:10;10291:34;:59::i;:::-;10412:10;10408:475;;10504:46;10526:5;10533:4;10539:2;10543:6;10504:21;:46::i;:::-;10408:475;;;10649:223;10674:10;10702:11;10739:1;10759:5;10782:4;10804:2;10832:1;10852:6;10649:7;:223::i;3373:202:21:-;3505:6;3515:1;3505:11;3501:68;;3539:19;;-1:-1:-1;;;3539:19:21;;;;;;;;;;;17653:1113:28;18327:28;18310:46;;18304:53;18141:8;18124:26;;;18379:25;18279:143;18233:28;18212:224;18537:66;18562:10;18124:26;18212:224;18537:24;:66::i;:::-;-1:-1:-1;;18730:19:28;18710:40;;-1:-1:-1;17653:1113:28:o;20184:10471:29:-;20583:366;;;-1:-1:-1;;;20734:1:29;20727:58;20893:41;20890:1;20883:52;21036:403;-1:-1:-1;;;21138:1:29;21131:32;21287:16;21267:18;21260:44;21406:18;21403:1;21396:29;21036:403;21569:7;21544:23;21540:37;21692:18;21686:25;21680:32;21821:14;21815:21;21803:10;21800:37;21790:119;;21857:38;;:::i;:::-;22162:7;22150:10;22146:24;22136:7;22120:14;22116:28;22112:59;22015:170;22439:41;22408:8;22402:15;22298:200;22275:237;22676:28;22655:18;22649:25;22645:60;22622:97;22827:19;22821:26;22810:9;22807:41;22797:123;;22868:38;;:::i;:::-;23288:7;23277:9;23273:23;23173:7;23152:19;23148:33;23058:256;23035:293;23428:1;23534;23687:30;23677:8;23673:45;23667:52;23664:516;;;-1:-1:-1;;23858:20:29;23832:47;;23942:16;;24164:1;24146:20;;;24043:14;;23664:516;24281:9;24275:16;24387:20;24381:27;24367:12;24360:49;24586:19;24564:20;24560:46;24554:53;24516:19;24502:12;24498:38;24474:147;24808:24;24786:20;24782:51;24776:58;24733:24;24719:12;24715:43;24691:157;25109:34;25063:20;25034:131;25007:176;24959:29;24945:12;24941:48;24917:280;25352:30;25322:12;25295:101;25595:7;25569:23;25563:30;25559:44;25518:23;25497:120;25718:4299;25749:6;25728:18;25725:31;25718:4299;;;25895:7;25875:18;25871:32;25849:54;;26017:18;26011:25;26005:32;25991:46;;26141:14;26135:21;26123:10;26120:37;26110:125;;26179:38;;:::i;:::-;26448:7;26436:10;26432:24;26398:7;26382:14;26378:28;26349:129;26322:174;26310:186;;26624:30;26614:8;26610:45;26604:52;26573:148;25718:4299;26573:148;27011:41;26976:8;26970:15;26863:211;26836:256;26813:279;;27229:7;27208:18;27202:25;27198:39;27192:46;27179:59;;27354:19;27348:26;27337:9;27334:41;27324:131;;27399:38;;:::i;:::-;27832:7;27821:9;27817:23;27715:7;27694:19;27690:33;27592:270;27565:315;27541:339;;28063:20;28019;27992:109;28211:9;28205:16;28197:6;28193:29;28468:9;28462:16;28455:24;28425:6;28414:9;28411:21;28408:1;28404:29;28380:119;28349:11;28327:190;28312:205;;28609:9;28599:19;;;28734:1;28723:9;28716:20;;29731:30;29681:20;29642:147;29606:8;29576:239;29360:29;29310:12;29269:154;29230:223;29107:29;29049:20;29008:162;28969:231;28937:542;28853:984;28822:1181;;29947:38;;:::i;:::-;25718:4299;;;-1:-1:-1;;30103:20:29;30085:39;30078:55;;;30230:11;30259:1;30254:269;;;;30541:1;30536:103;;;;30223:416;;30254:269;-1:-1:-1;;;30350:1:29;30343:44;30481:27;30478:1;30471:38;30536:103;30610:15;;:::i;:::-;30223:416;;;;;;;;;20184:10471;;;:::o;8544:10888::-;9824:7;9807:15;9803:29;9947:18;9941:25;9935:32;10076:14;10070:21;10058:10;10055:37;10045:119;;10112:38;;:::i;:::-;10417:7;10405:10;10401:24;10391:7;10375:14;10371:28;10367:59;10270:170;10552:8;10546:15;10677:33;10666:9;10662:49;10639:86;10889:28;10868:18;10862:25;10858:60;10835:97;11040:11;11034:18;11023:9;11020:33;11010:115;;11073:38;;:::i;:::-;11477:7;11466:9;11462:23;11362:7;11349:11;11345:25;11255:248;11232:285;11617:1;11723;11842:30;11832:8;11828:45;11822:52;11819:520;;;-1:-1:-1;;12005:20:29;11987:39;;12089:16;;12212:1;12194:20;;;12311:14;;11819:520;12433:9;12427:16;12619:8;12571:29;12554:15;12550:51;12526:115;12740:12;12734:19;12717:15;12710:44;12926:19;12912:12;12908:38;12902:45;12864:19;12847:15;12843:41;12819:142;13143:24;13129:12;13125:43;13119:50;13076:24;13059:15;13055:46;13031:152;13326:9;13320:16;13293:24;13282:9;13278:40;13271:66;13535:30;13524:9;13520:46;13514:53;13471:24;13460:9;13456:40;13432:149;13739:30;13706:15;13679:104;13663:120;;13966:7;13948:15;13942:22;13938:36;13905:15;13884:104;14089:4701;14120:6;14099:18;14096:31;14089:4701;;;14273:7;14253:18;14249:32;14227:54;;14395:18;14389:25;14383:32;14369:46;;14519:14;14513:21;14501:10;14498:37;14488:125;;14557:38;;:::i;:::-;14826:7;14814:10;14810:24;14776:7;14760:14;14756:28;14727:129;14700:174;14688:186;;15002:30;14992:8;14988:45;14961:90;14951:148;14089:4701;14951:148;15215:8;15209:15;15196:28;;15393:33;15358:9;15329:119;15302:164;15287:179;;15603:7;15582:18;15576:25;15572:39;15566:46;15553:59;;15749:11;15743:18;15732:9;15729:33;15698:161;;15803:38;;:::i;:::-;16212:7;16201:9;16197:23;16095:7;16082:11;16078:25;15980:262;15953:307;15937:323;;16427:20;16391:12;16364:101;16575:9;16569:16;16561:6;16557:29;16832:9;16826:16;16819:24;16789:6;16778:9;16775:21;16772:1;16768:29;16744:119;16713:11;16691:190;16676:205;;16973:9;16963:19;;;17098:1;17087:9;17080:20;;18502:30;18456:12;18413:149;18375:8;18343:245;18096:24;18047:9;18004:152;17963:225;17833:30;17784:9;17741:158;17700:231;17666:550;17482:24;17471:9;17467:40;17426:113;17384:9;17378:16;17344:223;17246:996;17217:1393;17186:1590;;18720:38;;:::i;:::-;14089:4701;;;14093:2;;18903:6;18880:20;18868:9;18862:16;18858:43;18851:59;19007:11;19036:1;19031:269;;;;19318:1;19313:103;;19000:416;19313:103;19387:15;;:::i;:::-;19000:416;;;;;;;;;;8544:10888;;;:::o;4702:914:37:-;4907:12;4922:202;4947:6;5007:42;;;5067:6;5091:9;4967:147;;;;;;;;;:::i;4922:202::-;4907:217;;5172:7;5167:245;;5260:34;:32;:34::i;:::-;5379:22;;-1:-1:-1;;;5379:22:37;;;;;;;;;;;5167:245;5499:62;-1:-1:-1;;;5499:18:37;:62::i;:::-;5495:115;;;5584:15;;-1:-1:-1;;;5584:15:37;;;;;;;;;;;1827:621:41;2093:195;;;;;45539:25:45;;;2213:10:41;45618:18:45;;;45611:43;-1:-1:-1;;;;;45690:15:45;;45670:18;;;45663:43;45722:18;;;45715:34;;;2035:12:41;;2050:248;;2075:4;;-1:-1:-1;;;2133:35:41;45511:19:45;;2093:195:41;45308:447:45;2050:248:41;2035:263;;2385:56;2422:7;2431:9;2385:36;:56::i;694:406:31:-;801:12;1069:1;1050;1023:8;1017:15;991:7;981:8;977:22;953:6;930:5;902:182;891:193;694:406;-1:-1:-1;;;694:406:31:o;6302:633:41:-;6465:7;6460:256;;6553:34;:32;:34::i;:::-;6672:33;;-1:-1:-1;;;6672:33:41;;;;;1389:25:45;;;1362:18;;6672:33:41;1243:177:45;6460:256:41;6807:55;-1:-1:-1;;;6807:18:41;:55::i;:::-;6803:126;;;6885:33;;-1:-1:-1;;;6885:33:41;;;;;1389:25:45;;;1362:18;;6885:33:41;1243:177:45;1346:2159:31;1553:16;1550:1939;;;1858:7;1840:16;1836:30;2150:7;2126:21;2120:28;2116:42;2270:15;2257:11;2253:33;2391:10;2374:15;2371:31;2368:607;;;2529:32;;;2563:11;2525:50;2853:26;2758:27;;;2683:37;;;2642:177;2605:304;2492:443;2433:524;2368:607;3184:5;3167:14;3161:4;3157:25;3154:36;3151:324;;;3311:16;3308:1;3305;3290:38;3440:16;3437:1;3430:27;783:8985:38;1129:21;1123:28;-1:-1:-1;;;1248:26:38;1241:64;1354:4;1325:27;1318:41;1406:2;1379:25;1372:37;1460:6;1429:29;1422:45;1772:7;1753:1;1710:25;1666:26;1647:1;1624:5;1601;1579:214;2270:10;2217:16;2210:24;2184:2;2166:16;2163:24;2159:1;2155;2149:8;2146:15;2142:46;2118:134;1902:392;2621:16;2614:24;2607:32;2598:7;2594:46;2584:6977;;2942:7;2932:5;2920:18;2913:26;2906:34;2902:48;2892:6460;;3031:7;3021:6011;;3130:10;3120:4669;;3320:16;3317:3232;;;3797:7;3743:16;3702:136;4203:7;4191:10;4187:24;4355:15;4342:11;4338:33;4508:10;4491:15;4488:31;4485:1293;;;4759:186;;;4995:11;4706:346;5592:26;5465:27;;;5208:203;;;5151:391;5098:566;4657:1049;4566:1178;4485:1293;6070:5;6053:14;6047:4;6043:25;6040:36;6037:482;;;6268:16;6265:1;6262;6247:38;6468:16;6465:1;6458:27;6037:482;;;;3317:3232;-1:-1:-1;;;6697:41:38;6657:188;6991:5;6914:43;6874:152;7171:4;7095:42;7055:150;7283:2;7241:40;7234:52;7364:1;7322:40;7315:51;7513:6;7435:44;7395:154;7693:40;7618:41;7578:185;3120:4669;-1:-1:-1;;;7970:47:38;7934:188;8262:5;8183:49;8147:146;8432:4;8354:48;8318:144;8599:2;8523:46;8487:140;8768:6;8688:50;8652:148;8938:46;8861:47;8825:185;3021:6011;-1:-1:-1;;;9141:24:38;9134:60;9250:5;9222:26;9215:41;9310:23;9284:24;9277:57;2892:6460;-1:-1:-1;;9639:21:38;9632:41;-1:-1:-1;;9750:1:38;9740:8;9733:19;-1:-1:-1;;783:8985:38:o;3850:779:31:-;3918:4;4010:13;4235:7;4217:16;4214:29;4211:285;;4362:7;4359:1;4356;4341:29;-1:-1:-1;4480:1:31;4474:8;4211:285;-1:-1:-1;;;;;;4604:18:31;;;;;;;;;;;3850:779;-1:-1:-1;3850:779:31:o;-1:-1:-1:-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:472:45:-;56:3;94:5;88:12;121:6;116:3;109:19;146:1;156:162;170:6;167:1;164:13;156:162;;;232:4;288:13;;;284:22;;278:29;260:11;;;256:20;;249:59;185:12;156:162;;;336:6;333:1;330:13;327:87;;;402:1;395:4;386:6;381:3;377:16;373:27;366:38;327:87;-1:-1:-1;468:2:45;447:15;-1:-1:-1;;443:29:45;434:39;;;;475:4;430:50;;14:472;-1:-1:-1;;14:472:45:o;491:220::-;640:2;629:9;622:21;603:4;660:45;701:2;690:9;686:18;678:6;660:45;:::i;716:131::-;-1:-1:-1;;;;;791:31:45;;781:42;;771:70;;837:1;834;827:12;852:134;920:20;;949:31;920:20;949:31;:::i;:::-;852:134;;;:::o;991:247::-;1050:6;1103:2;1091:9;1082:7;1078:23;1074:32;1071:52;;;1119:1;1116;1109:12;1071:52;1158:9;1145:23;1177:31;1202:5;1177:31;:::i;1425:180::-;1484:6;1537:2;1525:9;1516:7;1512:23;1508:32;1505:52;;;1553:1;1550;1543:12;1505:52;-1:-1:-1;1576:23:45;;1425:180;-1:-1:-1;1425:180:45:o;2026:127::-;2087:10;2082:3;2078:20;2075:1;2068:31;2118:4;2115:1;2108:15;2142:4;2139:1;2132:15;2158:253;2230:2;2224:9;2272:4;2260:17;;-1:-1:-1;;;;;2292:34:45;;2328:22;;;2289:62;2286:88;;;2354:18;;:::i;:::-;2390:2;2383:22;2158:253;:::o;2416:255::-;2488:2;2482:9;2530:6;2518:19;;-1:-1:-1;;;;;2552:34:45;;2588:22;;;2549:62;2546:88;;;2614:18;;:::i;2676:275::-;2747:2;2741:9;2812:2;2793:13;;-1:-1:-1;;2789:27:45;2777:40;;-1:-1:-1;;;;;2832:34:45;;2868:22;;;2829:62;2826:88;;;2894:18;;:::i;:::-;2930:2;2923:22;2676:275;;-1:-1:-1;2676:275:45:o;2956:196::-;3029:4;-1:-1:-1;;;;;3054:6:45;3051:30;3048:56;;;3084:18;;:::i;:::-;-1:-1:-1;3129:1:45;3125:14;3141:4;3121:25;;2956:196::o;3157:149::-;3231:20;;3280:1;3270:12;;3260:40;;3296:1;3293;3286:12;3311:566;3367:5;3415:4;3403:9;3398:3;3394:19;3390:30;3387:50;;;3433:1;3430;3423:12;3387:50;3455:22;;:::i;:::-;3446:31;;3500:35;3525:9;3500:35;:::i;:::-;3493:5;3486:50;3588:2;3577:9;3573:18;3560:32;3601:33;3626:7;3601:33;:::i;:::-;3666:7;3661:2;3654:5;3650:14;3643:31;;3734:2;3723:9;3719:18;3706:32;3701:2;3694:5;3690:14;3683:56;3799:2;3788:9;3784:18;3771:32;3766:2;3759:5;3755:14;3748:56;3865:3;3854:9;3850:19;3837:33;3831:3;3824:5;3820:15;3813:58;3311:566;;;;:::o;3882:728::-;3945:5;3998:3;3991:4;3983:6;3979:17;3975:27;3965:55;;4016:1;4013;4006:12;3965:55;4052:6;4039:20;4078:4;4102:73;4118:56;4171:2;4118:56;:::i;:::-;4102:73;:::i;:::-;4209:15;;;4271:4;4314:11;;;4302:24;;4298:33;;;4240:12;;;;4197:3;4343:15;;;4340:35;;;4371:1;4368;4361:12;4340:35;4407:2;4399:6;4395:15;4419:162;4435:6;4430:3;4427:15;4419:162;;;4501:37;4534:3;4529;4501:37;:::i;:::-;4489:50;;4559:12;;;;4452;;4419:162;;;-1:-1:-1;4599:5:45;;3882:728;-1:-1:-1;;;;;;;3882:728:45:o;4615:908::-;4679:5;4727:4;4715:9;4710:3;4706:19;4702:30;4699:50;;;4745:1;4742;4735:12;4699:50;4778:2;4772:9;4820:4;4812:6;4808:17;4891:6;4879:10;4876:22;-1:-1:-1;;;;;4843:10:45;4840:34;4837:62;4834:88;;;4902:18;;:::i;:::-;4938:2;4931:22;4971:6;-1:-1:-1;4971:6:45;5001:35;5026:9;5001:35;:::i;:::-;4993:6;4986:51;5089:2;5078:9;5074:18;5061:32;5102:33;5127:7;5102:33;:::i;:::-;5168:7;5163:2;5155:6;5151:15;5144:32;;5237:2;5226:9;5222:18;5209:32;5204:2;5196:6;5192:15;5185:57;5303:2;5292:9;5288:18;5275:32;5270:2;5262:6;5258:15;5251:57;5370:3;5359:9;5355:19;5342:33;5336:3;5328:6;5324:16;5317:59;5428:3;5417:9;5413:19;5400:33;5442;5467:7;5442:33;:::i;:::-;5503:3;5491:16;;;;5484:33;4615:908;;-1:-1:-1;;4615:908:45:o;5528:744::-;5599:5;5652:3;5645:4;5637:6;5633:17;5629:27;5619:55;;5670:1;5667;5660:12;5619:55;5706:6;5693:20;5732:4;5756:73;5772:56;5825:2;5772:56;:::i;5756:73::-;5863:15;;;5925:4;5968:11;;;5956:24;;5952:33;;;5894:12;;;;5851:3;5997:15;;;5994:35;;;6025:1;6022;6015:12;5994:35;6061:2;6053:6;6049:15;6073:170;6089:6;6084:3;6081:15;6073:170;;;6155:45;6196:3;6191;6155:45;:::i;:::-;6143:58;;6221:12;;;;6106;;6073:170;;6277:150;6352:20;;6401:1;6391:12;;6381:40;;6417:1;6414;6407:12;6432:1291;6494:5;6542:6;6530:9;6525:3;6521:19;6517:32;6514:52;;;6562:1;6559;6552:12;6514:52;6584:22;;:::i;:::-;6575:31;;6629:29;6648:9;6629:29;:::i;:::-;6622:5;6615:44;6691:38;6725:2;6714:9;6710:18;6691:38;:::i;:::-;6686:2;6679:5;6675:14;6668:62;6781:2;6770:9;6766:18;6753:32;-1:-1:-1;;;;;6845:2:45;6837:6;6834:14;6831:34;;;6861:1;6858;6851:12;6831:34;6897:66;6959:3;6950:6;6939:9;6935:22;6897:66;:::i;:::-;6892:2;6885:5;6881:14;6874:90;7017:2;7006:9;7002:18;6989:32;6973:48;;7046:2;7036:8;7033:16;7030:36;;;7062:1;7059;7052:12;7030:36;;7098:76;7170:3;7159:8;7148:9;7144:24;7098:76;:::i;:::-;7093:2;7086:5;7082:14;7075:100;;7208:46;7249:3;7238:9;7234:19;7208:46;:::i;:::-;7202:3;7195:5;7191:15;7184:71;7316:3;7305:9;7301:19;7288:33;7282:3;7275:5;7271:15;7264:58;7383:3;7372:9;7368:19;7355:33;7349:3;7342:5;7338:15;7331:58;7450:3;7439:9;7435:19;7422:33;7416:3;7409:5;7405:15;7398:58;7475:3;7538:2;7527:9;7523:18;7510:32;7505:2;7498:5;7494:14;7487:56;;7562:3;7625:2;7614:9;7610:18;7597:32;7592:2;7585:5;7581:14;7574:56;;7649:3;7712:2;7701:9;7697:18;7684:32;7679:2;7672:5;7668:14;7661:56;;6432:1291;;;;:::o;7728:186::-;7796:20;;-1:-1:-1;;;;;7845:44:45;;7835:55;;7825:83;;7904:1;7901;7894:12;7919:530;7961:5;8014:3;8007:4;7999:6;7995:17;7991:27;7981:55;;8032:1;8029;8022:12;7981:55;8068:6;8055:20;-1:-1:-1;;;;;8090:2:45;8087:26;8084:52;;;8116:18;;:::i;:::-;8160:55;8203:2;8184:13;;-1:-1:-1;;8180:27:45;8209:4;8176:38;8160:55;:::i;:::-;8240:2;8231:7;8224:19;8286:3;8279:4;8274:2;8266:6;8262:15;8258:26;8255:35;8252:55;;;8303:1;8300;8293:12;8252:55;8368:2;8361:4;8353:6;8349:17;8342:4;8333:7;8329:18;8316:55;8416:1;8391:16;;;8409:4;8387:27;8380:38;;;;8395:7;7919:530;-1:-1:-1;;;7919:530:45:o;8454:896::-;8514:5;8562:4;8550:9;8545:3;8541:19;8537:30;8534:50;;;8580:1;8577;8570:12;8534:50;8602:22;;:::i;:::-;8593:31;;8660:9;8647:23;-1:-1:-1;;;;;8730:2:45;8722:6;8719:14;8716:34;;;8746:1;8743;8736:12;8716:34;8773:62;8831:3;8822:6;8811:9;8807:22;8773:62;:::i;:::-;8766:5;8759:77;8868:38;8902:2;8891:9;8887:18;8868:38;:::i;:::-;8863:2;8856:5;8852:14;8845:62;8939:38;8973:2;8962:9;8958:18;8939:38;:::i;:::-;8934:2;8927:5;8923:14;8916:62;9031:2;9020:9;9016:18;9003:32;8987:48;;9060:2;9050:8;9047:16;9044:36;;;9076:1;9073;9066:12;9044:36;9112:47;9155:3;9144:8;9133:9;9129:24;9112:47;:::i;:::-;9107:2;9100:5;9096:14;9089:71;9213:3;9202:9;9198:19;9185:33;9169:49;;9243:2;9233:8;9230:16;9227:36;;;9259:1;9256;9249:12;9227:36;;9296:47;9339:3;9328:8;9317:9;9313:24;9296:47;:::i;:::-;9290:3;9283:5;9279:15;9272:72;;8454:896;;;;:::o;9355:929::-;9422:5;9475:3;9468:4;9460:6;9456:17;9452:27;9442:55;;9493:1;9490;9483:12;9442:55;9529:6;9516:20;9555:4;9579:73;9595:56;9648:2;9595:56;:::i;9579:73::-;9686:15;;;9772:1;9768:10;;;;9756:23;;9752:32;;;9717:12;;;;9796:15;;;9793:35;;;9824:1;9821;9814:12;9793:35;9860:2;9852:6;9848:15;9872:383;9888:6;9883:3;9880:15;9872:383;;;9974:3;9961:17;-1:-1:-1;;;;;9997:11:45;9994:35;9991:125;;;10070:1;10099:2;10095;10088:14;9991:125;10141:71;10208:3;10203:2;10189:11;10181:6;10177:24;10173:33;10141:71;:::i;:::-;10129:84;;-1:-1:-1;10233:12:45;;;;9905;;9872:383;;;-1:-1:-1;10273:5:45;9355:929;-1:-1:-1;;;;;;9355:929:45:o;10289:392::-;10377:8;10387:6;10441:3;10434:4;10426:6;10422:17;10418:27;10408:55;;10459:1;10456;10449:12;10408:55;-1:-1:-1;10482:20:45;;-1:-1:-1;;;;;10514:30:45;;10511:50;;;10557:1;10554;10547:12;10511:50;10594:4;10586:6;10582:17;10570:29;;10654:3;10647:4;10637:6;10634:1;10630:14;10622:6;10618:27;10614:38;10611:47;10608:67;;;10671:1;10668;10661:12;10608:67;10289:392;;;;;:::o;10686:1160::-;10940:6;10948;10956;10964;10972;11025:2;11013:9;11004:7;11000:23;10996:32;10993:52;;;11041:1;11038;11031:12;10993:52;11081:9;11068:23;-1:-1:-1;;;;;11151:2:45;11143:6;11140:14;11137:34;;;11167:1;11164;11157:12;11137:34;11190:74;11256:7;11247:6;11236:9;11232:22;11190:74;:::i;:::-;11180:84;;11317:2;11306:9;11302:18;11289:32;11273:48;;11346:2;11336:8;11333:16;11330:36;;;11362:1;11359;11352:12;11330:36;11401:97;11490:7;11479:8;11468:9;11464:24;11401:97;:::i;:::-;11517:8;;-1:-1:-1;11375:123:45;-1:-1:-1;11605:2:45;11590:18;;11577:32;;-1:-1:-1;11621:16:45;;;11618:36;;;11650:1;11647;11640:12;11618:36;;11689:97;11778:7;11767:8;11756:9;11752:24;11689:97;:::i;:::-;10686:1160;;;;-1:-1:-1;10686:1160:45;;-1:-1:-1;11805:8:45;;11663:123;10686:1160;-1:-1:-1;;;10686:1160:45:o;11851:127::-;11912:10;11907:3;11903:20;11900:1;11893:31;11943:4;11940:1;11933:15;11967:4;11964:1;11957:15;11983:139;12063:1;12056:5;12053:12;12043:46;;12069:18;;:::i;:::-;12098;;11983:139::o;12236:436::-;12302:43;12341:3;12333:5;12327:12;12302:43;:::i;:::-;12391:4;12380:16;;;12374:23;-1:-1:-1;;;;;12467:21:45;;;12451:14;;;12444:45;;;;12538:4;12527:16;;;12521:23;12505:14;;;12498:47;12594:4;12583:16;;;12577:23;12561:14;;;12554:47;12654:4;12643:16;;;12637:23;12633:32;12617:14;;12610:56;12236:436::o;12677:640::-;12739:3;12777:5;12771:12;12804:6;12799:3;12792:19;12830:4;12859:2;12854:3;12850:12;12843:19;;12896:2;12889:5;12885:14;12917:1;12927:365;12941:6;12938:1;12935:13;12927:365;;;13006:6;13000:13;13026:46;13068:3;13063:2;13057:9;13026:46;:::i;:::-;13118:11;;;13112:18;-1:-1:-1;;;;;13108:44:45;13140:3;13092:14;;13085:68;13203:4;13195:13;13189:20;13182:4;13173:14;;13166:44;13239:4;13230:14;;;;13267:15;;;;13149:1;12956:9;12927:365;;;-1:-1:-1;13308:3:45;;12677:640;-1:-1:-1;;;;;12677:640:45:o;13322:324::-;13555:2;13544:9;13537:21;13518:4;13575:65;13636:2;13625:9;13621:18;13613:6;13575:65;:::i;13651:395::-;13745:6;13798:2;13786:9;13777:7;13773:23;13769:32;13766:52;;;13814:1;13811;13804:12;13766:52;13854:9;13841:23;-1:-1:-1;;;;;13879:6:45;13876:30;13873:50;;;13919:1;13916;13909:12;13873:50;13942:22;;13998:3;13980:16;;;13976:26;13973:46;;;14015:1;14012;14005:12;14233:487;14344:6;14352;14405:2;14393:9;14384:7;14380:23;14376:32;14373:52;;;14421:1;14418;14411:12;14373:52;14461:9;14448:23;-1:-1:-1;;;;;14486:6:45;14483:30;14480:50;;;14526:1;14523;14516:12;14480:50;14565:95;14652:7;14643:6;14632:9;14628:22;14565:95;:::i;:::-;14679:8;;14539:121;;-1:-1:-1;14233:487:45;-1:-1:-1;;;;14233:487:45:o;14917:879::-;15095:6;15103;15111;15119;15172:2;15160:9;15151:7;15147:23;15143:32;15140:52;;;15188:1;15185;15178:12;15140:52;15228:9;15215:23;-1:-1:-1;;;;;15298:2:45;15290:6;15287:14;15284:34;;;15314:1;15311;15304:12;15284:34;15353:95;15440:7;15431:6;15420:9;15416:22;15353:95;:::i;:::-;15467:8;;-1:-1:-1;15327:121:45;-1:-1:-1;15555:2:45;15540:18;;15527:32;;-1:-1:-1;15571:16:45;;;15568:36;;;15600:1;15597;15590:12;15568:36;;15639:97;15728:7;15717:8;15706:9;15702:24;15639:97;:::i;:::-;14917:879;;;;-1:-1:-1;15755:8:45;-1:-1:-1;;;;14917:879:45:o;15801:452::-;15894:6;15902;15955:2;15943:9;15934:7;15930:23;15926:32;15923:52;;;15971:1;15968;15961:12;15923:52;16011:9;15998:23;-1:-1:-1;;;;;16036:6:45;16033:30;16030:50;;;16076:1;16073;16066:12;16030:50;16099:22;;16155:2;16137:16;;;16133:25;16130:45;;;16171:1;16168;16161:12;16130:45;16194:2;16243;16228:18;;;;16215:32;;-1:-1:-1;;;15801:452:45:o;16258:858::-;16431:6;16439;16447;16455;16508:2;16496:9;16487:7;16483:23;16479:32;16476:52;;;16524:1;16521;16514:12;16476:52;16564:9;16551:23;-1:-1:-1;;;;;16634:2:45;16626:6;16623:14;16620:34;;;16650:1;16647;16640:12;16620:34;16673:22;;;;16729:3;16711:16;;;16707:26;16704:46;;;16746:1;16743;16736:12;16704:46;16769:2;;-1:-1:-1;16824:2:45;16809:18;;16796:32;;16840:16;;;16837:36;;;16869:1;16866;16859:12;16837:36;;16908:97;16997:7;16986:8;16975:9;16971:24;16908:97;:::i;:::-;16258:858;;17024:8;;-1:-1:-1;16882:123:45;;17106:2;17091:18;17078:32;;16258:858;-1:-1:-1;;;;16258:858:45:o;17121:1460::-;17456:6;17464;17472;17480;17488;17496;17504;17512;17565:3;17553:9;17544:7;17540:23;17536:33;17533:53;;;17582:1;17579;17572:12;17533:53;17622:9;17609:23;-1:-1:-1;;;;;17692:2:45;17684:6;17681:14;17678:34;;;17708:1;17705;17698:12;17678:34;17747:95;17834:7;17825:6;17814:9;17810:22;17747:95;:::i;:::-;17861:8;;-1:-1:-1;17721:121:45;-1:-1:-1;17949:2:45;17934:18;;17921:32;;-1:-1:-1;17965:16:45;;;17962:36;;;17994:1;17991;17984:12;17962:36;18033:97;18122:7;18111:8;18100:9;18096:24;18033:97;:::i;:::-;18149:8;;-1:-1:-1;18007:123:45;-1:-1:-1;18237:2:45;18222:18;;18209:32;;-1:-1:-1;18253:16:45;;;18250:36;;;18282:1;18279;18272:12;18250:36;;18321:97;18410:7;18399:8;18388:9;18384:24;18321:97;:::i;:::-;17121:1460;;;;-1:-1:-1;17121:1460:45;;;;18437:8;;18519:2;18504:18;;18491:32;;18570:3;18555:19;18542:33;;-1:-1:-1;17121:1460:45;-1:-1:-1;;;;17121:1460:45:o;18586:879::-;18902:2;18914:21;;;18984:13;;18887:18;;;19006:22;;;18854:4;;19081;;19059:2;19044:18;;;19108:15;;;18854:4;19151:185;19165:6;19162:1;19159:13;19151:185;;;19240:13;;19233:21;19226:29;19214:42;;19276:12;;;;19311:15;;;;19187:1;19180:9;19151:185;;;19155:3;;;19381:9;19376:3;19372:19;19367:2;19356:9;19352:18;19345:47;19409:50;19455:3;19447:6;19409:50;:::i;19470:388::-;19675:2;19664:9;19657:21;19638:4;19695:45;19736:2;19725:9;19721:18;19713:6;19695:45;:::i;:::-;19771:2;19756:18;;19749:34;;;;-1:-1:-1;;;;;;19819:32:45;;;;19814:2;19799:18;;;19792:60;19687:53;19470:388;-1:-1:-1;19470:388:45:o;19863:400::-;19962:6;20015:2;20003:9;19994:7;19990:23;19986:32;19983:52;;;20031:1;20028;20021:12;19983:52;20071:9;20058:23;-1:-1:-1;;;;;20096:6:45;20093:30;20090:50;;;20136:1;20133;20126:12;20090:50;20159:22;;20215:3;20197:16;;;20193:26;20190:46;;;20232:1;20229;20222:12;20268:1742;20679:6;20687;20695;20703;20711;20719;20727;20735;20743;20796:3;20784:9;20775:7;20771:23;20767:33;20764:53;;;20813:1;20810;20803:12;20764:53;20853:9;20840:23;-1:-1:-1;;;;;20923:2:45;20915:6;20912:14;20909:34;;;20939:1;20936;20929:12;20909:34;20962:74;21028:7;21019:6;21008:9;21004:22;20962:74;:::i;:::-;20952:84;;21089:2;21078:9;21074:18;21061:32;21045:48;;21118:2;21108:8;21105:16;21102:36;;;21134:1;21131;21124:12;21102:36;21173:97;21262:7;21251:8;21240:9;21236:24;21173:97;:::i;:::-;21289:8;;-1:-1:-1;21147:123:45;-1:-1:-1;21377:2:45;21362:18;;21349:32;;-1:-1:-1;21393:16:45;;;21390:36;;;21422:1;21419;21412:12;21390:36;21461:97;21550:7;21539:8;21528:9;21524:24;21461:97;:::i;:::-;21577:8;;-1:-1:-1;21435:123:45;-1:-1:-1;21665:2:45;21650:18;;21637:32;;-1:-1:-1;21681:16:45;;;21678:36;;;21710:1;21707;21700:12;21678:36;;21749:97;21838:7;21827:8;21816:9;21812:24;21749:97;:::i;:::-;20268:1742;;;;-1:-1:-1;20268:1742:45;;;;;;21723:123;;21947:3;21932:19;;21919:33;;21999:3;21984:19;;;21971:33;;-1:-1:-1;20268:1742:45;-1:-1:-1;;;;20268:1742:45:o;22517:2710::-;22703:9;22738:77;22754:60;22807:6;22754:60;:::i;22738:77::-;22849:19;;;22887:4;22907:12;;;;22837:3;22938:1;22973:15;;;22962:27;;23012:14;23001:26;;22998:46;;;23040:1;23037;23030:12;22998:46;23064:5;23078:2116;23094:6;23089:3;23086:15;23078:2116;;;23180:3;23167:17;-1:-1:-1;;;;;23257:2:45;23244:11;23241:19;23238:109;;;23301:1;23330:2;23326;23319:14;23238:109;23381:11;23374:5;23370:23;23360:33;;23438:4;23433:2;23417:14;23413:23;23409:34;23406:124;;;23484:1;23513:2;23509;23502:14;23406:124;23558:22;;:::i;:::-;23622:2;23609:16;23600:7;23593:33;23675:2;23671;23667:11;23654:25;23714:1;23705:7;23702:14;23692:112;;23758:1;23787:2;23783;23776:14;23692:112;23824:16;;;23817:33;23873:2;23926:11;;;23913:25;23895:16;;;23888:51;23962:2;24015:11;;;24002:25;23984:16;;;23977:51;24052:3;24095:12;;;24082:26;24124:14;;;24121:107;;;24180:1;24210:3;24205;24198:16;24121:107;24252:15;;;;;24310:14;24303:4;24294:14;;24290:35;24280:136;;24368:1;24357:12;;24398:3;24393;24386:16;24280:136;24453:3;24440:17;24429:28;;24483:74;24499:57;24552:3;24499:57;:::i;24483:74::-;24601:18;;;24697:12;;;24688:22;;24684:31;;;24641:14;;;;24744;24731:28;;24728:121;;;24801:1;24831:3;24826;24819:16;24728:121;24875:12;;;;24900:174;24918:8;24911:5;24908:19;24900:174;;;25000:19;;24986:34;;24939:14;;;;25046;;;;24900:174;;;25094:17;;;25087:32;;;;-1:-1:-1;25132:20:45;;-1:-1:-1;;25172:12:45;;;;23111;;23078:2116;;;-1:-1:-1;25216:5:45;;22517:2710;-1:-1:-1;;;;;;;22517:2710:45:o;25232:577::-;25354:4;25360:6;25420:11;25407:25;25514:2;25510:7;25499:8;25483:14;25479:29;25475:43;25455:18;25451:68;25441:96;;25533:1;25530;25523:12;25441:96;25560:33;;25612:20;;;-1:-1:-1;;;;;;25644:30:45;;25641:50;;;25687:1;25684;25677:12;25641:50;25720:4;25708:17;;-1:-1:-1;25779:4:45;25767:17;;25751:14;25747:38;25737:49;;25734:69;;;25799:1;25796;25789:12;25814:232;25900:6;25953:3;25941:9;25932:7;25928:23;25924:33;25921:53;;;25970:1;25967;25960:12;25921:53;25993:47;26032:7;26021:9;25993:47;:::i;26051:585::-;26181:4;26187:6;26247:11;26234:25;26341:2;26337:7;26326:8;26310:14;26306:29;26302:43;26282:18;26278:68;26268:96;;26360:1;26357;26350:12;26268:96;26387:33;;26439:20;;;-1:-1:-1;;;;;;26471:30:45;;26468:50;;;26514:1;26511;26504:12;26468:50;26547:4;26535:17;;-1:-1:-1;26606:4:45;26594:17;;26578:14;26574:38;26564:49;;26561:69;;;26626:1;26623;26616:12;26641:248;26735:6;26788:3;26776:9;26767:7;26763:23;26759:33;26756:53;;;26805:1;26802;26795:12;26756:53;26828:55;26875:7;26864:9;26828:55;:::i;26894:207::-;26967:6;27020:2;27008:9;26999:7;26995:23;26991:32;26988:52;;;27036:1;27033;27026:12;26988:52;27059:36;27085:9;27059:36;:::i;27106:211::-;27220:9;27257:54;27296:14;27289:5;27257:54;:::i;27322:127::-;27383:10;27378:3;27374:20;27371:1;27364:31;27414:4;27411:1;27404:15;27438:4;27435:1;27428:15;27454:322;27545:4;27603:11;27590:25;27697:2;27693:7;27682:8;27666:14;27662:29;27658:43;27638:18;27634:68;27624:96;;27716:1;27713;27706:12;27624:96;27737:33;;;;;27454:322;-1:-1:-1;;27454:322:45:o;27781:333::-;27882:4;27940:11;27927:25;28034:3;28030:8;28019;28003:14;27999:29;27995:44;27975:18;27971:69;27961:97;;28054:1;28051;28044:12;28119:217;28237:9;28274:56;28315:14;28308:5;28274:56;:::i;28341:521::-;28418:4;28424:6;28484:11;28471:25;28578:2;28574:7;28563:8;28547:14;28543:29;28539:43;28519:18;28515:68;28505:96;;28597:1;28594;28587:12;28505:96;28624:33;;28676:20;;;-1:-1:-1;;;;;;28708:30:45;;28705:50;;;28751:1;28748;28741:12;28705:50;28784:4;28772:17;;-1:-1:-1;28815:14:45;28811:27;;;28801:38;;28798:58;;;28852:1;28849;28842:12;28867:489;28934:5;28982:4;28970:9;28965:3;28961:19;28957:30;28954:50;;;29000:1;28997;28990:12;28954:50;29033:4;29027:11;29077:4;29069:6;29065:17;29148:6;29136:10;29133:22;-1:-1:-1;;;;;29100:10:45;29097:34;29094:62;29091:88;;;29159:18;;:::i;:::-;29195:4;29188:24;29260:23;;29245:39;;29345:2;29330:18;;;29317:32;29300:15;;;29293:57;;;;-1:-1:-1;29230:6:45;28867:489;-1:-1:-1;28867:489:45:o;29361:1832::-;29607:9;29642:77;29658:60;29711:6;29658:60;:::i;29642:77::-;29741:3;29765:6;29760:3;29753:19;29791:4;29820:2;29815:3;29811:12;29804:19;;29864:6;29861:1;29857:14;29850:5;29846:26;29895:14;29887:6;29884:26;29881:46;;;29923:1;29920;29913:12;29881:46;29947:5;29961:1199;29977:6;29972:3;29969:15;29961:1199;;;30063:3;30050:17;-1:-1:-1;;;;;30086:11:45;30083:35;30080:125;;;30159:1;30188:2;30184;30177:14;30080:125;30228:23;;30293:14;30286:4;30278:13;;30274:34;30264:132;;30350:1;30379:2;30375;30368:14;30264:132;30432:2;30419:16;30461:73;30477:56;30530:2;30477:56;:::i;30461:73::-;30578:17;;;30676:1;30672:10;;;;30664:19;;30660:28;;;30617:14;;;;30717;30704:28;;30701:118;;;30773:1;30802:2;30798;30791:14;30701:118;30845:11;;;;30869:218;30887:8;30880:5;30877:19;30869:218;;;30971:61;31017:14;31010:5;30971:61;:::i;:::-;30964:5;30957:76;31070:2;31063:5;31059:14;31050:23;;30919:4;30912:5;30908:16;30899:25;;30869:218;;;31100:18;;-1:-1:-1;;;31138:12:45;;;;29994;;29961:1199;;;-1:-1:-1;31182:5:45;;29361:1832;-1:-1:-1;;;;;;29361:1832:45:o;31458:584::-;31590:4;31596:6;31656:11;31643:25;31750:2;31746:7;31735:8;31719:14;31715:29;31711:43;31691:18;31687:68;31677:96;;31769:1;31766;31759:12;31677:96;31796:33;;31848:20;;;-1:-1:-1;;;;;;31880:30:45;;31877:50;;;31923:1;31920;31913:12;31877:50;31956:4;31944:17;;-1:-1:-1;32007:1:45;32003:14;;;31987;31983:35;31973:46;;31970:66;;;32032:1;32029;32022:12;33308:127;33369:10;33364:3;33360:20;33357:1;33350:31;33400:4;33397:1;33390:15;33424:4;33421:1;33414:15;33440:168;33480:7;33546:1;33542;33538:6;33534:14;33531:1;33528:21;33523:1;33516:9;33509:17;33505:45;33502:71;;;33553:18;;:::i;:::-;-1:-1:-1;33593:9:45;;33440:168::o;33613:128::-;33653:3;33684:1;33680:6;33677:1;33674:13;33671:39;;;33690:18;;:::i;:::-;-1:-1:-1;33726:9:45;;33613:128::o;33746:125::-;33786:4;33814:1;33811;33808:8;33805:34;;;33819:18;;:::i;:::-;-1:-1:-1;33856:9:45;;33746:125::o;33876:473::-;33941:3;33979:5;33973:12;34006:6;34001:3;33994:19;34032:4;34061:2;34056:3;34052:12;34045:19;;34098:2;34091:5;34087:14;34119:1;34129:195;34143:6;34140:1;34137:13;34129:195;;;34192:50;34238:3;34229:6;34223:13;34192:50;:::i;:::-;34271:4;34262:14;;;;;34299:15;;;;34165:1;34158:9;34129:195;;34354:1410;34744:4;34773:3;34814:2;34803:9;34799:18;34844:6;34833:9;34826:25;34870:2;34908:1;34904;34899:3;34895:11;34891:19;34958:2;34950:6;34946:15;34941:2;34930:9;34926:18;34919:43;34981:2;35019;35014;35003:9;34999:18;34992:30;35042:6;35077;35071:13;35108:6;35100;35093:22;35146:3;35135:9;35131:19;35124:26;;35185:2;35177:6;35173:15;35159:29;;35206:1;35216:414;35230:6;35227:1;35224:13;35216:414;;;35295:6;35289:13;35315:40;35351:3;35346:2;35340:9;35315:40;:::i;:::-;35399:11;;;35393:18;35389:27;;35375:12;;;35368:49;35457:11;;;35451:18;35437:12;;;35430:40;35493:4;35537:11;;;35531:18;35517:12;;;35510:40;35605:15;;;;35570:12;;;;35252:1;35245:9;35216:414;;;35220:3;;35677:9;35672:3;35668:19;35661:4;35650:9;35646:20;35639:49;35705:53;35754:3;35746:6;35705:53;:::i;:::-;35697:61;34354:1410;-1:-1:-1;;;;;;;;;;;;34354:1410:45:o;35769:253::-;35866:6;35919:2;35907:9;35898:7;35894:23;35890:32;35887:52;;;35935:1;35932;35925:12;35887:52;35958:58;36008:7;35997:9;35958:58;:::i;36943:815::-;37005:3;37043:5;37037:12;37070:6;37065:3;37058:19;37096:4;37125:2;37120:3;37116:12;37109:19;;37162:2;37155:5;37151:14;37183:1;37193:540;37207:6;37204:1;37201:13;37193:540;;;37272:6;37266:13;37292:40;37328:3;37323:2;37317:9;37292:40;:::i;:::-;37376:11;;;37370:18;-1:-1:-1;;;;;37366:44:45;37352:12;;;37345:66;37434:4;37478:11;;;37472:18;37458:12;;;37451:40;37514:4;37558:11;;;37552:18;37538:12;;;37531:40;37594:4;37638:11;;;37632:18;37618:12;;;37611:40;37398:3;37671:14;;;;37708:15;;;;37407:1;37222:9;37193:540;;37763:982;37833:3;37871:5;37865:12;37898:6;37893:3;37886:19;37924:4;37953:2;37948:3;37944:12;37937:19;;37990:2;37983:5;37979:14;38011:1;38021:699;38035:6;38032:1;38029:13;38021:699;;;38100:6;38094:13;38120:40;38156:3;38151:2;38145:9;38120:40;:::i;:::-;38199:11;;;38193:18;-1:-1:-1;;;;;38287:21:45;;;38273:12;;;38266:43;38332:4;38376:11;;;38370:18;38356:12;;;38349:40;38412:4;38456:11;;;38450:18;38436:12;;;38429:40;38492:4;38536:11;;;38530:18;38516:12;;;38509:40;38242:3;38620:11;;;38614:18;38610:27;38596:12;;;38589:49;38667:4;38658:14;;;;38695:15;;;;38251:1;38050:9;38021:699;;38750:140;38831:1;38824:5;38821:12;38811:46;;38837:18;;:::i;39017:435::-;39070:3;39108:5;39102:12;39135:6;39130:3;39123:19;39161:4;39190:2;39185:3;39181:12;39174:19;;39227:2;39220:5;39216:14;39248:1;39258:169;39272:6;39269:1;39266:13;39258:169;;;39333:13;;39321:26;;39367:12;;;;39402:15;;;;39294:1;39287:9;39258:169;;39457:135;39533:1;39526:5;39523:12;39513:46;;39539:18;;:::i;39597:1122::-;39666:3;39697;39729:5;39723:12;39756:6;39751:3;39744:19;39782:4;39811:2;39806:3;39802:12;39795:19;;39867:2;39857:6;39854:1;39850:14;39843:5;39839:26;39835:35;39904:2;39897:5;39893:14;39925:1;39935:758;39949:6;39946:1;39943:13;39935:758;;;40036:2;40032:7;40024:5;40018:4;40014:16;40010:30;40005:3;39998:43;40070:6;40064:13;40100:4;40136:2;40130:9;40124:4;40117:23;40187:2;40183;40179:11;40173:18;40204:49;40249:2;40243:4;40239:13;40225:12;40204:49;:::i;:::-;-1:-1:-1;40276:4:45;40321:11;;;40315:18;40300:13;;;40293:41;40357:4;40402:11;;;40396:18;40381:13;;;40374:41;40438:4;40483:11;;;40477:18;40515:13;;;40508:25;;;40554:59;40599:13;;;40477:18;40554:59;:::i;:::-;40671:12;;;;40546:67;-1:-1:-1;;;40636:15:45;;;;39971:1;39964:9;39935:758;;40724:2814;41195:6;41184:9;41177:25;41267:1;41263;41258:3;41254:11;41250:19;41242:6;41238:32;41233:2;41222:9;41218:18;41211:60;41307:3;41302:2;41291:9;41287:18;41280:31;41158:4;41330:3;41368:6;41362:13;41412:3;41406;41395:9;41391:19;41384:32;41425:59;41480:2;41469:9;41465:18;41450:12;41444:19;-1:-1:-1;;;;;12193:31:45;12181:44;;12127:104;41425:59;41539:2;41525:12;41521:21;41515:28;41562:6;41577:54;41627:2;41616:9;41612:18;41596:14;-1:-1:-1;;;;;12193:31:45;12181:44;;12127:104;41577:54;41686:2;41672:12;41668:21;41662:28;41640:50;;41727:2;41721:3;41710:9;41706:19;41699:31;;41753:74;41822:3;41811:9;41807:19;41791:14;41753:74;:::i;:::-;41739:88;;41882:4;41868:12;41864:23;41858:30;41957:3;41953:8;41941:9;41933:6;41929:22;41925:37;41919:3;41908:9;41904:19;41897:66;41986:69;42048:6;42032:14;41986:69;:::i;:::-;41972:83;;;42110:4;42096:12;42092:23;42086:30;42125:62;42182:3;42171:9;42167:19;42151:14;42125:62;:::i;:::-;;42248:3;42234:12;42230:22;42224:29;42218:3;42207:9;42203:19;42196:58;42315:4;42301:12;42297:23;42291:30;42285:3;42274:9;42270:19;42263:59;42383:4;42369:12;42365:23;42359:30;42353:3;42342:9;42338:19;42331:59;42409:6;42476:2;42462:12;42458:21;42452:28;42446:3;42435:9;42431:19;42424:57;42500:6;42567:2;42553:12;42549:21;42543:28;42537:3;42526:9;42522:19;42515:57;42633:2;42619:12;42615:21;42609:28;42603:3;42592:9;42588:19;42581:57;42687:2;42679:6;42675:15;42669:22;42647:44;;42700:56;42750:4;42739:9;42735:20;42719:14;-1:-1:-1;;;;;38961:44:45;38949:57;;38895:117;42700:56;42805:2;42793:15;;42787:22;-1:-1:-1;;;;;38961:44:45;42868:4;42853:20;;38949:57;42923:4;42911:17;;42905:24;42996:22;;;-1:-1:-1;;42992:31:45;;;42972:18;;;42965:59;42905:24;;-1:-1:-1;;;43047:41:45;43000:6;42905:24;43047:41;:::i;:::-;43033:55;;43137:4;43129:6;43125:17;43119:24;43097:46;;43207:2;43195:9;43187:6;43183:22;43179:31;43174:2;43163:9;43159:18;43152:59;;;43231:41;43265:6;43249:14;43231:41;:::i;:::-;43220:52;;;;43319:9;43314:3;43310:19;43303:4;43292:9;43288:20;43281:49;43353:41;43390:3;43382:6;43353:41;:::i;:::-;43339:55;;43444:9;43436:6;43432:22;43425:4;43414:9;43410:20;43403:52;43472:60;43525:6;43517;43472:60;:::i;43830:198::-;43971:2;43956:18;;43983:39;43960:9;44004:6;43983:39;:::i;45014:289::-;45189:6;45178:9;45171:25;45232:2;45227;45216:9;45212:18;45205:30;45152:4;45252:45;45293:2;45282:9;45278:18;45270:6;45252:45;:::i"
            },
            "methodIdentifiers": {
              "cancel((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256)[])": "fd9f1e10",
              "fulfillAdvancedOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes),(uint256,uint8,uint256,uint256,bytes32[])[],bytes32)": "df7b0dac",
              "fulfillAvailableAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)": "fb4c2af9",
              "fulfillAvailableOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)": "ed98a574",
              "fulfillBasicOrder((address,uint256,uint256,address,address,address,uint256,uint256,uint8,uint256,uint256,bytes32,uint256,bytes32,bytes32,uint256,(uint256,address)[],bytes))": "fb0f3ee1",
              "fulfillOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes),bytes32)": "b3a34c4c",
              "getNonce(address)": "2d0335ab",
              "getOrderHash((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256))": "79df72bd",
              "getOrderStatus(bytes32)": "46423aa7",
              "incrementNonce()": "627cdcb9",
              "information()": "f47b7740",
              "matchAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],((uint256,uint256)[],(uint256,uint256)[])[])": "55944a42",
              "matchOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],((uint256,uint256)[],(uint256,uint256)[])[])": "a8174404",
              "name()": "06fdde03",
              "validate(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[])": "88147732"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConsiderationCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CriteriaNotEnabledForItem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InexactFraction\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFulfillmentComponentData\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProof\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"InvalidRestrictedOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MismatchedFulfillmentOfferAndConsiderationComponents\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum Side\",\"name\":\"side\",\"type\":\"uint8\"}],\"name\":\"MissingFulfillmentComponentOnAggregation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferAndConsiderationRequiredOnFulfillment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnresolvedConsiderationCriteria\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnresolvedOfferCriteria\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"NonceIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fulfiller\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct SpentItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct ReceivedItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderComponents[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"cancel\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"cancelled\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"uint120\",\"name\":\"numerator\",\"type\":\"uint120\"},{\"internalType\":\"uint120\",\"name\":\"denominator\",\"type\":\"uint120\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct AdvancedOrder\",\"name\":\"advancedOrder\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"enum Side\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"criteriaProof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct CriteriaResolver[]\",\"name\":\"criteriaResolvers\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"}],\"name\":\"fulfillAdvancedOrder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"fulfilled\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"uint120\",\"name\":\"numerator\",\"type\":\"uint120\"},{\"internalType\":\"uint120\",\"name\":\"denominator\",\"type\":\"uint120\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct AdvancedOrder[]\",\"name\":\"advancedOrders\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"enum Side\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"criteriaProof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct CriteriaResolver[]\",\"name\":\"criteriaResolvers\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[][]\",\"name\":\"offerFulfillments\",\"type\":\"tuple[][]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[][]\",\"name\":\"considerationFulfillments\",\"type\":\"tuple[][]\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"maximumFulfilled\",\"type\":\"uint256\"}],\"name\":\"fulfillAvailableAdvancedOrders\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"availableOrders\",\"type\":\"bool[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ReceivedItem\",\"name\":\"item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct Execution[]\",\"name\":\"executions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Order[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[][]\",\"name\":\"offerFulfillments\",\"type\":\"tuple[][]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[][]\",\"name\":\"considerationFulfillments\",\"type\":\"tuple[][]\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"maximumFulfilled\",\"type\":\"uint256\"}],\"name\":\"fulfillAvailableOrders\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"availableOrders\",\"type\":\"bool[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ReceivedItem\",\"name\":\"item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct Execution[]\",\"name\":\"executions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"considerationToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"considerationIdentifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"offerToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"offerIdentifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"offerAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum BasicOrderType\",\"name\":\"basicOrderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"offererConduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalAdditionalRecipients\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct AdditionalRecipient[]\",\"name\":\"additionalRecipients\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct BasicOrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"}],\"name\":\"fulfillBasicOrder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"fulfilled\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Order\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"}],\"name\":\"fulfillOrder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"fulfilled\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderComponents\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"getOrderHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"getOrderStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isValidated\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isCancelled\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"totalFilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSize\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"incrementNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"information\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"uint120\",\"name\":\"numerator\",\"type\":\"uint120\"},{\"internalType\":\"uint120\",\"name\":\"denominator\",\"type\":\"uint120\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct AdvancedOrder[]\",\"name\":\"advancedOrders\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"enum Side\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"criteriaProof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct CriteriaResolver[]\",\"name\":\"criteriaResolvers\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[]\",\"name\":\"offerComponents\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[]\",\"name\":\"considerationComponents\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Fulfillment[]\",\"name\":\"fulfillments\",\"type\":\"tuple[]\"}],\"name\":\"matchAdvancedOrders\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ReceivedItem\",\"name\":\"item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct Execution[]\",\"name\":\"executions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Order[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[]\",\"name\":\"offerComponents\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[]\",\"name\":\"considerationComponents\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Fulfillment[]\",\"name\":\"fulfillments\",\"type\":\"tuple[]\"}],\"name\":\"matchOrders\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ReceivedItem\",\"name\":\"item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct Execution[]\",\"name\":\"executions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Order[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"validate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"validated\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"0age\",\"custom:coauthor\":\"d1ll0ntransmissions11\",\"custom:version\":\"1\",\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"ConsiderationCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with a consideration item that has not been supplied.\"}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"CriteriaNotEnabledForItem()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with an item that does not expect a criteria to be      resolved.\"}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InexactFraction()\":[{\"details\":\"Revert with an error when attempting to apply a fraction as part of      a partial fill that does not divide the target amount cleanly.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidFulfillmentComponentData()\":[{\"details\":\"Revert with an error when an order or item index are out of range      or a fulfillment component does not match the type, token,      identifier, or conduit preference of the initial consideration item.\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidProof()\":[{\"details\":\"Revert with an error when providing a criteria resolver that      contains an invalid proof with respect to the given item and      chosen identifier.\"}],\"InvalidRestrictedOrder(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that specifies      a restricted submitter as its order type when not submitted by      either the offerrer or the order's zone or approved as valid by the      zone in question via a staticcall to `isValidOrder`.\",\"params\":{\"orderHash\":\"The order hash for the invalid restricted order.\"}}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MismatchedFulfillmentOfferAndConsiderationComponents()\":[{\"details\":\"Revert with an error when the initial offer item named by a      fulfillment component does not match the type, token, identifier,      or conduit preference of the initial consideration item.\"}],\"MissingFulfillmentComponentOnAggregation(uint8)\":[{\"details\":\"Revert with an error when a fulfillment is provided as part of an      call to fulfill available orders that does not declare at least one      component.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OfferAndConsiderationRequiredOnFulfillment()\":[{\"details\":\"Revert with an error when a fulfillment is provided that does not      declare at least one offer component and at least one consideration      component.\"}],\"OfferCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with an offer item that has not been supplied.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order that has not been supplied.\"}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"UnresolvedConsiderationCriteria()\":[{\"details\":\"Revert with an error if a consideration item still has unresolved      criteria after applying all criteria resolvers.\"}],\"UnresolvedOfferCriteria()\":[{\"details\":\"Revert with an error if an offer item still has unresolved criteria      after applying all criteria resolvers.\"}]},\"kind\":\"dev\",\"methods\":{\"cancel((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256)[])\":{\"params\":{\"orders\":\"The orders to cancel.\"},\"returns\":{\"cancelled\":\"A boolean indicating whether the supplied orders have                   been successfully cancelled.\"}},\"constructor\":{\"params\":{\"conduitController\":\"A contract that deploys conduits, or proxies                          that may optionally be used to transfer approved                          ERC20/721/1155 tokens.\"}},\"fulfillAdvancedOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes),(uint256,uint8,uint256,uint256,bytes32[])[],bytes32)\":{\"params\":{\"advancedOrder\":\"The order to fulfill along with the fraction                            of the order to attempt to fill. Note that                            both the offerer and the fulfiller must first                            approve this contract (or their conduit if                            indicated by the order) to transfer any                            relevant tokens on their behalf and that                            contracts must implement `onERC1155Received`                            to receive ERC1155 tokens as consideration.                            Also note that all offer and consideration                            components must have no remainder after                            multiplication of the respective amount with                            the supplied fraction for the partial fill to                            be considered valid.\",\"criteriaResolvers\":\"An array where each element contains a                            reference to a specific offer or                            consideration, a token identifier, and a proof                            that the supplied token identifier is                            contained in the merkle root held by the item                            in question's criteria element. Note that an                            empty criteria indicates that any                            (transferrable) token identifier on the token                            in question is valid and that no associated                            proof needs to be supplied.\",\"fulfillerConduitKey\":\"A bytes32 value indicating what conduit, if                            any, to source the fulfiller's token approvals                            from. The zero hash signifies that no conduit                            should be used (and direct approvals set on                            Consideration).\"},\"returns\":{\"fulfilled\":\"A boolean indicating whether the order has been                   successfully fulfilled.\"}},\"fulfillAvailableAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)\":{\"params\":{\"advancedOrders\":\"The orders to fulfill along with the                                  fraction of those orders to attempt to                                  fill. Note that both the offerer and the                                  fulfiller must first approve this                                  contract (or their conduit if indicated                                  by the order) to transfer any relevant                                  tokens on their behalf and that                                  contracts must implement                                  `onERC1155Received` in order to receive                                  ERC1155 tokens as consideration. Also                                  note that all offer and consideration                                  components must have no remainder after                                  multiplication of the respective amount                                  with the supplied fraction for an                                  order's partial fill amount to be                                  considered valid.\",\"considerationFulfillments\":\"An array of FulfillmentComponent arrays                                  indicating which consideration items to                                  attempt to aggregate when preparing                                  executions.\",\"criteriaResolvers\":\"An array where each element contains a                                  reference to a specific offer or                                  consideration, a token identifier, and a                                  proof that the supplied token identifier                                  is contained in the merkle root held by                                  the item in question's criteria element.                                  Note that an empty criteria indicates                                  that any (transferrable) token                                  identifier on the token in question is                                  valid and that no associated proof needs                                  to be supplied.\",\"fulfillerConduitKey\":\"A bytes32 value indicating what conduit,                                  if any, to source the fulfiller's token                                  approvals from. The zero hash signifies                                  that no conduit should be used (and                                  direct approvals set on Consideration).\",\"maximumFulfilled\":\"The maximum number of orders to fulfill.\",\"offerFulfillments\":\"An array of FulfillmentComponent arrays                                  indicating which offer items to attempt                                  to aggregate when preparing executions.\"},\"returns\":{\"availableOrders\":\"An array of booleans indicating if each order                         with an index corresponding to the index of the                         returned boolean was fulfillable or not.\",\"executions\":\"     An array of elements indicating the sequence of                         transfers performed as part of matching the given                         orders.\"}},\"fulfillAvailableOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)\":{\"params\":{\"considerationFulfillments\":\"An array of FulfillmentComponent arrays                                  indicating which consideration items to                                  attempt to aggregate when preparing                                  executions.\",\"fulfillerConduitKey\":\"A bytes32 value indicating what conduit,                                  if any, to source the fulfiller's token                                  approvals from. The zero hash signifies                                  that no conduit should be used (and                                  direct approvals set on Consideration).\",\"maximumFulfilled\":\"The maximum number of orders to fulfill.\",\"offerFulfillments\":\"An array of FulfillmentComponent arrays                                  indicating which offer items to attempt                                  to aggregate when preparing executions.\",\"orders\":\"The orders to fulfill. Note that both                                  the offerer and the fulfiller must first                                  approve this contract (or the                                  corresponding conduit if indicated) to                                  transfer any relevant tokens on their                                  behalf and that contracts must implement                                  `onERC1155Received` to receive ERC1155                                  tokens as consideration.\"},\"returns\":{\"availableOrders\":\"An array of booleans indicating if each order                         with an index corresponding to the index of the                         returned boolean was fulfillable or not.\",\"executions\":\"     An array of elements indicating the sequence of                         transfers performed as part of matching the given                         orders.\"}},\"fulfillBasicOrder((address,uint256,uint256,address,address,address,uint256,uint256,uint8,uint256,uint256,bytes32,uint256,bytes32,bytes32,uint256,(uint256,address)[],bytes))\":{\"params\":{\"parameters\":\"Additional information on the fulfilled order. Note                   that the offerer and the fulfiller must first approve                   this contract (or their chosen conduit if indicated)                   before any tokens can be transferred. Also note that                   contract recipients of ERC1155 consideration items must                   implement `onERC1155Received` in order to receive those                   items.\"},\"returns\":{\"fulfilled\":\"A boolean indicating whether the order has been                   successfully fulfilled.\"}},\"fulfillOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes),bytes32)\":{\"params\":{\"fulfillerConduitKey\":\"A bytes32 value indicating what conduit, if                            any, to source the fulfiller's token approvals                            from. The zero hash signifies that no conduit                            should be used (and direct approvals set on                            Consideration).\",\"order\":\"The order to fulfill. Note that both the                            offerer and the fulfiller must first approve                            this contract (or the corresponding conduit if                            indicated) to transfer any relevant tokens on                            their behalf and that contracts must implement                            `onERC1155Received` to receive ERC1155 tokens                            as consideration.\"},\"returns\":{\"fulfilled\":\"A boolean indicating whether the order has been                   successfully fulfilled.\"}},\"getNonce(address)\":{\"params\":{\"offerer\":\"The offerer in question.\"},\"returns\":{\"nonce\":\"The current nonce.\"}},\"getOrderHash((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256))\":{\"params\":{\"order\":\"The components of the order.\"},\"returns\":{\"orderHash\":\"The order hash.\"}},\"getOrderStatus(bytes32)\":{\"params\":{\"orderHash\":\"The order hash in question.\"},\"returns\":{\"isCancelled\":\"A boolean indicating whether the order in question                     has been cancelled.\",\"isValidated\":\"A boolean indicating whether the order in question                     has been validated (i.e. previously approved or                     partially filled).\",\"totalFilled\":\"The total portion of the order that has been filled                     (i.e. the \\\"numerator\\\").\",\"totalSize\":\"  The total size of the order that is either filled or                     unfilled (i.e. the \\\"denominator\\\").\"}},\"incrementNonce()\":{\"returns\":{\"newNonce\":\"The new nonce.\"}},\"information()\":{\"returns\":{\"conduitController\":\"The conduit Controller set for this contract.\",\"domainSeparator\":\"  The domain separator for this contract.\",\"version\":\"          The contract version.\"}},\"matchAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],((uint256,uint256)[],(uint256,uint256)[])[])\":{\"params\":{\"advancedOrders\":\"The advanced orders to match. Note that both the                          offerer and fulfiller on each order must first                          approve this contract (or their conduit if                          indicated by the order) to transfer any relevant                          tokens on their behalf and each consideration                          recipient must implement `onERC1155Received` in                          order to receive ERC1155 tokens. Also note that                          the offer and consideration components for each                          order must have no remainder after multiplying                          the respective amount with the supplied fraction                          in order for the group of partial fills to be                          considered valid.\",\"criteriaResolvers\":\"An array where each element contains a reference                          to a specific order as well as that order's                          offer or consideration, a token identifier, and                          a proof that the supplied token identifier is                          contained in the order's merkle root. Note that                          an empty root indicates that any (transferrable)                          token identifier is valid and that no associated                          proof needs to be supplied.\",\"fulfillments\":\"An array of elements allocating offer components                          to consideration components. Note that each                          consideration component must be fully met in                          order for the match operation to be valid.\"},\"returns\":{\"executions\":\"An array of elements indicating the sequence of                    transfers performed as part of matching the given                    orders.\"}},\"matchOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],((uint256,uint256)[],(uint256,uint256)[])[])\":{\"params\":{\"fulfillments\":\"An array of elements allocating offer components                          to consideration components. Note that each                          consideration component must be fully met in                          order for the match operation to be valid.\",\"orders\":\"The orders to match. Note that both the offerer                          and fulfiller on each order must first approve                          this contract (or their conduit if indicated by                          the order) to transfer any relevant tokens on                          their behalf and each consideration recipient                          must implement `onERC1155Received` in order to                          receive ERC1155 tokens.\"},\"returns\":{\"executions\":\"An array of elements indicating the sequence of                    transfers performed as part of matching the given                    orders.\"}},\"name()\":{\"returns\":{\"contractName\":\"The name of this contract.\"}},\"validate(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[])\":{\"params\":{\"orders\":\"The orders to validate.\"},\"returns\":{\"validated\":\"A boolean indicating whether the supplied orders have                   been successfully validated.\"}}},\"title\":\"Seaport\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"cancel((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256)[])\":{\"notice\":\"Cancel an arbitrary number of orders. Note that only the offerer         or the zone of a given order may cancel it. Callers should ensure         that the intended order was cancelled by calling `getOrderStatus`         and confirming that `isCancelled` returns `true`.\"},\"constructor\":{\"notice\":\"Derive and set hashes, reference chainId, and associated domain         separator during deployment.\"},\"fulfillAdvancedOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes),(uint256,uint8,uint256,uint256,bytes32[])[],bytes32)\":{\"notice\":\"Fill an order, fully or partially, with an arbitrary number of         items for offer and consideration alongside criteria resolvers         containing specific token identifiers and associated proofs.\"},\"fulfillAvailableAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)\":{\"notice\":\"Attempt to fill a group of orders, fully or partially, with an         arbitrary number of items for offer and consideration per order         alongside criteria resolvers containing specific token         identifiers and associated proofs. Any order that is not         currently active, has already been fully filled, or has been         cancelled will be omitted. Remaining offer and consideration         items will then be aggregated where possible as indicated by the         supplied offer and consideration component arrays and aggregated         items will be transferred to the fulfiller or to each intended         recipient, respectively. Note that a failing item transfer or an         issue with order formatting will cause the entire batch to fail.\"},\"fulfillAvailableOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)\":{\"notice\":\"Attempt to fill a group of orders, each with an arbitrary number         of items for offer and consideration. Any order that is not         currently active, has already been fully filled, or has been         cancelled will be omitted. Remaining offer and consideration         items will then be aggregated where possible as indicated by the         supplied offer and consideration component arrays and aggregated         items will be transferred to the fulfiller or to each intended         recipient, respectively. Note that a failing item transfer or an         issue with order formatting will cause the entire batch to fail.         Note that this function does not support criteria-based orders or         partial filling of orders (though filling the remainder of a         partially-filled order is supported).\"},\"fulfillBasicOrder((address,uint256,uint256,address,address,address,uint256,uint256,uint8,uint256,uint256,bytes32,uint256,bytes32,bytes32,uint256,(uint256,address)[],bytes))\":{\"notice\":\"Fulfill an order offering an ERC20, ERC721, or ERC1155 item by         supplying Ether (or other native tokens), ERC20 tokens, an ERC721         item, or an ERC1155 item as consideration. Six permutations are         supported: Native token to ERC721, Native token to ERC1155, ERC20         to ERC721, ERC20 to ERC1155, ERC721 to ERC20, and ERC1155 to         ERC20 (with native tokens supplied as msg.value). For an order to         be eligible for fulfillment via this method, it must contain a         single offer item (though that item may have a greater amount if         the item is not an ERC721). An arbitrary number of \\\"additional         recipients\\\" may also be supplied which will each receive native         tokens or ERC20 items from the fulfiller as consideration. Refer         to the documentation for a more comprehensive summary of how to         utilize this method and what orders are compatible with it.\"},\"fulfillOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes),bytes32)\":{\"notice\":\"Fulfill an order with an arbitrary number of items for offer and         consideration. Note that this function does not support         criteria-based orders or partial filling of orders (though         filling the remainder of a partially-filled order is supported).\"},\"getNonce(address)\":{\"notice\":\"Retrieve the current nonce for a given offerer.\"},\"getOrderHash((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256))\":{\"notice\":\"Retrieve the order hash for a given order.\"},\"getOrderStatus(bytes32)\":{\"notice\":\"Retrieve the status of a given order by hash, including whether         the order has been cancelled or validated and the fraction of the         order that has been filled.\"},\"incrementNonce()\":{\"notice\":\"Cancel all orders from a given offerer with a given zone in bulk         by incrementing a nonce. Note that only the offerer may increment         the nonce.\"},\"information()\":{\"notice\":\"Retrieve configuration information for this contract.\"},\"matchAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],((uint256,uint256)[],(uint256,uint256)[])[])\":{\"notice\":\"Match an arbitrary number of full or partial orders, each with an         arbitrary number of items for offer and consideration, supplying         criteria resolvers containing specific token identifiers and         associated proofs as well as fulfillments allocating offer         components to consideration components.\"},\"matchOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],((uint256,uint256)[],(uint256,uint256)[])[])\":{\"notice\":\"Match an arbitrary number of orders, each with an arbitrary         number of items for offer and consideration along with a set of         fulfillments allocating offer components to consideration         components. Note that this function does not support         criteria-based or partial filling of orders (though filling the         remainder of a partially-filled order is supported).\"},\"name()\":{\"notice\":\"Retrieve the name of this contract.\"},\"validate(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[])\":{\"notice\":\"Validate an arbitrary number of orders, thereby registering their         signatures as valid and allowing the fulfiller to skip signature         verification on fulfillment. Note that validated orders may still         be unfulfillable due to invalid item amounts or other factors;         callers should determine whether validated orders are fulfillable         by simulating the fulfillment call prior to execution. Also note         that anyone can validate a signed order, but only the offerer can         validate an order without supplying a signature.\"}},\"notice\":\"Seaport is a generalized ETH/ERC20/ERC721/ERC1155 marketplace. It         minimizes external calls to the greatest extent possible and provides         lightweight methods for common routes as well as more flexible         methods for composing advanced orders or groups of orders. Each order         contains an arbitrary number of items that may be spent (the \\\"offer\\\")         along with an arbitrary number of items that must be received back by         the indicated recipients (the \\\"consideration\\\").\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/Seaport.sol\":\"Seaport\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/Consideration.sol\":{\"keccak256\":\"0x72dedf490027409ade0f9db83dbff651f8cd4364c5fa1e42b8836444318f0cc7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3498b91c5bbc6092b1a89716a39fb624abeb6054d69856fe2e4d3842345aaef5\",\"dweb:/ipfs/QmZMSFfbtTLE4JWwdCaLxDS5VWWrMpYxzhHSPUcesMLUBD\"]},\"seaport/contracts/Seaport.sol\":{\"keccak256\":\"0x93da15126639c102ba70c20622d2e0134ca43b3e736a361290a51b51fc9a3021\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://319dff6d6e837bf1bac46383665f5f40ea4722694948b3d1405f1abe559112b3\",\"dweb:/ipfs/QmV1h5NqyKZt8ixgLq7ZhRFacUdsZ9XMgTDc5k4c62EaHa\"]},\"seaport/contracts/conduit/lib/ConduitEnums.sol\":{\"keccak256\":\"0x3a9ecf77688f97d1b595be27b49fca3eac93e3f91160d79f0f0063c250fd8aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d596c21d5c7c7b47ca14908cbd7add9c06898c500cf47988446f843c0b28cf96\",\"dweb:/ipfs/QmZf12Y7XHwEWvjd2ZbaUFz4NXsWPFGJF6vNg1HECvXV5m\"]},\"seaport/contracts/conduit/lib/ConduitStructs.sol\":{\"keccak256\":\"0xfd2cec45327e9a6ebc02d7efb9daa1cfdabb26eb803e4b2e9b5e82340d92cfed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea7fa97afdf70ab91449e54f9a4f40e9da16292ab87b86e7e975e6d92f573dc3\",\"dweb:/ipfs/QmaRvo6P8YYPYNgcuP4HVV2wqDuVSB1t6AwMe8jMbcQY3F\"]},\"seaport/contracts/interfaces/AbridgedTokenInterfaces.sol\":{\"keccak256\":\"0x6b4937a65838012d673de632665960836d9b81ce4d90142c02797e4d17361838\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe115b5e3b76cab664b07b242b37221adb36606b114a212798809106c1e0faab\",\"dweb:/ipfs/QmQvEoKtVyYQC5pPoJogvT5yMtumoCffH1Q8BCGLfGzVAM\"]},\"seaport/contracts/interfaces/AmountDerivationErrors.sol\":{\"keccak256\":\"0x1cba27c1c5510ec735e47d5b8f98b50bcf5f96884f8b1a6367987fff7cdc2735\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3394e76c89cd4e558a5a25a8b71e31372ad690f62c45512be98b01cd40948d1b\",\"dweb:/ipfs/QmW2KQeNm7dRXHxYY5SzBVpZxFQ59CkNJqW2LXPdJx3hZX\"]},\"seaport/contracts/interfaces/ConduitControllerInterface.sol\":{\"keccak256\":\"0x86b7ceb6ff7ce653fa7d0d79eeb8b96ec57eedd35f8c87e9838dde6c23f317bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://453fa0365834a50956e513d306371bfb7019124150bf9afd1699599fe6f7852c\",\"dweb:/ipfs/QmXiqKzGdj2A4TsuHtFLTgdLPRFwasbWWibNBRP5cikJod\"]},\"seaport/contracts/interfaces/ConduitInterface.sol\":{\"keccak256\":\"0x6aec074141c2a66f0c06ff006b6b61f5ee3f988c1cee26a51f91e1616af194d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4cda8ec77a8261f3270087331f72443b5dcb686e93297fe9641b757dff108ae1\",\"dweb:/ipfs/QmPuWHXQWuhTUfbe3yB842nS1jRM2iLyJ16rVkDSyLCD2L\"]},\"seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"keccak256\":\"0xf0d0eda6b47217d0e7c2862fdd5d7857cb828f9e0fc52e2c37c6d2b454832a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://374d19e0d9e5ce76e10dce8bada5ee9d1adcd54898c0cba9099d0dd72a5bf996\",\"dweb:/ipfs/QmS49qk49jmkPuMzLbbop5s7eJxbfRzKokQXB2QJjfVPHT\"]},\"seaport/contracts/interfaces/ConsiderationInterface.sol\":{\"keccak256\":\"0x67b79ae6f30efab80173b0dda195b573790b9c470c498b257e7a976c18fefca9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86190d6402279941ce2a139432969de2fe76c31c3751c33690eb2f2a172c2898\",\"dweb:/ipfs/QmW3hqAgXbmQuxKXkfQ5NGK1U1uuoxnzzwEhBM6VKFZYo1\"]},\"seaport/contracts/interfaces/CriteriaResolutionErrors.sol\":{\"keccak256\":\"0x3c63de591ecf89478714308c38953d72b88c7034f9b4ae4605f356a121df969e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a538b46b3ae2bb4331fed4f2936caece352db92694c69255e0a27dcf69243f79\",\"dweb:/ipfs/QmNr2LKznf9kCHL4di5GrjYto1RTD9JgKJv13WT6yqrgNn\"]},\"seaport/contracts/interfaces/EIP1271Interface.sol\":{\"keccak256\":\"0x3c60fdc09b2bc7cb3a615ca82ee1bd776813e75883515efd1e794fe8a3228f29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b17dda7065bffe0ba89c26d413e89c7e7e733f5e74cefba56799ebb57e60908\",\"dweb:/ipfs/QmT2DJBP4WvXYKyFusiSeJ7kbo4UVor4yKCkwEF237CqxZ\"]},\"seaport/contracts/interfaces/FulfillmentApplicationErrors.sol\":{\"keccak256\":\"0x85d34353dec017698bffe508a2cd37970ac35684e9319ca5ce1ec41228313cde\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://304c4f89b90b212a7fed6e29c7f11575c20992845981074e42b6890f86a42808\",\"dweb:/ipfs/QmP1g5tEi8YLbAbFDXGc6Rp37zuQXousunm38bvQbdanu5\"]},\"seaport/contracts/interfaces/ReentrancyErrors.sol\":{\"keccak256\":\"0x9ab27fa5a68f55ad89072ea213c6f12979ae469041ca473d81f800dbdbe9bb48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0cc617da7254d981fd5970d16acc2a6f6fe2fe0bc3e2d0976f7c01a4893430ec\",\"dweb:/ipfs/QmbhqKxfhrfPAjp99LVspxopQG7Mb9L9xdSa38ujCxmvTJ\"]},\"seaport/contracts/interfaces/SignatureVerificationErrors.sol\":{\"keccak256\":\"0xb86f318b159c16087372e12b1e2c37c15fb745be1566bb03812e3814c15fb605\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff051f5cb44654096126c9ec72d1aaebf568e87a01da6200e969e673b8c3e4bf\",\"dweb:/ipfs/QmaPKx8ikPxRzYRubNraLhPdnGmXunZ6WGhzaed18oBi66\"]},\"seaport/contracts/interfaces/TokenTransferrerErrors.sol\":{\"keccak256\":\"0x128fbb0236de5e52c34876c61148e04c12289e92d6bce2270760905617a01b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ed114ea7bf9ce55065d853f0f705eb82cc840672e0c2ab899691ab5703d2e98\",\"dweb:/ipfs/QmXQsajetWBmU7tzjoFm5wyajRKrMMEGXFF7ZQxaH7ZceG\"]},\"seaport/contracts/interfaces/ZoneInteractionErrors.sol\":{\"keccak256\":\"0x7cc23125af35b317beac057bfbe34291f6b2f34f37f7d698f5bc7373b09b4480\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c56917ceed46a2e3029b7daf5331cd6e3a10e3174287c9d2a5cccb5fb6e1568\",\"dweb:/ipfs/QmRdPmvPm2F2hXq4QwXZyavjMis1RmY5XLMZLzM45Cv9hT\"]},\"seaport/contracts/interfaces/ZoneInterface.sol\":{\"keccak256\":\"0x5c5d749fd3de01bd89acf7cb08f11d041b3a600819e18b8a51cebd65285ced46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43788f6ae192a2063f185ccb87853576e4d90ea8f1df19d1334d2e9be62333f3\",\"dweb:/ipfs/QmXSXFPhSNsTv4kvBZbCHwzakoAxvvnvZPSmw7CXg2j1vu\"]},\"seaport/contracts/lib/AmountDeriver.sol\":{\"keccak256\":\"0x2f02fe1e7b22f5ca600416d37f6d3829b10dae8b752ea497ffc2a6a5420ad920\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://978d3a8d7aa0de2d32fde5d25b16f0d43d78d68e8ecefb2d1a80853a10eea806\",\"dweb:/ipfs/Qmam1XT3P6RPYH5tMfNyfm5i5jDrMWYqCArMar9FpDW6ji\"]},\"seaport/contracts/lib/Assertions.sol\":{\"keccak256\":\"0xb2ef1d902d0eefb7aaffc720354dd0352f95442178091f059d31ebe096894586\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6f121104190dd5e5a4e98fcbf024ad300c4b9704768fdb49d81f270c22a8067\",\"dweb:/ipfs/QmWKzhVq1itpqTfeiCELGb1jDcTnBdCwroHgGMzqDuYWN8\"]},\"seaport/contracts/lib/BasicOrderFulfiller.sol\":{\"keccak256\":\"0x6262ae2f6c6a9d6a0da8457160683db0d9868b2caf640b21a1896fece7ec677f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86d3aa0f9ef2940a1c0e12ebe9ae53e4945d488285b14ff930cf311fef4c2c69\",\"dweb:/ipfs/QmRugwrXvDJFXfoWNzSzk4EUQCve4hByRUnfJiusgQGLXb\"]},\"seaport/contracts/lib/ConsiderationBase.sol\":{\"keccak256\":\"0x1015a0bb6fff27278ceec2f76cbf0c775bfb3e8d03cafe8d3549e252e9563ba2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f7d3b48069268df59a77293a7cdc232df35c5b1c8b1974b422a850bedb875f6\",\"dweb:/ipfs/QmSMMnXqsUEWuC1u7BF6coTXK63BXaQYvWqX69doaatKw8\"]},\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]},\"seaport/contracts/lib/CriteriaResolution.sol\":{\"keccak256\":\"0xf65cfc83ff0764d82039c959a9b3bbd09069228882467ab491de64fbcb318a89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5d8cc2ab576be995caf53711b41872f07a8e80d86402380053db8d886924ea06\",\"dweb:/ipfs/QmWi4cS9b1UHX6PJvu59kLEdhp3Gi43crujzfgHNFCc831\"]},\"seaport/contracts/lib/Executor.sol\":{\"keccak256\":\"0x72b4591bebbeb723ad41e9dabd931e4a969a8cff3e6a9b1a82dd2299391834e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3030a05a77aa4375961371f8508327d0a7f102c9b52319a0263a15a498155d70\",\"dweb:/ipfs/QmWr6WFUwJsszCBvMhLUPAz4tz3jTbJzABQwtfRUC5cKzv\"]},\"seaport/contracts/lib/FulfillmentApplier.sol\":{\"keccak256\":\"0x8caa24084d5ee58e8d858bef5cf933cf41d4c94b31b74d3220af0fa73f4ac888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45bdb2fd064cd05b99a980011898bf07c38c847bb2e0d723363d5552a5ccbc87\",\"dweb:/ipfs/QmccTMHU8oe9NdWkJdiEkrRxbL2dw87swZLYT7Tdfr6M8B\"]},\"seaport/contracts/lib/GettersAndDerivers.sol\":{\"keccak256\":\"0xb9d0cf2a84567b6b70e1ddd9e3450dddf8139e5396bcac24c42f46db16228efa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99767431817fd6b157bc199784ca3f3bc2cf024a332ae8e2a5eb7e3db0f2b47d\",\"dweb:/ipfs/QmPWaJet2TPiWc7xEo7QqVpctaLvXPZFep8R8Vi4ZRzzCw\"]},\"seaport/contracts/lib/LowLevelHelpers.sol\":{\"keccak256\":\"0x83085de63b870cfb3940c68d96a40b2cf9afb7280c1afa3034d1c55c80444a94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9ba49a7318a517e836811dfc67989e9f14959a7cd55220853af6b6273309543\",\"dweb:/ipfs/QmUAQr4SReMunUvwBxKPdd8XLPy5GKMEEhPwpD32UYn3kx\"]},\"seaport/contracts/lib/NonceManager.sol\":{\"keccak256\":\"0xe8b6e40830e216912ce483e867151e84cc0b290404220e1ed5fbb69821161f8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4ef49cbc0b5385b64c1f8c9d5cf572dff35ec291970714ef11520de2c01ab9c\",\"dweb:/ipfs/QmfJoNCtAHUYsidmUaiMBP8wMzUYCtg33G8nUqyME5AftL\"]},\"seaport/contracts/lib/OrderCombiner.sol\":{\"keccak256\":\"0x323df1b76c038a4101c9e1627a773ccf85f886678ac486a99b0f64336b5b6023\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28395f3ff6f8cf7419e2050edfaf10996062a500b9942ad49eb0fe3bee3e4ca2\",\"dweb:/ipfs/QmRwwjsTRAhhvpaXJGt98pHghRZbCgzWPbUT29esmcU86h\"]},\"seaport/contracts/lib/OrderFulfiller.sol\":{\"keccak256\":\"0x6710eeff2b52320a330b7b2fbc38d18f58ef1ab8509d818ed8469e8859ef1969\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6991481f10696e4f381c95adc510cfba3d5c973c65eb15b49643282d4059972\",\"dweb:/ipfs/QmPuVVnTxkaY9opZmxsdJpPEogpQccZXG378NFZ6tcJjVm\"]},\"seaport/contracts/lib/OrderValidator.sol\":{\"keccak256\":\"0xeb3e16175a6545c6f320eecc2c2d2e33cf27f30be2e12ae86ad67429b0e14061\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924da093b3d43f0603a8615b6ad2b575d4efe694f0381e3963461159c13fc1ba\",\"dweb:/ipfs/QmVwuoYmZU3BZx8LVfeDdd51geQyS745KLPKx7LuNQiPUz\"]},\"seaport/contracts/lib/ReentrancyGuard.sol\":{\"keccak256\":\"0xec219fb657ce8400835d8d1ff87716247c5fdde51bca31fddf19415abad773db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eca390f7b8fbccc703ad22edd4f35fa896de59912f21d9471d51ef83b961d3c5\",\"dweb:/ipfs/QmXyxcfzgD4SaTtgqGjUjxK4tb76NiPcooMkL9c11yhm2L\"]},\"seaport/contracts/lib/SignatureVerification.sol\":{\"keccak256\":\"0x5833c9bf1ab9c8fbfeb723ff500722e269a1c05b0fe14d8a837e40c88138f4fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0af100e71a40bc871019c7ebd5c786007deacbf58ee98bce204c43811c726dd\",\"dweb:/ipfs/QmSjdy3wSypHCxCdFGZxLFCCRJf7cfVn6MM75KUbj2y3jN\"]},\"seaport/contracts/lib/TokenTransferrer.sol\":{\"keccak256\":\"0xe392cea22226f1b55e35b0295d0cfa156c7764f2509fa416f3946ca748c9605a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddf9b20512bc36f5bbe25f56729aa31a139b1560dfc14beb42d5d09ae8d44b48\",\"dweb:/ipfs/QmSN9GdbtqBcobRSd8kSCxn2GScZhiiAbuxk5djmkatKRD\"]},\"seaport/contracts/lib/TokenTransferrerConstants.sol\":{\"keccak256\":\"0x5ecc368039fd81cc27788a664538ab63f1b5deb9caa8839d9499fadfd1d465cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0e821e5fd5a31cdcaaf334203dd58d80489c1aed2fd2a91a9683a9e342c9653\",\"dweb:/ipfs/QmRKkHF5aLKJ8KrMmMoV9UsCtgtrCQYgeptGK4jKVGM68j\"]},\"seaport/contracts/lib/Verifiers.sol\":{\"keccak256\":\"0x69755b486d816164270d1b37c187ea7a3ce262e9d31153a88279fe6d8cb76cd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://16dc060d4321a17cdcbf1125b076bb9bbf75086a57d7c6eeca7e9845fcd6d76e\",\"dweb:/ipfs/QmSnF21ffxHnfiYRVVRopn2EcJagghQZTTcdDvMoiR9fsM\"]},\"seaport/contracts/lib/ZoneInteraction.sol\":{\"keccak256\":\"0xbabb8f6c0659327e9ae9711d63c0d81f49789c32d1987170d772dac5bd9c0b48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ee495283ba0709d674062d80a6bcba9f54eed8d132283e500980fa63ac5dc217\",\"dweb:/ipfs/QmWQegpmWwk6dNxBpmXpVmPAq6LtQhDKUja9ewHeMsA1rM\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/conduit/Conduit.sol": {
        "Conduit": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BadReturnValueFromERC20OnTransfer",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ChannelClosed",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "identifiers",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "ERC1155BatchTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "Invalid1155BatchTransferEncoding",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidController",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidERC721TransferAmount",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidItemType",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingItemAmount",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "NoContract",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "identifier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenTransferGenericFailure",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "channel",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "open",
                  "type": "bool"
                }
              ],
              "name": "ChannelUpdated",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "enum ConduitItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "from",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "to",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct ConduitTransfer[]",
                  "name": "transfers",
                  "type": "tuple[]"
                }
              ],
              "name": "execute",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "magicValue",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "from",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "to",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256[]",
                      "name": "ids",
                      "type": "uint256[]"
                    },
                    {
                      "internalType": "uint256[]",
                      "name": "amounts",
                      "type": "uint256[]"
                    }
                  ],
                  "internalType": "struct ConduitBatch1155Transfer[]",
                  "name": "batchTransfers",
                  "type": "tuple[]"
                }
              ],
              "name": "executeBatch1155",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "magicValue",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "enum ConduitItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "from",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "to",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct ConduitTransfer[]",
                  "name": "standardTransfers",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "from",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "to",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256[]",
                      "name": "ids",
                      "type": "uint256[]"
                    },
                    {
                      "internalType": "uint256[]",
                      "name": "amounts",
                      "type": "uint256[]"
                    }
                  ],
                  "internalType": "struct ConduitBatch1155Transfer[]",
                  "name": "batchTransfers",
                  "type": "tuple[]"
                }
              ],
              "name": "executeWithBatch1155",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "magicValue",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "channel",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "isOpen",
                  "type": "bool"
                }
              ],
              "name": "updateChannel",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_477": {
                  "entryPoint": null,
                  "id": 477,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "60a060405234801561001057600080fd5b5033608052608051610a8261003060003960006102100152610a826000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634ce34aa214610051578063899e104c146100815780638df25d9214610094578063c4e8fcb5146100a7575b600080fd5b61006461005f36600461085c565b6100bc565b6040516001600160e01b0319909116815260200160405180910390f35b61006461008f3660046108e3565b610136565b6100646100a236600461094f565b6101bc565b6100ba6100b53660046109a1565b610205565b005b3360009081526020819052604081205460ff166100ec57604051636821b7df60e01b815260040160405180910390fd5b8160005b81811015610125573685858381811061010b5761010b6109dd565b905060c00201905061011c816102af565b506001016100f0565b50632671a55160e11b949350505050565b3360009081526020819052604081205460ff1661016657604051636821b7df60e01b815260040160405180910390fd5b8360005b8181101561019f5736878783818110610185576101856109dd565b905060c002019050610196816102af565b5060010161016a565b506101aa848461041b565b50632267841360e21b95945050505050565b3360009081526020819052604081205460ff166101ec57604051636821b7df60e01b815260040160405180910390fd5b6101f6838361041b565b506346f92ec960e11b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461024e576040516336abb4df60e11b815260040160405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527fae63067d43ac07563b7eb8db6595635fc77f1578a2a5ea06ba91b63e2afa37e2910160405180910390a15050565b60016102be6020830183610a09565b60038111156102cf576102cf6109f3565b03610314576103116102e76040830160208401610a31565b6102f76060840160408501610a31565b6103076080850160608601610a31565b8460a00135610565565b50565b60026103236020830183610a09565b6003811115610334576103346109f3565b0361039b578060a0013560011461035e5760405163efcc00b160e01b815260040160405180910390fd5b6103116103716040830160208401610a31565b6103816060840160408501610a31565b6103916080850160608601610a31565b846080013561066b565b60036103aa6020830183610a09565b60038111156103bb576103bb6109f3565b03610402576103116103d36040830160208401610a31565b6103e36060840160408501610a31565b6103f36080850160608601610a31565b84608001358560a0013561072c565b604051631e4cbc7f60e21b815260040160405180910390fd5b808280631759616b60e11b60205260005b83811015610558578235820160208401935060806020820160243760a0810135604081026040018060a00160a452600081610104015260408202610104018160a0850160c4376020830260c00191508160808501351460a0606086013514168285013584141615925082156104ac57633ae8821360e21b60005260046000fd5b923592833b6104ca57632f8aeb3960e11b6000528360045260246000fd5b6000808260206000885af1925082610549573d156105245760203d04915060208104826003028184111561050c57818403600302610200838002868002030401015b5a602082011015610521573d6000803e3d6000fd5b50505b6357e222f160e11b600052836004526080604452608451602001608452602481016000fd5b5050505060018101905061042c565b5050505060806040525050565b6040516323b872dd60e01b600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d1515811661065b5780873b15151661065b57806106465781610625573d156105ff5760203d046020840481600302818311156105e657818303600302610200838002858002030401015b5a6020820110156105fb573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005286600452856024528460445260006064528360845260a46000fd5b639889192360e01b6000528660045285602452846044528360645260846000fd5b632f8aeb3960e11b6000528660045260246000fd5b5050604052505060006060525050565b833b61068657632f8aeb3960e11b6000528360045260246000fd5b6040516323b872dd60e01b6000528360045282602452816044526000806064600080895af18061071d573d156106f75760203d046020830481600302818311156106de57818303600302610200838002858002030401015b5a6020820110156106f3573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b61074757632f8aeb3960e11b6000528460045260246000fd5b60405160805160a05160c051637921219560e11b6000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af1806107f4573d156107cf5760203d046020860481600302818311156107b657818303600302610200838002858002030401015b5a6020820110156107cb573d6000803e3d6000fd5b5050505b63f486bc8760e01b600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b60008083601f84011261082257600080fd5b50813567ffffffffffffffff81111561083a57600080fd5b60208301915083602060c08302850101111561085557600080fd5b9250929050565b6000806020838503121561086f57600080fd5b823567ffffffffffffffff81111561088657600080fd5b61089285828601610810565b90969095509350505050565b60008083601f8401126108b057600080fd5b50813567ffffffffffffffff8111156108c857600080fd5b6020830191508360208260051b850101111561085557600080fd5b600080600080604085870312156108f957600080fd5b843567ffffffffffffffff8082111561091157600080fd5b61091d88838901610810565b9096509450602087013591508082111561093657600080fd5b506109438782880161089e565b95989497509550505050565b6000806020838503121561096257600080fd5b823567ffffffffffffffff81111561097957600080fd5b6108928582860161089e565b80356001600160a01b038116811461099c57600080fd5b919050565b600080604083850312156109b457600080fd5b6109bd83610985565b9150602083013580151581146109d257600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060208284031215610a1b57600080fd5b813560048110610a2a57600080fd5b9392505050565b600060208284031215610a4357600080fd5b610a2a8261098556fea2646970667358221220154e5730b5c069ee38eba91c086614ce04b3f3b36831b234f43b61e7a2786e1e64736f6c634300080d0033",
              "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLER PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH2 0xA82 PUSH2 0x30 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x210 ADD MSTORE PUSH2 0xA82 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 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4CE34AA2 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x899E104C EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x8DF25D92 EQ PUSH2 0x94 JUMPI DUP1 PUSH4 0xC4E8FCB5 EQ PUSH2 0xA7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x85C JUMP JUMPDEST PUSH2 0xBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0x8F CALLDATASIZE PUSH1 0x4 PUSH2 0x8E3 JUMP JUMPDEST PUSH2 0x136 JUMP JUMPDEST PUSH2 0x64 PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x94F JUMP JUMPDEST PUSH2 0x1BC JUMP JUMPDEST PUSH2 0xBA PUSH2 0xB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x9A1 JUMP JUMPDEST PUSH2 0x205 JUMP JUMPDEST STOP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xEC JUMPI PUSH1 0x40 MLOAD PUSH4 0x6821B7DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x125 JUMPI CALLDATASIZE DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x10B JUMPI PUSH2 0x10B PUSH2 0x9DD JUMP JUMPDEST SWAP1 POP PUSH1 0xC0 MUL ADD SWAP1 POP PUSH2 0x11C DUP2 PUSH2 0x2AF JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xF0 JUMP JUMPDEST POP PUSH4 0x2671A551 PUSH1 0xE1 SHL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x166 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6821B7DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x19F JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x185 JUMPI PUSH2 0x185 PUSH2 0x9DD JUMP JUMPDEST SWAP1 POP PUSH1 0xC0 MUL ADD SWAP1 POP PUSH2 0x196 DUP2 PUSH2 0x2AF JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x16A JUMP JUMPDEST POP PUSH2 0x1AA DUP5 DUP5 PUSH2 0x41B JUMP JUMPDEST POP PUSH4 0x22678413 PUSH1 0xE2 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1EC JUMPI PUSH1 0x40 MLOAD PUSH4 0x6821B7DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F6 DUP4 DUP4 PUSH2 0x41B JUMP JUMPDEST POP PUSH4 0x46F92EC9 PUSH1 0xE1 SHL SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x24E JUMPI PUSH1 0x40 MLOAD PUSH4 0x36ABB4DF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE PUSH32 0xAE63067D43AC07563B7EB8DB6595635FC77F1578A2A5EA06BA91B63E2AFA37E2 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2BE PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2CF JUMPI PUSH2 0x2CF PUSH2 0x9F3 JUMP JUMPDEST SUB PUSH2 0x314 JUMPI PUSH2 0x311 PUSH2 0x2E7 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x2F7 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x307 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xA31 JUMP JUMPDEST DUP5 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x565 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 PUSH2 0x323 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x334 JUMPI PUSH2 0x334 PUSH2 0x9F3 JUMP JUMPDEST SUB PUSH2 0x39B JUMPI DUP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH1 0x1 EQ PUSH2 0x35E JUMPI PUSH1 0x40 MLOAD PUSH4 0xEFCC00B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x311 PUSH2 0x371 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x381 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x391 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xA31 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x66B JUMP JUMPDEST PUSH1 0x3 PUSH2 0x3AA PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3BB JUMPI PUSH2 0x3BB PUSH2 0x9F3 JUMP JUMPDEST SUB PUSH2 0x402 JUMPI PUSH2 0x311 PUSH2 0x3D3 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x3E3 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x3F3 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xA31 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD DUP6 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x72C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1E4CBC7F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 DUP1 PUSH4 0x1759616B PUSH1 0xE1 SHL PUSH1 0x20 MSTORE PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x558 JUMPI DUP3 CALLDATALOAD DUP3 ADD PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x80 PUSH1 0x20 DUP3 ADD PUSH1 0x24 CALLDATACOPY PUSH1 0xA0 DUP2 ADD CALLDATALOAD PUSH1 0x40 DUP2 MUL PUSH1 0x40 ADD DUP1 PUSH1 0xA0 ADD PUSH1 0xA4 MSTORE PUSH1 0x0 DUP2 PUSH2 0x104 ADD MSTORE PUSH1 0x40 DUP3 MUL PUSH2 0x104 ADD DUP2 PUSH1 0xA0 DUP6 ADD PUSH1 0xC4 CALLDATACOPY PUSH1 0x20 DUP4 MUL PUSH1 0xC0 ADD SWAP2 POP DUP2 PUSH1 0x80 DUP6 ADD CALLDATALOAD EQ PUSH1 0xA0 PUSH1 0x60 DUP7 ADD CALLDATALOAD EQ AND DUP3 DUP6 ADD CALLDATALOAD DUP5 EQ AND ISZERO SWAP3 POP DUP3 ISZERO PUSH2 0x4AC JUMPI PUSH4 0x3AE88213 PUSH1 0xE2 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST SWAP3 CALLDATALOAD SWAP3 DUP4 EXTCODESIZE PUSH2 0x4CA JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x20 PUSH1 0x0 DUP9 GAS CALL SWAP3 POP DUP3 PUSH2 0x549 JUMPI RETURNDATASIZE ISZERO PUSH2 0x524 JUMPI PUSH1 0x20 RETURNDATASIZE DIV SWAP2 POP PUSH1 0x20 DUP2 DIV DUP3 PUSH1 0x3 MUL DUP2 DUP5 GT ISZERO PUSH2 0x50C JUMPI DUP2 DUP5 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP7 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x521 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMPDEST PUSH4 0x57E222F1 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x80 PUSH1 0x44 MSTORE PUSH1 0x84 MLOAD PUSH1 0x20 ADD PUSH1 0x84 MSTORE PUSH1 0x24 DUP2 ADD PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x42C JUMP JUMPDEST POP POP POP POP PUSH1 0x80 PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x65B JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x65B JUMPI DUP1 PUSH2 0x646 JUMPI DUP2 PUSH2 0x625 JUMPI RETURNDATASIZE ISZERO PUSH2 0x5FF JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x5E6 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x5FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x98891923 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x686 JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x71D JUMPI RETURNDATASIZE ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x6DE JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x6F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x747 JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH4 0x79212195 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0x7F4 JUMPI RETURNDATASIZE ISZERO PUSH2 0x7CF JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x7B6 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x7CB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x83A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0xC0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x86F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x892 DUP6 DUP3 DUP7 ADD PUSH2 0x810 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x8B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8C8 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 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x911 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x91D DUP9 DUP4 DUP10 ADD PUSH2 0x810 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x943 DUP8 DUP3 DUP9 ADD PUSH2 0x89E JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x962 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x979 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x892 DUP6 DUP3 DUP7 ADD PUSH2 0x89E JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x99C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9BD DUP4 PUSH2 0x985 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x9D2 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 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0xA2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA2A DUP3 PUSH2 0x985 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ISZERO 0x4E JUMPI ADDRESS 0xB5 0xC0 PUSH10 0xEE38EBA91C086614CE04 0xB3 RETURN 0xB3 PUSH9 0x31B234F43B61E7A278 PUSH15 0x1E64736F6C634300080D0033000000 ",
              "sourceMap": "1040:6245:2:-:0;;;1403:102;;;;;;;;;-1:-1:-1;1488:10:2;1474:24;;1040:6245;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_performERC1155BatchTransfers_7980": {
                  "entryPoint": 1051,
                  "id": 7980,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@_performERC1155Transfer_7970": {
                  "entryPoint": 1836,
                  "id": 7970,
                  "parameterSlots": 5,
                  "returnSlots": 0
                },
                "@_performERC20Transfer_7940": {
                  "entryPoint": 1381,
                  "id": 7940,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_performERC721Transfer_7954": {
                  "entryPoint": 1643,
                  "id": 7954,
                  "parameterSlots": 4,
                  "returnSlots": 0
                },
                "@_transfer_738": {
                  "entryPoint": 687,
                  "id": 738,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@executeBatch1155_566": {
                  "entryPoint": 444,
                  "id": 566,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@executeWithBatch1155_631": {
                  "entryPoint": 310,
                  "id": 631,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "@execute_534": {
                  "entryPoint": 188,
                  "id": 534,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@updateChannel_661": {
                  "entryPoint": 517,
                  "id": 661,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 2437,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_array_struct_ConduitBatch1155Transfer_calldata_dyn_calldata": {
                  "entryPoint": 2206,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_array_struct_ConduitTransfer_calldata_dyn_calldata": {
                  "entryPoint": 2064,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 2609,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_bool": {
                  "entryPoint": 2465,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_array$_t_struct$_ConduitBatch1155Transfer_$1482_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 2383,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_array$_t_struct$_ConduitTransfer_$1469_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 2140,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_array$_t_struct$_ConduitTransfer_$1469_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_ConduitBatch1155Transfer_$1482_calldata_ptr_$dyn_calldata_ptr": {
                  "entryPoint": 2275,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 4
                },
                "abi_decode_tuple_t_enum$_ConduitItemType_$1451": {
                  "entryPoint": 2569,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x21": {
                  "entryPoint": 2547,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 2525,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:4511:45",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:45",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "122:286:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "171:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "180:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "183:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "173:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "173:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "173:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "150:6:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "158:4:45",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "146:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "146:17:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "165:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "142:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "142:27:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "135:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "135:35:45"
                              },
                              "nodeType": "YulIf",
                              "src": "132:55:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "196:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "219:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "206:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "206:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "196:6:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "269:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "278:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "281:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "271:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "271:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "271:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "241:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "249:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "238:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "238:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "235:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "294:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "310:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "318:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "306:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "306:17:45"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "294:8:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "386:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "395:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "398:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "388:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "388:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "388:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "346:6:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "358:6:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "366:4:45",
                                                "type": "",
                                                "value": "0xc0"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "354:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "354:17:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "342:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "342:30:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "374:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "338:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "338:41:45"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "381:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "335:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "335:50:45"
                              },
                              "nodeType": "YulIf",
                              "src": "332:70:45"
                            }
                          ]
                        },
                        "name": "abi_decode_array_struct_ConduitTransfer_calldata_dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "85:6:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "93:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "101:8:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "111:6:45",
                            "type": ""
                          }
                        ],
                        "src": "14:394:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "553:356:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "599:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "608:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "611:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "601:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "601:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "601:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "574:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "583:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "570:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "570:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "595:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "566:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "566:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "563:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "624:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "651:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "638:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "638:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "628:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "704:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "713:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "716:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "706:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "706:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "706:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "676:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "684:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "673:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "673:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "670:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "729:120:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "821:9:45"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "832:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "817:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "817:22:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "841:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_ConduitTransfer_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "755:61:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "755:94:45"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "733:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "743:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "858:18:45",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "868:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "858:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "885:18:45",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "895:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "885:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_ConduitTransfer_$1469_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "511:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "522:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "534:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "542:6:45",
                            "type": ""
                          }
                        ],
                        "src": "413:496:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1013:103:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1023:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1035:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1046:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1031:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1031:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1023:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1065:9:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "1080:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1092:3:45",
                                            "type": "",
                                            "value": "224"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1097:10:45",
                                            "type": "",
                                            "value": "0xffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "1088:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1088:20:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1076:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1076:33:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1058:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1058:52:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1058:52:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "982:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "993:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1004:4:45",
                            "type": ""
                          }
                        ],
                        "src": "914:202:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1238:283:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1287:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1296:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1299:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1289:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1289:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1289:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1266:6:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1274:4:45",
                                            "type": "",
                                            "value": "0x1f"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1262:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1262:17:45"
                                      },
                                      {
                                        "name": "end",
                                        "nodeType": "YulIdentifier",
                                        "src": "1281:3:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "slt",
                                      "nodeType": "YulIdentifier",
                                      "src": "1258:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1258:27:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1251:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1251:35:45"
                              },
                              "nodeType": "YulIf",
                              "src": "1248:55:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1312:30:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1335:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1322:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1322:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "1312:6:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1385:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1394:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1397:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1387:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1387:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1387:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1357:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1365:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1354:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1354:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "1351:50:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1410:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1426:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1434:4:45",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1422:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1422:17:45"
                              },
                              "variableNames": [
                                {
                                  "name": "arrayPos",
                                  "nodeType": "YulIdentifier",
                                  "src": "1410:8:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1499:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1508:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1511:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1501:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1501:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1501:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "1462:6:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1474:1:45",
                                                "type": "",
                                                "value": "5"
                                              },
                                              {
                                                "name": "length",
                                                "nodeType": "YulIdentifier",
                                                "src": "1477:6:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1470:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1470:14:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "1458:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1458:27:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1487:4:45",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1454:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1454:38:45"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "1494:3:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1451:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1451:47:45"
                              },
                              "nodeType": "YulIf",
                              "src": "1448:67:45"
                            }
                          ]
                        },
                        "name": "abi_decode_array_struct_ConduitBatch1155Transfer_calldata_dyn_calldata",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "1201:6:45",
                            "type": ""
                          },
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1209:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "arrayPos",
                            "nodeType": "YulTypedName",
                            "src": "1217:8:45",
                            "type": ""
                          },
                          {
                            "name": "length",
                            "nodeType": "YulTypedName",
                            "src": "1227:6:45",
                            "type": ""
                          }
                        ],
                        "src": "1121:400:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1762:673:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1808:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1817:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1820:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1810:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1810:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1810:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1783:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1792:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1779:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1779:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1804:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1775:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1775:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "1772:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1833:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1860:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1847:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1847:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "1837:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1879:28:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1889:18:45",
                                "type": "",
                                "value": "0xffffffffffffffff"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1883:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1934:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1943:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1946:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1936:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1936:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1936:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1922:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1930:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1919:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1919:14:45"
                              },
                              "nodeType": "YulIf",
                              "src": "1916:34:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1959:120:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2051:9:45"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2062:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2047:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2047:22:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2071:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_ConduitTransfer_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "1985:61:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1985:94:45"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1963:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "1973:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2088:18:45",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "2098:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2088:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2115:18:45",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "2125:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2115:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2142:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2175:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2186:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2171:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2171:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2158:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2158:32:45"
                              },
                              "variables": [
                                {
                                  "name": "offset_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2146:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2219:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2228:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2231:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2221:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2221:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2221:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2205:8:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2215:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2202:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2202:16:45"
                              },
                              "nodeType": "YulIf",
                              "src": "2199:36:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2244:131:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2345:9:45"
                                      },
                                      {
                                        "name": "offset_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "2356:8:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2341:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2341:24:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2367:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_ConduitBatch1155Transfer_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "2270:70:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2270:105:45"
                              },
                              "variables": [
                                {
                                  "name": "value2_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2248:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value3_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2258:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2384:18:45",
                              "value": {
                                "name": "value2_1",
                                "nodeType": "YulIdentifier",
                                "src": "2394:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "2384:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2411:18:45",
                              "value": {
                                "name": "value3_1",
                                "nodeType": "YulIdentifier",
                                "src": "2421:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value3",
                                  "nodeType": "YulIdentifier",
                                  "src": "2411:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_ConduitTransfer_$1469_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_ConduitBatch1155Transfer_$1482_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1704:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1715:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1727:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1735:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1743:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1751:6:45",
                            "type": ""
                          }
                        ],
                        "src": "1526:909:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2589:365:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2635:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2644:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2647:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2637:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2637:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2637:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2610:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2619:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2606:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2606:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2631:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2602:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2602:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "2599:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2660:37:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2687:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2674:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2674:23:45"
                              },
                              "variables": [
                                {
                                  "name": "offset",
                                  "nodeType": "YulTypedName",
                                  "src": "2664:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2740:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2749:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2752:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2742:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2742:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2742:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "2712:6:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2720:18:45",
                                    "type": "",
                                    "value": "0xffffffffffffffff"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2709:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2709:30:45"
                              },
                              "nodeType": "YulIf",
                              "src": "2706:50:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2765:129:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2866:9:45"
                                      },
                                      {
                                        "name": "offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "2877:6:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2862:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2862:22:45"
                                  },
                                  {
                                    "name": "dataEnd",
                                    "nodeType": "YulIdentifier",
                                    "src": "2886:7:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_array_struct_ConduitBatch1155Transfer_calldata_dyn_calldata",
                                  "nodeType": "YulIdentifier",
                                  "src": "2791:70:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2791:103:45"
                              },
                              "variables": [
                                {
                                  "name": "value0_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2769:8:45",
                                  "type": ""
                                },
                                {
                                  "name": "value1_1",
                                  "nodeType": "YulTypedName",
                                  "src": "2779:8:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2903:18:45",
                              "value": {
                                "name": "value0_1",
                                "nodeType": "YulIdentifier",
                                "src": "2913:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2903:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2930:18:45",
                              "value": {
                                "name": "value1_1",
                                "nodeType": "YulIdentifier",
                                "src": "2940:8:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2930:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_array$_t_struct$_ConduitBatch1155Transfer_$1482_calldata_ptr_$dyn_calldata_ptr",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2547:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2558:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2570:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2578:6:45",
                            "type": ""
                          }
                        ],
                        "src": "2440:514:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3008:124:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3018:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "3040:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3027:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3027:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "3018:5:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3110:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3119:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3122:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3112:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3112:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3112:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3069:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "3080:5:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3095:3:45",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "3100:1:45",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3091:3:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3091:11:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3104:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "3087:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3087:19:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "3076:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3076:31:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "3066:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3066:42:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3059:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3059:50:45"
                              },
                              "nodeType": "YulIf",
                              "src": "3056:70:45"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "2987:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "2998:5:45",
                            "type": ""
                          }
                        ],
                        "src": "2959:173:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3221:263:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3267:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3276:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3279:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3269:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3269:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3269:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "3242:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3251:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "3238:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3238:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3263:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3234:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3234:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "3231:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3292:39:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3321:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "3302:18:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3302:29:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "3292:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3340:45:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3370:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3381:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3366:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3366:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3353:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3353:32:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "3344:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3438:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3447:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3450:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "3440:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3440:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3440:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "3407:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "3428:5:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "3421:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3421:13:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "3414:6:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3414:21:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "3404:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3404:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "3397:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3397:40:45"
                              },
                              "nodeType": "YulIf",
                              "src": "3394:60:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3463:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "3473:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "3463:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3179:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "3190:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3202:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3210:6:45",
                            "type": ""
                          }
                        ],
                        "src": "3137:347:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3521:95:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3538:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3545:3:45",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3550:10:45",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "3541:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3541:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3531:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3531:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3531:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3578:1:45",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3581:4:45",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3571:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3571:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3571:15:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3602:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3605:4:45",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "3595:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3595:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3595:15:45"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "3489:127:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3744:161:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3754:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3766:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3777:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3762:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3762:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3754:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3796:9:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "3811:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3827:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3832:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "3823:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3823:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3836:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "3819:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3819:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "3807:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3807:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3789:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3789:51:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3789:51:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "3860:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3871:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3856:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3856:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "3890:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "3883:6:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3883:14:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "3876:6:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3876:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3849:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3849:50:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3849:50:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3705:9:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "3716:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3724:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3735:4:45",
                            "type": ""
                          }
                        ],
                        "src": "3621:284:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3942:95:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3959:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3966:3:45",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3971:10:45",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "3962:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3962:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3952:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3952:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3952:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3999:1:45",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4002:4:45",
                                    "type": "",
                                    "value": "0x21"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3992:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3992:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3992:15:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4023:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4026:4:45",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "4016:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4016:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4016:15:45"
                            }
                          ]
                        },
                        "name": "panic_error_0x21",
                        "nodeType": "YulFunctionDefinition",
                        "src": "3910:127:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4132:186:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4178:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4187:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4190:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4180:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4180:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4180:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4153:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4162:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4149:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4149:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4174:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4145:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4145:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "4142:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4203:36:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4229:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4216:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4216:23:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "4207:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4272:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4281:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4284:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4274:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4274:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4274:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "4261:5:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4268:1:45",
                                        "type": "",
                                        "value": "4"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "4258:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4258:12:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4251:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4251:20:45"
                              },
                              "nodeType": "YulIf",
                              "src": "4248:40:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4297:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "4307:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4297:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_enum$_ConduitItemType_$1451",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4098:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4109:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4121:6:45",
                            "type": ""
                          }
                        ],
                        "src": "4042:276:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4393:116:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4439:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4448:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4451:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4441:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4441:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4441:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "4414:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4423:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "4410:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4410:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4435:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4406:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4406:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "4403:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4464:39:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4493:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "4474:18:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4474:29:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "4464:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4359:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "4370:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4382:6:45",
                            "type": ""
                          }
                        ],
                        "src": "4323:186:45"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_array_struct_ConduitTransfer_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, mul(length, 0xc0)), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_array$_t_struct$_ConduitTransfer_$1469_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_ConduitTransfer_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\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 abi_decode_array_struct_ConduitBatch1155Transfer_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$_ConduitTransfer_$1469_calldata_ptr_$dyn_calldata_ptrt_array$_t_struct$_ConduitBatch1155Transfer_$1482_calldata_ptr_$dyn_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_array_struct_ConduitTransfer_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_array_struct_ConduitBatch1155Transfer_calldata_dyn_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function abi_decode_tuple_t_array$_t_struct$_ConduitBatch1155Transfer_$1482_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_ConduitBatch1155Transfer_calldata_dyn_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_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_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_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__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), iszero(iszero(value1)))\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_decode_tuple_t_enum$_ConduitItemType_$1451(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(lt(value, 4)) { revert(0, 0) }\n        value0 := 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}",
                  "id": 45,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "463": [
                  {
                    "length": 32,
                    "start": 528
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b506004361061004c5760003560e01c80634ce34aa214610051578063899e104c146100815780638df25d9214610094578063c4e8fcb5146100a7575b600080fd5b61006461005f36600461085c565b6100bc565b6040516001600160e01b0319909116815260200160405180910390f35b61006461008f3660046108e3565b610136565b6100646100a236600461094f565b6101bc565b6100ba6100b53660046109a1565b610205565b005b3360009081526020819052604081205460ff166100ec57604051636821b7df60e01b815260040160405180910390fd5b8160005b81811015610125573685858381811061010b5761010b6109dd565b905060c00201905061011c816102af565b506001016100f0565b50632671a55160e11b949350505050565b3360009081526020819052604081205460ff1661016657604051636821b7df60e01b815260040160405180910390fd5b8360005b8181101561019f5736878783818110610185576101856109dd565b905060c002019050610196816102af565b5060010161016a565b506101aa848461041b565b50632267841360e21b95945050505050565b3360009081526020819052604081205460ff166101ec57604051636821b7df60e01b815260040160405180910390fd5b6101f6838361041b565b506346f92ec960e11b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461024e576040516336abb4df60e11b815260040160405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527fae63067d43ac07563b7eb8db6595635fc77f1578a2a5ea06ba91b63e2afa37e2910160405180910390a15050565b60016102be6020830183610a09565b60038111156102cf576102cf6109f3565b03610314576103116102e76040830160208401610a31565b6102f76060840160408501610a31565b6103076080850160608601610a31565b8460a00135610565565b50565b60026103236020830183610a09565b6003811115610334576103346109f3565b0361039b578060a0013560011461035e5760405163efcc00b160e01b815260040160405180910390fd5b6103116103716040830160208401610a31565b6103816060840160408501610a31565b6103916080850160608601610a31565b846080013561066b565b60036103aa6020830183610a09565b60038111156103bb576103bb6109f3565b03610402576103116103d36040830160208401610a31565b6103e36060840160408501610a31565b6103f36080850160608601610a31565b84608001358560a0013561072c565b604051631e4cbc7f60e21b815260040160405180910390fd5b808280631759616b60e11b60205260005b83811015610558578235820160208401935060806020820160243760a0810135604081026040018060a00160a452600081610104015260408202610104018160a0850160c4376020830260c00191508160808501351460a0606086013514168285013584141615925082156104ac57633ae8821360e21b60005260046000fd5b923592833b6104ca57632f8aeb3960e11b6000528360045260246000fd5b6000808260206000885af1925082610549573d156105245760203d04915060208104826003028184111561050c57818403600302610200838002868002030401015b5a602082011015610521573d6000803e3d6000fd5b50505b6357e222f160e11b600052836004526080604452608451602001608452602481016000fd5b5050505060018101905061042c565b5050505060806040525050565b6040516323b872dd60e01b600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d1515811661065b5780873b15151661065b57806106465781610625573d156105ff5760203d046020840481600302818311156105e657818303600302610200838002858002030401015b5a6020820110156105fb573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005286600452856024528460445260006064528360845260a46000fd5b639889192360e01b6000528660045285602452846044528360645260846000fd5b632f8aeb3960e11b6000528660045260246000fd5b5050604052505060006060525050565b833b61068657632f8aeb3960e11b6000528360045260246000fd5b6040516323b872dd60e01b6000528360045282602452816044526000806064600080895af18061071d573d156106f75760203d046020830481600302818311156106de57818303600302610200838002858002030401015b5a6020820110156106f3573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b61074757632f8aeb3960e11b6000528460045260246000fd5b60405160805160a05160c051637921219560e11b6000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af1806107f4573d156107cf5760203d046020860481600302818311156107b657818303600302610200838002858002030401015b5a6020820110156107cb573d6000803e3d6000fd5b5050505b63f486bc8760e01b600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b60008083601f84011261082257600080fd5b50813567ffffffffffffffff81111561083a57600080fd5b60208301915083602060c08302850101111561085557600080fd5b9250929050565b6000806020838503121561086f57600080fd5b823567ffffffffffffffff81111561088657600080fd5b61089285828601610810565b90969095509350505050565b60008083601f8401126108b057600080fd5b50813567ffffffffffffffff8111156108c857600080fd5b6020830191508360208260051b850101111561085557600080fd5b600080600080604085870312156108f957600080fd5b843567ffffffffffffffff8082111561091157600080fd5b61091d88838901610810565b9096509450602087013591508082111561093657600080fd5b506109438782880161089e565b95989497509550505050565b6000806020838503121561096257600080fd5b823567ffffffffffffffff81111561097957600080fd5b6108928582860161089e565b80356001600160a01b038116811461099c57600080fd5b919050565b600080604083850312156109b457600080fd5b6109bd83610985565b9150602083013580151581146109d257600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060208284031215610a1b57600080fd5b813560048110610a2a57600080fd5b9392505050565b600060208284031215610a4357600080fd5b610a2a8261098556fea2646970667358221220154e5730b5c069ee38eba91c086614ce04b3f3b36831b234f43b61e7a2786e1e64736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4CE34AA2 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x899E104C EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x8DF25D92 EQ PUSH2 0x94 JUMPI DUP1 PUSH4 0xC4E8FCB5 EQ PUSH2 0xA7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x85C JUMP JUMPDEST PUSH2 0xBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0x8F CALLDATASIZE PUSH1 0x4 PUSH2 0x8E3 JUMP JUMPDEST PUSH2 0x136 JUMP JUMPDEST PUSH2 0x64 PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x94F JUMP JUMPDEST PUSH2 0x1BC JUMP JUMPDEST PUSH2 0xBA PUSH2 0xB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x9A1 JUMP JUMPDEST PUSH2 0x205 JUMP JUMPDEST STOP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xEC JUMPI PUSH1 0x40 MLOAD PUSH4 0x6821B7DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x125 JUMPI CALLDATASIZE DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x10B JUMPI PUSH2 0x10B PUSH2 0x9DD JUMP JUMPDEST SWAP1 POP PUSH1 0xC0 MUL ADD SWAP1 POP PUSH2 0x11C DUP2 PUSH2 0x2AF JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xF0 JUMP JUMPDEST POP PUSH4 0x2671A551 PUSH1 0xE1 SHL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x166 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6821B7DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x19F JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x185 JUMPI PUSH2 0x185 PUSH2 0x9DD JUMP JUMPDEST SWAP1 POP PUSH1 0xC0 MUL ADD SWAP1 POP PUSH2 0x196 DUP2 PUSH2 0x2AF JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x16A JUMP JUMPDEST POP PUSH2 0x1AA DUP5 DUP5 PUSH2 0x41B JUMP JUMPDEST POP PUSH4 0x22678413 PUSH1 0xE2 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1EC JUMPI PUSH1 0x40 MLOAD PUSH4 0x6821B7DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F6 DUP4 DUP4 PUSH2 0x41B JUMP JUMPDEST POP PUSH4 0x46F92EC9 PUSH1 0xE1 SHL SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x24E JUMPI PUSH1 0x40 MLOAD PUSH4 0x36ABB4DF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE PUSH32 0xAE63067D43AC07563B7EB8DB6595635FC77F1578A2A5EA06BA91B63E2AFA37E2 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2BE PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2CF JUMPI PUSH2 0x2CF PUSH2 0x9F3 JUMP JUMPDEST SUB PUSH2 0x314 JUMPI PUSH2 0x311 PUSH2 0x2E7 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x2F7 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x307 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xA31 JUMP JUMPDEST DUP5 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x565 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 PUSH2 0x323 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x334 JUMPI PUSH2 0x334 PUSH2 0x9F3 JUMP JUMPDEST SUB PUSH2 0x39B JUMPI DUP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH1 0x1 EQ PUSH2 0x35E JUMPI PUSH1 0x40 MLOAD PUSH4 0xEFCC00B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x311 PUSH2 0x371 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x381 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x391 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xA31 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x66B JUMP JUMPDEST PUSH1 0x3 PUSH2 0x3AA PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3BB JUMPI PUSH2 0x3BB PUSH2 0x9F3 JUMP JUMPDEST SUB PUSH2 0x402 JUMPI PUSH2 0x311 PUSH2 0x3D3 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x3E3 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x3F3 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xA31 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD DUP6 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x72C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1E4CBC7F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 DUP1 PUSH4 0x1759616B PUSH1 0xE1 SHL PUSH1 0x20 MSTORE PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x558 JUMPI DUP3 CALLDATALOAD DUP3 ADD PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x80 PUSH1 0x20 DUP3 ADD PUSH1 0x24 CALLDATACOPY PUSH1 0xA0 DUP2 ADD CALLDATALOAD PUSH1 0x40 DUP2 MUL PUSH1 0x40 ADD DUP1 PUSH1 0xA0 ADD PUSH1 0xA4 MSTORE PUSH1 0x0 DUP2 PUSH2 0x104 ADD MSTORE PUSH1 0x40 DUP3 MUL PUSH2 0x104 ADD DUP2 PUSH1 0xA0 DUP6 ADD PUSH1 0xC4 CALLDATACOPY PUSH1 0x20 DUP4 MUL PUSH1 0xC0 ADD SWAP2 POP DUP2 PUSH1 0x80 DUP6 ADD CALLDATALOAD EQ PUSH1 0xA0 PUSH1 0x60 DUP7 ADD CALLDATALOAD EQ AND DUP3 DUP6 ADD CALLDATALOAD DUP5 EQ AND ISZERO SWAP3 POP DUP3 ISZERO PUSH2 0x4AC JUMPI PUSH4 0x3AE88213 PUSH1 0xE2 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST SWAP3 CALLDATALOAD SWAP3 DUP4 EXTCODESIZE PUSH2 0x4CA JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x20 PUSH1 0x0 DUP9 GAS CALL SWAP3 POP DUP3 PUSH2 0x549 JUMPI RETURNDATASIZE ISZERO PUSH2 0x524 JUMPI PUSH1 0x20 RETURNDATASIZE DIV SWAP2 POP PUSH1 0x20 DUP2 DIV DUP3 PUSH1 0x3 MUL DUP2 DUP5 GT ISZERO PUSH2 0x50C JUMPI DUP2 DUP5 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP7 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x521 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMPDEST PUSH4 0x57E222F1 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x80 PUSH1 0x44 MSTORE PUSH1 0x84 MLOAD PUSH1 0x20 ADD PUSH1 0x84 MSTORE PUSH1 0x24 DUP2 ADD PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x42C JUMP JUMPDEST POP POP POP POP PUSH1 0x80 PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x65B JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x65B JUMPI DUP1 PUSH2 0x646 JUMPI DUP2 PUSH2 0x625 JUMPI RETURNDATASIZE ISZERO PUSH2 0x5FF JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x5E6 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x5FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x98891923 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x686 JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x71D JUMPI RETURNDATASIZE ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x6DE JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x6F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x747 JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH4 0x79212195 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0x7F4 JUMPI RETURNDATASIZE ISZERO PUSH2 0x7CF JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x7B6 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x7CB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x83A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0xC0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x86F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x892 DUP6 DUP3 DUP7 ADD PUSH2 0x810 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x8B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8C8 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 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x911 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x91D DUP9 DUP4 DUP10 ADD PUSH2 0x810 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x943 DUP8 DUP3 DUP9 ADD PUSH2 0x89E JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x962 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x979 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x892 DUP6 DUP3 DUP7 ADD PUSH2 0x89E JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x99C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9BD DUP4 PUSH2 0x985 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x9D2 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 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0xA2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA2A DUP3 PUSH2 0x985 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ISZERO 0x4E JUMPI ADDRESS 0xB5 0xC0 PUSH10 0xEE38EBA91C086614CE04 0xB3 RETURN 0xB3 PUSH9 0x31B234F43B61E7A278 PUSH15 0x1E64736F6C634300080D0033000000 ",
              "sourceMap": "1040:6245:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1868:977;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;1076:33:45;;;1058:52;;1046:2;1031:18;1868:977:2;;;;;;;4171:1179;;;;;;:::i;:::-;;:::i;3205:513::-;;;;;;:::i;:::-;;:::i;5583:408::-;;;;;;:::i;:::-;;:::i;:::-;;1868:977;2077:10;1974:17;2067:21;;;;;;;;;;;;;2062:75;;2111:15;;-1:-1:-1;;;2111:15:2;;;;;;;;;;;2062:75;2254:9;2221:30;2320:396;2344:22;2340:1;:26;2320:396;;;2434:41;2478:9;;2488:1;2478:12;;;;;;;:::i;:::-;;;;;;2434:56;;2542:27;2552:16;2542:9;:27::i;:::-;-1:-1:-1;2688:3:2;;2320:396;;;-1:-1:-1;;;;2817:21:2;1868:977;-1:-1:-1;;;;1868:977:2:o;4171:1179::-;4447:10;4348:17;4437:21;;;;;;;;;;;;;4432:75;;4481:15;;-1:-1:-1;;;4481:15:2;;;;;;;;;;;4432:75;4624:17;4591:30;4707:404;4731:22;4727:1;:26;4707:404;;;4821:41;4865:17;;4883:1;4865:20;;;;;;;:::i;:::-;;;;;;4821:64;;4937:27;4947:16;4937:9;:27::i;:::-;-1:-1:-1;5083:3:2;;4707:404;;;;5162:45;5192:14;;5162:29;:45::i;:::-;-1:-1:-1;;;;5309:34:2;4171:1179;-1:-1:-1;;;;;4171:1179:2:o;3205:513::-;3423:10;3324:17;3413:21;;;;;;;;;;;;;3408:75;;3457:15;;-1:-1:-1;;;3457:15:2;;;;;;;;;;;3408:75;3534:45;3564:14;;3534:29;:45::i;:::-;-1:-1:-1;;;;3681:30:2;3205:513;-1:-1:-1;;3205:513:2:o;5583:408::-;5738:10;-1:-1:-1;;;;;5752:11:2;5738:25;;5734:82;;5786:19;;-1:-1:-1;;;5786:19:2;;;;;;;;;;;5734:82;-1:-1:-1;;;;;5871:18:2;;:9;:18;;;;;;;;;;;;:27;;-1:-1:-1;;5871:27:2;;;;;;;;;;5953:31;;3789:51:45;;;3856:18;;;3849:50;5953:31:2;;3762:18:45;5953:31:2;;;;;;;5583:408;;:::o;6147:1136::-;6302:21;6285:13;;;;:4;:13;:::i;:::-;:38;;;;;;;;:::i;:::-;;6281:996;;6376:66;6398:10;;;;;;;;:::i;:::-;6410:9;;;;;;;;:::i;:::-;6421:7;;;;;;;;:::i;:::-;6430:4;:11;;;6376:21;:66::i;:::-;6147:1136;:::o;6281:996::-;6480:22;6463:13;;;;:4;:13;:::i;:::-;:39;;;;;;;;:::i;:::-;;6459:818;;6592:4;:11;;;6607:1;6592:16;6588:91;;6635:29;;-1:-1:-1;;;6635:29:2;;;;;;;;;;;6588:91;6731:149;6771:10;;;;;;;;:::i;:::-;6799:9;;;;;;;;:::i;:::-;6826:7;;;;;;;;:::i;:::-;6851:4;:15;;;6731:22;:149::i;6459:818::-;6918:23;6901:13;;;;:4;:13;:::i;:::-;:40;;;;;;;;:::i;:::-;;6897:380;;6996:179;7037:10;;;;;;;;:::i;:::-;7065:9;;;;;;;;:::i;:::-;7092:7;;;;;;;;:::i;:::-;7117:4;:15;;;7150:4;:11;;;6996:23;:179::i;6897:380::-;7249:17;;-1:-1:-1;;;7249:17:2;;;;;;;;;;;21293:11173:38;21522:21;21809;22089:18;-1:-1:-1;;;22305:36:38;22281:131;22506:1;22475:9747;22528:3;22525:1;22522:10;22475:9747;;;22907:18;22894:32;22860:12;22835:109;23072:7;23052:18;23048:32;23026:54;;23335:41;23276:36;23264:10;23260:53;23211:27;23177:217;23536:42;23524:10;23520:59;23486:111;23826:8;23815:9;23811:24;23801:8;23797:39;24104:17;24037:41;24008:135;23949:37;23921:240;24437:1;24376:17;24307:43;24278:137;24250:206;24682:8;24671:9;24667:24;24602:43;24577:132;24981:17;24916:42;24904:10;24900:59;24840:38;24806:210;25247:7;25236:9;25232:23;25160:50;25135:138;25106:167;;26564:21;26414:44;26362:10;26317:179;26267:263;26231:384;26059:42;25913:40;25861:10;25816:175;25766:259;25730:401;25647:994;25572:21;25560:10;25556:38;25543:52;25504:9;25472:149;25387:1276;25359:1322;25336:1345;;26772:15;26769:392;;;-1:-1:-1;;;26842:36:38;26810:157;27082:39;27020:36;26988:155;26769:392;27245:24;;;27350:18;;27340:270;;-1:-1:-1;;;27399:24:38;27392:60;27508:5;27480:26;27473:41;27568:23;27542:24;27535:57;27340:270;27988:1;27965;27888:16;27807:36;27784:1;27757:5;27730;27704:303;27689:318;;28080:7;28070:4138;;28243:16;28240:2859;;;28603:7;28585:16;28581:30;28558:53;;29272:7;29254:16;29250:30;29408:15;29395:11;29391:33;29545:10;29528:15;29525:31;29522:979;;;29756:32;;;29830:11;29711:168;30347:26;30236:27;;;30011:179;;;29962:343;29917:494;29670:775;29595:880;29522:979;30761:5;30744:14;30738:4;30734:25;30731:36;30728:349;;;30897:16;30894:1;30891;30876:38;31034:16;31031:1;31024:27;30728:349;;;28240:2859;-1:-1:-1;;;31201:1:38;31169:131;31415:5;31369:44;31362:59;31609:44;31547:36;31515:160;31870:40;31864:47;31827:7;31794:143;31728:40;31696:263;32140:27;32122:16;32118:50;32091:1;32059:131;28070:4138;;;;;22563:1;22560;22556:9;22551:14;;22475:9747;;;22479:42;;;;32425:24;32402:21;32395:55;21293:11173;;:::o;783:8985::-;1129:21;1123:28;-1:-1:-1;;;1248:26:38;1241:64;1354:4;1325:27;1318:41;1406:2;1379:25;1372:37;1460:6;1429:29;1422:45;1772:7;1753:1;1710:25;1666:26;1647:1;1624:5;1601;1579:214;2270:10;2217:16;2210:24;2184:2;2166:16;2163:24;2159:1;2155;2149:8;2146:15;2142:46;2118:134;1902:392;2621:16;2614:24;2607:32;2598:7;2594:46;2584:6977;;2942:7;2932:5;2920:18;2913:26;2906:34;2902:48;2892:6460;;3031:7;3021:6011;;3130:10;3120:4669;;3320:16;3317:3232;;;3797:7;3743:16;3702:136;4203:7;4191:10;4187:24;4355:15;4342:11;4338:33;4508:10;4491:15;4488:31;4485:1293;;;4759:186;;;4995:11;4706:346;5592:26;5465:27;;;5208:203;;;5151:391;5098:566;4657:1049;4566:1178;4485:1293;6070:5;6053:14;6047:4;6043:25;6040:36;6037:482;;;6268:16;6265:1;6262;6247:38;6468:16;6465:1;6458:27;6037:482;;;;3317:3232;-1:-1:-1;;;6697:41:38;6657:188;6991:5;6914:43;6874:152;7171:4;7095:42;7055:150;7283:2;7241:40;7234:52;7364:1;7322:40;7315:51;7513:6;7435:44;7395:154;7693:40;7618:41;7578:185;3120:4669;-1:-1:-1;;;7970:47:38;7934:188;8262:5;8183:49;8147:146;8432:4;8354:48;8318:144;8599:2;8523:46;8487:140;8768:6;8688:50;8652:148;8938:46;8861:47;8825:185;3021:6011;-1:-1:-1;;;9141:24:38;9134:60;9250:5;9222:26;9215:41;9310:23;9284:24;9277:57;2892:6460;-1:-1:-1;;9639:21:38;9632:41;-1:-1:-1;;9750:1:38;9740:8;9733:19;-1:-1:-1;;783:8985:38:o;10217:4678::-;10536:5;10524:18;10514:254;;-1:-1:-1;;;10569:24:38;10562:60;10674:5;10646:26;10639:41;10730:23;10704:24;10697:57;10514:254;10879:21;10873:28;-1:-1:-1;;;10995:27:38;10988:66;11104:4;11074:28;11067:42;11157:2;11129:26;11122:38;11208:10;11180:26;11173:46;11498:1;11479;11435:26;11390:27;11371:1;11348:5;11325;11303:210;11578:7;11568:3120;;11729:16;11726:2180;;;12044:7;12026:16;12022:30;12334:7;12322:10;12318:24;12462:15;12449:11;12445:33;12591:10;12574:15;12571:31;12568:769;;;12782:32;;;12852:11;12741:156;13199:26;13096:27;;;13017:37;;;12972:189;12931:328;12704:585;12637:678;12568:769;13581:5;13564:14;13558:4;13554:25;13551:36;13548:340;;;13716:16;13713:1;13710;13695:38;13849:16;13846:1;13839:27;13548:340;;;;11726:2180;-1:-1:-1;;;14018:41:38;13990:152;14211:5;14166:43;14159:58;14285:4;14241:42;14234:56;14356:2;14314:40;14307:52;14425:10;14383:40;14376:60;14506:1;14460:44;14453:55;14616:40;14553:41;14525:149;11568:3120;-1:-1:-1;14766:21:38;14759:41;-1:-1:-1;;14877:1:38;14867:8;14860:19;-1:-1:-1;;10217:4678:38:o;15519:5338::-;15864:5;15852:18;15842:254;;-1:-1:-1;;;15897:24:38;15890:60;16002:5;15974:26;15967:41;16058:23;16032:24;16025:57;15842:254;16210:21;16204:28;16267:8;16261:15;16311:8;16305:15;16355:8;16349:15;-1:-1:-1;;;16479:32:38;16455:122;16632:4;16597:33;16590:47;16690:2;16657:31;16650:43;16746:10;16713:31;16706:51;16814:6;16777:35;16770:51;16916:43;16858:40;16834:139;17035:1;16993:40;16986:51;17271:1;17252;17203:31;17153:32;17134:1;17111:5;17088;17066:220;17351:7;17341:3125;;17502:16;17499:2180;;;17817:7;17799:16;17795:30;18107:7;18095:10;18091:24;18235:15;18222:11;18218:33;18364:10;18347:15;18344:31;18341:769;;;18555:32;;;18625:11;18514:156;18972:26;18869:27;;;18790:37;;;18745:189;18704:328;18477:585;18410:678;18341:769;19354:5;19337:14;19331:4;19327:25;19324:36;19321:340;;;19489:16;19486:1;19483;19468:38;19622:16;19619:1;19612:27;19321:340;;;;17499:2180;-1:-1:-1;;;19791:41:38;19763:152;19984:5;19939:43;19932:58;20058:4;20014:42;20007:56;20129:2;20087:40;20080:52;20198:10;20156:40;20149:60;20279:6;20233:44;20226:60;20394:40;20331:41;20303:149;17341:3125;-1:-1:-1;20487:8:38;20480:26;;;;20548:8;20541:26;20609:8;20602:26;20728:21;20721:41;-1:-1:-1;;20839:1:38;-1:-1:-1;20822:19:38;-1:-1:-1;;;15519:5338:38:o;14:394:45:-;101:8;111:6;165:3;158:4;150:6;146:17;142:27;132:55;;183:1;180;173:12;132:55;-1:-1:-1;206:20:45;;249:18;238:30;;235:50;;;281:1;278;271:12;235:50;318:4;310:6;306:17;294:29;;381:3;374:4;366;358:6;354:17;346:6;342:30;338:41;335:50;332:70;;;398:1;395;388:12;332:70;14:394;;;;;:::o;413:496::-;534:6;542;595:2;583:9;574:7;570:23;566:32;563:52;;;611:1;608;601:12;563:52;651:9;638:23;684:18;676:6;673:30;670:50;;;716:1;713;706:12;670:50;755:94;841:7;832:6;821:9;817:22;755:94;:::i;:::-;868:8;;729:120;;-1:-1:-1;413:496:45;-1:-1:-1;;;;413:496:45:o;1121:400::-;1217:8;1227:6;1281:3;1274:4;1266:6;1262:17;1258:27;1248:55;;1299:1;1296;1289:12;1248:55;-1:-1:-1;1322:20:45;;1365:18;1354:30;;1351:50;;;1397:1;1394;1387:12;1351:50;1434:4;1426:6;1422:17;1410:29;;1494:3;1487:4;1477:6;1474:1;1470:14;1462:6;1458:27;1454:38;1451:47;1448:67;;;1511:1;1508;1501:12;1526:909;1727:6;1735;1743;1751;1804:2;1792:9;1783:7;1779:23;1775:32;1772:52;;;1820:1;1817;1810:12;1772:52;1860:9;1847:23;1889:18;1930:2;1922:6;1919:14;1916:34;;;1946:1;1943;1936:12;1916:34;1985:94;2071:7;2062:6;2051:9;2047:22;1985:94;:::i;:::-;2098:8;;-1:-1:-1;1959:120:45;-1:-1:-1;2186:2:45;2171:18;;2158:32;;-1:-1:-1;2202:16:45;;;2199:36;;;2231:1;2228;2221:12;2199:36;;2270:105;2367:7;2356:8;2345:9;2341:24;2270:105;:::i;:::-;1526:909;;;;-1:-1:-1;2394:8:45;-1:-1:-1;;;;1526:909:45:o;2440:514::-;2570:6;2578;2631:2;2619:9;2610:7;2606:23;2602:32;2599:52;;;2647:1;2644;2637:12;2599:52;2687:9;2674:23;2720:18;2712:6;2709:30;2706:50;;;2752:1;2749;2742:12;2706:50;2791:103;2886:7;2877:6;2866:9;2862:22;2791:103;:::i;2959:173::-;3027:20;;-1:-1:-1;;;;;3076:31:45;;3066:42;;3056:70;;3122:1;3119;3112:12;3056:70;2959:173;;;:::o;3137:347::-;3202:6;3210;3263:2;3251:9;3242:7;3238:23;3234:32;3231:52;;;3279:1;3276;3269:12;3231:52;3302:29;3321:9;3302:29;:::i;:::-;3292:39;;3381:2;3370:9;3366:18;3353:32;3428:5;3421:13;3414:21;3407:5;3404:32;3394:60;;3450:1;3447;3440:12;3394:60;3473:5;3463:15;;;3137:347;;;;;:::o;3489:127::-;3550:10;3545:3;3541:20;3538:1;3531:31;3581:4;3578:1;3571:15;3605:4;3602:1;3595:15;3910:127;3971:10;3966:3;3962:20;3959:1;3952:31;4002:4;3999:1;3992:15;4026:4;4023:1;4016:15;4042:276;4121:6;4174:2;4162:9;4153:7;4149:23;4145:32;4142:52;;;4190:1;4187;4180:12;4142:52;4229:9;4216:23;4268:1;4261:5;4258:12;4248:40;;4284:1;4281;4274:12;4248:40;4307:5;4042:276;-1:-1:-1;;;4042:276:45:o;4323:186::-;4382:6;4435:2;4423:9;4414:7;4410:23;4406:32;4403:52;;;4451:1;4448;4441:12;4403:52;4474:29;4493:9;4474:29;:::i"
            },
            "methodIdentifiers": {
              "execute((uint8,address,address,address,uint256,uint256)[])": "4ce34aa2",
              "executeBatch1155((address,address,address,uint256[],uint256[])[])": "8df25d92",
              "executeWithBatch1155((uint8,address,address,address,uint256,uint256)[],(address,address,address,uint256[],uint256[])[])": "899e104c",
              "updateChannel(address,bool)": "c4e8fcb5"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChannelClosed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Invalid1155BatchTransferEncoding\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidController\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidItemType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"open\",\"type\":\"bool\"}],\"name\":\"ChannelUpdated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ConduitItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ConduitTransfer[]\",\"name\":\"transfers\",\"type\":\"tuple[]\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"internalType\":\"struct ConduitBatch1155Transfer[]\",\"name\":\"batchTransfers\",\"type\":\"tuple[]\"}],\"name\":\"executeBatch1155\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ConduitItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ConduitTransfer[]\",\"name\":\"standardTransfers\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"internalType\":\"struct ConduitBatch1155Transfer[]\",\"name\":\"batchTransfers\",\"type\":\"tuple[]\"}],\"name\":\"executeWithBatch1155\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"updateChannel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"ChannelClosed()\":[{\"details\":\"Revert with an error when attempting to execute transfers using a      caller that does not have an open channel.\"}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"Invalid1155BatchTransferEncoding()\":[{\"details\":\"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays.\"}],\"InvalidController()\":[{\"details\":\"Revert with an error when attempting to update the status of a      channel from a caller that is not the conduit controller.\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidItemType()\":[{\"details\":\"Revert with an error when attempting to execute a transfer for an      item that does not have an ERC20/721/1155 item type.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}]},\"kind\":\"dev\",\"methods\":{\"execute((uint8,address,address,address,uint256,uint256)[])\":{\"params\":{\"transfers\":\"The ERC20/721/1155 transfers to perform.\"},\"returns\":{\"magicValue\":\"A magic value indicating that the transfers were                    performed successfully.\"}},\"executeBatch1155((address,address,address,uint256[],uint256[])[])\":{\"params\":{\"batchTransfers\":\"The 1155 batch transfers to perform.\"},\"returns\":{\"magicValue\":\"A magic value indicating that the transfers were                    performed successfully.\"}},\"executeWithBatch1155((uint8,address,address,address,uint256,uint256)[],(address,address,address,uint256[],uint256[])[])\":{\"params\":{\"batchTransfers\":\"The 1155 batch transfers to perform.\",\"standardTransfers\":\"The ERC20/721/1155 transfers to perform.\"},\"returns\":{\"magicValue\":\"A magic value indicating that the transfers were                    performed successfully.\"}},\"updateChannel(address,bool)\":{\"params\":{\"channel\":\"The channel to open or close.\",\"isOpen\":\"The status of the channel (either open or closed).\"}}},\"title\":\"Conduit\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"In the constructor, set the deployer as the controller.\"},\"execute((uint8,address,address,address,uint256,uint256)[])\":{\"notice\":\"Execute a sequence of ERC20/721/1155 transfers. Only a caller         with an open channel can call this function.\"},\"executeBatch1155((address,address,address,uint256[],uint256[])[])\":{\"notice\":\"Execute a sequence of batch 1155 transfers. Only a caller with an         open channel can call this function.\"},\"executeWithBatch1155((uint8,address,address,address,uint256,uint256)[],(address,address,address,uint256[],uint256[])[])\":{\"notice\":\"Execute a sequence of transfers, both single and batch 1155. Only         a caller with an open channel can call this function.\"},\"updateChannel(address,bool)\":{\"notice\":\"Open or close a given channel. Only callable by the controller.\"}},\"notice\":\"This contract serves as an originator for \\\"proxied\\\" transfers. Each         conduit is deployed and controlled by a \\\"conduit controller\\\" that can         add and remove \\\"channels\\\" or contracts that can instruct the conduit         to transfer approved ERC20/721/1155 tokens. *IMPORTANT NOTE: each         conduit has an owner that can arbitrarily add or remove channels, and         a malicious or negligent owner can add a channel that allows for any         approved ERC20/721/1155 tokens to be taken immediately \\u2014 be extremely         cautious with what conduits you give token approvals to!*\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/conduit/Conduit.sol\":\"Conduit\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/conduit/Conduit.sol\":{\"keccak256\":\"0x32a5c557f58e717798ee6770bd43f343063fa8c077cd0f5752f7725f4b8168cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bec0b717faaa55a918a2a60aa7a52e5f4e7303c7f9cd73e6ff766b8e6500f55d\",\"dweb:/ipfs/QmdpLscNHaYLKMgcPVQcR6PtB6WuubJk79xWM6k2CiXAkt\"]},\"seaport/contracts/conduit/lib/ConduitEnums.sol\":{\"keccak256\":\"0x3a9ecf77688f97d1b595be27b49fca3eac93e3f91160d79f0f0063c250fd8aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d596c21d5c7c7b47ca14908cbd7add9c06898c500cf47988446f843c0b28cf96\",\"dweb:/ipfs/QmZf12Y7XHwEWvjd2ZbaUFz4NXsWPFGJF6vNg1HECvXV5m\"]},\"seaport/contracts/conduit/lib/ConduitStructs.sol\":{\"keccak256\":\"0xfd2cec45327e9a6ebc02d7efb9daa1cfdabb26eb803e4b2e9b5e82340d92cfed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea7fa97afdf70ab91449e54f9a4f40e9da16292ab87b86e7e975e6d92f573dc3\",\"dweb:/ipfs/QmaRvo6P8YYPYNgcuP4HVV2wqDuVSB1t6AwMe8jMbcQY3F\"]},\"seaport/contracts/interfaces/ConduitInterface.sol\":{\"keccak256\":\"0x6aec074141c2a66f0c06ff006b6b61f5ee3f988c1cee26a51f91e1616af194d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4cda8ec77a8261f3270087331f72443b5dcb686e93297fe9641b757dff108ae1\",\"dweb:/ipfs/QmPuWHXQWuhTUfbe3yB842nS1jRM2iLyJ16rVkDSyLCD2L\"]},\"seaport/contracts/interfaces/TokenTransferrerErrors.sol\":{\"keccak256\":\"0x128fbb0236de5e52c34876c61148e04c12289e92d6bce2270760905617a01b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ed114ea7bf9ce55065d853f0f705eb82cc840672e0c2ab899691ab5703d2e98\",\"dweb:/ipfs/QmXQsajetWBmU7tzjoFm5wyajRKrMMEGXFF7ZQxaH7ZceG\"]},\"seaport/contracts/lib/TokenTransferrer.sol\":{\"keccak256\":\"0xe392cea22226f1b55e35b0295d0cfa156c7764f2509fa416f3946ca748c9605a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddf9b20512bc36f5bbe25f56729aa31a139b1560dfc14beb42d5d09ae8d44b48\",\"dweb:/ipfs/QmSN9GdbtqBcobRSd8kSCxn2GScZhiiAbuxk5djmkatKRD\"]},\"seaport/contracts/lib/TokenTransferrerConstants.sol\":{\"keccak256\":\"0x5ecc368039fd81cc27788a664538ab63f1b5deb9caa8839d9499fadfd1d465cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0e821e5fd5a31cdcaaf334203dd58d80489c1aed2fd2a91a9683a9e342c9653\",\"dweb:/ipfs/QmRKkHF5aLKJ8KrMmMoV9UsCtgtrCQYgeptGK4jKVGM68j\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/conduit/ConduitController.sol": {
        "ConduitController": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "CallerIsNotNewPotentialOwner",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "CallerIsNotOwner",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "ChannelOutOfRange",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "ConduitAlreadyExists",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidCreator",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "NewPotentialOwnerIsZeroAddress",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoConduit",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                }
              ],
              "name": "NewConduit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                },
                {
                  "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": "conduit",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newPotentialOwner",
                  "type": "address"
                }
              ],
              "name": "PotentialOwnerUpdated",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "acceptOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "cancelOwnershipTransfer",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "initialOwner",
                  "type": "address"
                }
              ],
              "name": "createConduit",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "channelIndex",
                  "type": "uint256"
                }
              ],
              "name": "getChannel",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "channel",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "channel",
                  "type": "address"
                }
              ],
              "name": "getChannelStatus",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isOpen",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "getChannels",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "channels",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                }
              ],
              "name": "getConduit",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "exists",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getConduitCodeHashes",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "creationCodeHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "runtimeCodeHash",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "getKey",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "getPotentialOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "potentialOwner",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "getTotalChannels",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "totalChannels",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "newPotentialOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "channel",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "isOpen",
                  "type": "bool"
                }
              ],
              "name": "updateChannel",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_794": {
                  "entryPoint": null,
                  "id": 794,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "60c060405234801561001057600080fd5b5060405161002060208201610088565b6020820181038252601f19601f82011660405250805190602001206080818152505060008060001b60405161005490610088565b8190604051809103906000f5905080158015610074573d6000803e3d6000fd5b506001600160a01b03163f60a05250610095565b610ab28061197b83390190565b60805160a0516118a56100d6600039600081816101480152818161080501526108ae015260008181610125015281816107ad015261086901526118a56000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636d4354211161008c5780637b37e561116100665780637b37e561146102495780638b9e028b1461025c578063906c87cc1461027c57806393790f441461028f57600080fd5b80636d435421146101f15780636e9bfd9f14610204578063794593bc1461023657600080fd5b806314afd79e116100c857806314afd79e1461018757806333bc85721461019a5780634e3f9580146101bd57806351710e45146101de57600080fd5b8063027cc764146100ef5780630a96ad391461011f57806313ad9cab14610172575b600080fd5b6101026100fd366004610bdf565b6102a2565b6040516001600160a01b0390911681526020015b60405180910390f35b604080517f000000000000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000602082015201610116565b610185610180366004610c09565b610343565b005b610102610195366004610c55565b610553565b6101ad6101a8366004610c77565b610580565b6040519015158152602001610116565b6101d06101cb366004610c55565b6105bb565b604051908152602001610116565b6101856101ec366004610c55565b6105e5565b6101856101ff366004610c77565b6106f5565b610217610212366004610caa565b6107a1565b604080516001600160a01b039093168352901515602083015201610116565b610102610244366004610cc3565b61082c565b610185610257366004610c55565b6109df565b61026f61026a366004610c55565b610a48565b6040516101169190610ce6565b61010261028a366004610c55565b610ac8565b6101d061029d366004610c55565b610af5565b60006102ad83610b31565b6001600160a01b0383166000908152602081905260409020600301548083106102f957604051636ceb340b60e01b81526001600160a01b03851660048201526024015b60405180910390fd5b6001600160a01b038416600090815260208190526040902060030180548490811061032657610326610d33565b6000918252602090912001546001600160a01b0316949350505050565b61034c83610b6a565b60405163c4e8fcb560e01b81526001600160a01b038381166004830152821515602483015284169063c4e8fcb590604401600060405180830381600087803b15801561039757600080fd5b505af11580156103ab573d6000803e3d6000fd5b505050506001600160a01b038381166000908152602081815260408083209386168352600484019091529020548015158380156103e6575080155b15610436576003830180546001810182556000828152602080822090920180546001600160a01b0319166001600160a01b038a16908117909155925492815260048601909152604090205561054b565b831580156104415750805b1561054b576000610453600184610d49565b600385015490915060009061046a90600190610d49565b90508181146104f857600085600301828154811061048a5761048a610d33565b6000918252602090912001546003870180546001600160a01b0390921692508291859081106104bb576104bb610d33565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260048701909152604090208490555b8460030180548061050b5761050b610d6e565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0389168252600487019052604081205550505b505050505050565b600061055e82610b31565b506001600160a01b039081166000908152602081905260409020600101541690565b600061058b83610b31565b506001600160a01b0391821660009081526020818152604080832093909416825260049092019091522054151590565b60006105c682610b31565b506001600160a01b031660009081526020819052604090206003015490565b6105ee81610b31565b6001600160a01b03818116600090815260208190526040902060020154163314610636576040516388c3a11560e01b81526001600160a01b03821660048201526024016102f0565b6040516000906001600160a01b038316907fd4116aaf34f80123d0229f02f46f776b386a377dbb3404be10fdf4e81ba9cdb6908390a36001600160a01b038082166000818152602081905260408082206002810180546001600160a01b031916905560010154905133949190911692917fc8894f26f396ce8c004245c8b7cd1b92103a6e4302fcbab883987149ac01b7ec91a46001600160a01b0316600090815260208190526040902060010180546001600160a01b03191633179055565b6106fe82610b6a565b6001600160a01b0381166107305760405163a388d26360e01b81526001600160a01b03831660048201526024016102f0565b806001600160a01b0316826001600160a01b03167fd4116aaf34f80123d0229f02f46f776b386a377dbb3404be10fdf4e81ba9cdb660405160405180910390a36001600160a01b03918216600090815260208190526040902060020180546001600160a01b03191691909216179055565b60008060ff60f81b30847f00000000000000000000000000000000000000000000000000000000000000006040516020016107df9493929190610d84565b60408051601f198184030181529190528051602090910120936001600160a01b0385163f7f0000000000000000000000000000000000000000000000000000000000000000149350915050565b6000606083901c3314610852576040516332db94d160e21b815260040160405180910390fd5b604051610891906001600160f81b031990309086907f000000000000000000000000000000000000000000000000000000000000000090602001610d84565b6040516020818303038152906040528051906020012060001c90507f0000000000000000000000000000000000000000000000000000000000000000816001600160a01b03163f0361090157604051633194665960e11b81526001600160a01b03821660048201526024016102f0565b8260405161090e90610bbb565b8190604051809103906000f590508015801561092e573d6000803e3d6000fd5b50506001600160a01b03818116600081815260208181526040918290206001810180546001600160a01b031916958816959095179094559286905580519182529181018590527f4397af6128d529b8ae0442f99db1296d5136062597a15bbc61c1b2a6431a7d15910160405180910390a16040516001600160a01b03808416916000918416907fc8894f26f396ce8c004245c8b7cd1b92103a6e4302fcbab883987149ac01b7ec908390a492915050565b6109e881610b6a565b6040516000906001600160a01b038316907fd4116aaf34f80123d0229f02f46f776b386a377dbb3404be10fdf4e81ba9cdb6908390a36001600160a01b0316600090815260208190526040902060020180546001600160a01b0319169055565b6060610a5382610b31565b6001600160a01b0382166000908152602081815260409182902060030180548351818402810184019094528084529091830182828015610abc57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a9e575b50505050509050919050565b6000610ad382610b31565b506001600160a01b039081166000908152602081905260409020600201541690565b6001600160a01b03811660009081526020819052604090205480610b2c576040516304ca820960e41b815260040160405180910390fd5b919050565b6001600160a01b038116600090815260208190526040902054610b67576040516304ca820960e41b815260040160405180910390fd5b50565b610b7381610b31565b6001600160a01b03818116600090815260208190526040902060010154163314610b675760405163d4ed9a1760e01b81526001600160a01b03821660048201526024016102f0565b610ab280610dbe83390190565b80356001600160a01b0381168114610b2c57600080fd5b60008060408385031215610bf257600080fd5b610bfb83610bc8565b946020939093013593505050565b600080600060608486031215610c1e57600080fd5b610c2784610bc8565b9250610c3560208501610bc8565b915060408401358015158114610c4a57600080fd5b809150509250925092565b600060208284031215610c6757600080fd5b610c7082610bc8565b9392505050565b60008060408385031215610c8a57600080fd5b610c9383610bc8565b9150610ca160208401610bc8565b90509250929050565b600060208284031215610cbc57600080fd5b5035919050565b60008060408385031215610cd657600080fd5b82359150610ca160208401610bc8565b6020808252825182820181905260009190848201906040850190845b81811015610d275783516001600160a01b031683529284019291840191600101610d02565b50909695505050505050565b634e487b7160e01b600052603260045260246000fd5b600082821015610d6957634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052603160045260246000fd5b6001600160f81b031994909416845260609290921b6bffffffffffffffffffffffff19166001840152601583015260358201526055019056fe60a060405234801561001057600080fd5b5033608052608051610a8261003060003960006102100152610a826000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634ce34aa214610051578063899e104c146100815780638df25d9214610094578063c4e8fcb5146100a7575b600080fd5b61006461005f36600461085c565b6100bc565b6040516001600160e01b0319909116815260200160405180910390f35b61006461008f3660046108e3565b610136565b6100646100a236600461094f565b6101bc565b6100ba6100b53660046109a1565b610205565b005b3360009081526020819052604081205460ff166100ec57604051636821b7df60e01b815260040160405180910390fd5b8160005b81811015610125573685858381811061010b5761010b6109dd565b905060c00201905061011c816102af565b506001016100f0565b50632671a55160e11b949350505050565b3360009081526020819052604081205460ff1661016657604051636821b7df60e01b815260040160405180910390fd5b8360005b8181101561019f5736878783818110610185576101856109dd565b905060c002019050610196816102af565b5060010161016a565b506101aa848461041b565b50632267841360e21b95945050505050565b3360009081526020819052604081205460ff166101ec57604051636821b7df60e01b815260040160405180910390fd5b6101f6838361041b565b506346f92ec960e11b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461024e576040516336abb4df60e11b815260040160405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527fae63067d43ac07563b7eb8db6595635fc77f1578a2a5ea06ba91b63e2afa37e2910160405180910390a15050565b60016102be6020830183610a09565b60038111156102cf576102cf6109f3565b03610314576103116102e76040830160208401610a31565b6102f76060840160408501610a31565b6103076080850160608601610a31565b8460a00135610565565b50565b60026103236020830183610a09565b6003811115610334576103346109f3565b0361039b578060a0013560011461035e5760405163efcc00b160e01b815260040160405180910390fd5b6103116103716040830160208401610a31565b6103816060840160408501610a31565b6103916080850160608601610a31565b846080013561066b565b60036103aa6020830183610a09565b60038111156103bb576103bb6109f3565b03610402576103116103d36040830160208401610a31565b6103e36060840160408501610a31565b6103f36080850160608601610a31565b84608001358560a0013561072c565b604051631e4cbc7f60e21b815260040160405180910390fd5b808280631759616b60e11b60205260005b83811015610558578235820160208401935060806020820160243760a0810135604081026040018060a00160a452600081610104015260408202610104018160a0850160c4376020830260c00191508160808501351460a0606086013514168285013584141615925082156104ac57633ae8821360e21b60005260046000fd5b923592833b6104ca57632f8aeb3960e11b6000528360045260246000fd5b6000808260206000885af1925082610549573d156105245760203d04915060208104826003028184111561050c57818403600302610200838002868002030401015b5a602082011015610521573d6000803e3d6000fd5b50505b6357e222f160e11b600052836004526080604452608451602001608452602481016000fd5b5050505060018101905061042c565b5050505060806040525050565b6040516323b872dd60e01b600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d1515811661065b5780873b15151661065b57806106465781610625573d156105ff5760203d046020840481600302818311156105e657818303600302610200838002858002030401015b5a6020820110156105fb573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005286600452856024528460445260006064528360845260a46000fd5b639889192360e01b6000528660045285602452846044528360645260846000fd5b632f8aeb3960e11b6000528660045260246000fd5b5050604052505060006060525050565b833b61068657632f8aeb3960e11b6000528360045260246000fd5b6040516323b872dd60e01b6000528360045282602452816044526000806064600080895af18061071d573d156106f75760203d046020830481600302818311156106de57818303600302610200838002858002030401015b5a6020820110156106f3573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b61074757632f8aeb3960e11b6000528460045260246000fd5b60405160805160a05160c051637921219560e11b6000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af1806107f4573d156107cf5760203d046020860481600302818311156107b657818303600302610200838002858002030401015b5a6020820110156107cb573d6000803e3d6000fd5b5050505b63f486bc8760e01b600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b60008083601f84011261082257600080fd5b50813567ffffffffffffffff81111561083a57600080fd5b60208301915083602060c08302850101111561085557600080fd5b9250929050565b6000806020838503121561086f57600080fd5b823567ffffffffffffffff81111561088657600080fd5b61089285828601610810565b90969095509350505050565b60008083601f8401126108b057600080fd5b50813567ffffffffffffffff8111156108c857600080fd5b6020830191508360208260051b850101111561085557600080fd5b600080600080604085870312156108f957600080fd5b843567ffffffffffffffff8082111561091157600080fd5b61091d88838901610810565b9096509450602087013591508082111561093657600080fd5b506109438782880161089e565b95989497509550505050565b6000806020838503121561096257600080fd5b823567ffffffffffffffff81111561097957600080fd5b6108928582860161089e565b80356001600160a01b038116811461099c57600080fd5b919050565b600080604083850312156109b457600080fd5b6109bd83610985565b9150602083013580151581146109d257600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060208284031215610a1b57600080fd5b813560048110610a2a57600080fd5b9392505050565b600060208284031215610a4357600080fd5b610a2a8261098556fea2646970667358221220154e5730b5c069ee38eba91c086614ce04b3f3b36831b234f43b61e7a2786e1e64736f6c634300080d0033a264697066735822122009587551e24ff5186da562c4939a97a7092a1495ce8f8007d2ac8225473ae9f364736f6c634300080d003360a060405234801561001057600080fd5b5033608052608051610a8261003060003960006102100152610a826000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634ce34aa214610051578063899e104c146100815780638df25d9214610094578063c4e8fcb5146100a7575b600080fd5b61006461005f36600461085c565b6100bc565b6040516001600160e01b0319909116815260200160405180910390f35b61006461008f3660046108e3565b610136565b6100646100a236600461094f565b6101bc565b6100ba6100b53660046109a1565b610205565b005b3360009081526020819052604081205460ff166100ec57604051636821b7df60e01b815260040160405180910390fd5b8160005b81811015610125573685858381811061010b5761010b6109dd565b905060c00201905061011c816102af565b506001016100f0565b50632671a55160e11b949350505050565b3360009081526020819052604081205460ff1661016657604051636821b7df60e01b815260040160405180910390fd5b8360005b8181101561019f5736878783818110610185576101856109dd565b905060c002019050610196816102af565b5060010161016a565b506101aa848461041b565b50632267841360e21b95945050505050565b3360009081526020819052604081205460ff166101ec57604051636821b7df60e01b815260040160405180910390fd5b6101f6838361041b565b506346f92ec960e11b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461024e576040516336abb4df60e11b815260040160405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527fae63067d43ac07563b7eb8db6595635fc77f1578a2a5ea06ba91b63e2afa37e2910160405180910390a15050565b60016102be6020830183610a09565b60038111156102cf576102cf6109f3565b03610314576103116102e76040830160208401610a31565b6102f76060840160408501610a31565b6103076080850160608601610a31565b8460a00135610565565b50565b60026103236020830183610a09565b6003811115610334576103346109f3565b0361039b578060a0013560011461035e5760405163efcc00b160e01b815260040160405180910390fd5b6103116103716040830160208401610a31565b6103816060840160408501610a31565b6103916080850160608601610a31565b846080013561066b565b60036103aa6020830183610a09565b60038111156103bb576103bb6109f3565b03610402576103116103d36040830160208401610a31565b6103e36060840160408501610a31565b6103f36080850160608601610a31565b84608001358560a0013561072c565b604051631e4cbc7f60e21b815260040160405180910390fd5b808280631759616b60e11b60205260005b83811015610558578235820160208401935060806020820160243760a0810135604081026040018060a00160a452600081610104015260408202610104018160a0850160c4376020830260c00191508160808501351460a0606086013514168285013584141615925082156104ac57633ae8821360e21b60005260046000fd5b923592833b6104ca57632f8aeb3960e11b6000528360045260246000fd5b6000808260206000885af1925082610549573d156105245760203d04915060208104826003028184111561050c57818403600302610200838002868002030401015b5a602082011015610521573d6000803e3d6000fd5b50505b6357e222f160e11b600052836004526080604452608451602001608452602481016000fd5b5050505060018101905061042c565b5050505060806040525050565b6040516323b872dd60e01b600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d1515811661065b5780873b15151661065b57806106465781610625573d156105ff5760203d046020840481600302818311156105e657818303600302610200838002858002030401015b5a6020820110156105fb573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005286600452856024528460445260006064528360845260a46000fd5b639889192360e01b6000528660045285602452846044528360645260846000fd5b632f8aeb3960e11b6000528660045260246000fd5b5050604052505060006060525050565b833b61068657632f8aeb3960e11b6000528360045260246000fd5b6040516323b872dd60e01b6000528360045282602452816044526000806064600080895af18061071d573d156106f75760203d046020830481600302818311156106de57818303600302610200838002858002030401015b5a6020820110156106f3573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b61074757632f8aeb3960e11b6000528460045260246000fd5b60405160805160a05160c051637921219560e11b6000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af1806107f4573d156107cf5760203d046020860481600302818311156107b657818303600302610200838002858002030401015b5a6020820110156107cb573d6000803e3d6000fd5b5050505b63f486bc8760e01b600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b60008083601f84011261082257600080fd5b50813567ffffffffffffffff81111561083a57600080fd5b60208301915083602060c08302850101111561085557600080fd5b9250929050565b6000806020838503121561086f57600080fd5b823567ffffffffffffffff81111561088657600080fd5b61089285828601610810565b90969095509350505050565b60008083601f8401126108b057600080fd5b50813567ffffffffffffffff8111156108c857600080fd5b6020830191508360208260051b850101111561085557600080fd5b600080600080604085870312156108f957600080fd5b843567ffffffffffffffff8082111561091157600080fd5b61091d88838901610810565b9096509450602087013591508082111561093657600080fd5b506109438782880161089e565b95989497509550505050565b6000806020838503121561096257600080fd5b823567ffffffffffffffff81111561097957600080fd5b6108928582860161089e565b80356001600160a01b038116811461099c57600080fd5b919050565b600080604083850312156109b457600080fd5b6109bd83610985565b9150602083013580151581146109d257600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060208284031215610a1b57600080fd5b813560048110610a2a57600080fd5b9392505050565b600060208284031215610a4357600080fd5b610a2a8261098556fea2646970667358221220154e5730b5c069ee38eba91c086614ce04b3f3b36831b234f43b61e7a2786e1e64736f6c634300080d0033",
              "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x20 PUSH1 0x20 DUP3 ADD PUSH2 0x88 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD DUP2 SUB DUP3 MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND PUSH1 0x40 MSTORE POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x80 DUP2 DUP2 MSTORE POP POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH1 0x40 MLOAD PUSH2 0x54 SWAP1 PUSH2 0x88 JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0x74 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODEHASH PUSH1 0xA0 MSTORE POP PUSH2 0x95 JUMP JUMPDEST PUSH2 0xAB2 DUP1 PUSH2 0x197B DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH2 0x18A5 PUSH2 0xD6 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x148 ADD MSTORE DUP2 DUP2 PUSH2 0x805 ADD MSTORE PUSH2 0x8AE ADD MSTORE PUSH1 0x0 DUP2 DUP2 PUSH2 0x125 ADD MSTORE DUP2 DUP2 PUSH2 0x7AD ADD MSTORE PUSH2 0x869 ADD MSTORE PUSH2 0x18A5 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 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6D435421 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x7B37E561 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x7B37E561 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x8B9E028B EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x906C87CC EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x93790F44 EQ PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6D435421 EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x6E9BFD9F EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x794593BC EQ PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x14AFD79E GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x14AFD79E EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x33BC8572 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0x4E3F9580 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x51710E45 EQ PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x27CC764 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0xA96AD39 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0x13AD9CAB EQ PUSH2 0x172 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0xBDF JUMP JUMPDEST PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 DUP2 MSTORE PUSH32 0x0 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH2 0x116 JUMP JUMPDEST PUSH2 0x185 PUSH2 0x180 CALLDATASIZE PUSH1 0x4 PUSH2 0xC09 JUMP JUMPDEST PUSH2 0x343 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x102 PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0xC55 JUMP JUMPDEST PUSH2 0x553 JUMP JUMPDEST PUSH2 0x1AD PUSH2 0x1A8 CALLDATASIZE PUSH1 0x4 PUSH2 0xC77 JUMP JUMPDEST PUSH2 0x580 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x116 JUMP JUMPDEST PUSH2 0x1D0 PUSH2 0x1CB CALLDATASIZE PUSH1 0x4 PUSH2 0xC55 JUMP JUMPDEST PUSH2 0x5BB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x116 JUMP JUMPDEST PUSH2 0x185 PUSH2 0x1EC CALLDATASIZE PUSH1 0x4 PUSH2 0xC55 JUMP JUMPDEST PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x185 PUSH2 0x1FF CALLDATASIZE PUSH1 0x4 PUSH2 0xC77 JUMP JUMPDEST PUSH2 0x6F5 JUMP JUMPDEST PUSH2 0x217 PUSH2 0x212 CALLDATASIZE PUSH1 0x4 PUSH2 0xCAA JUMP JUMPDEST PUSH2 0x7A1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x116 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x244 CALLDATASIZE PUSH1 0x4 PUSH2 0xCC3 JUMP JUMPDEST PUSH2 0x82C JUMP JUMPDEST PUSH2 0x185 PUSH2 0x257 CALLDATASIZE PUSH1 0x4 PUSH2 0xC55 JUMP JUMPDEST PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x26F PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0xC55 JUMP JUMPDEST PUSH2 0xA48 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x116 SWAP2 SWAP1 PUSH2 0xCE6 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0xC55 JUMP JUMPDEST PUSH2 0xAC8 JUMP JUMPDEST PUSH2 0x1D0 PUSH2 0x29D CALLDATASIZE PUSH1 0x4 PUSH2 0xC55 JUMP JUMPDEST PUSH2 0xAF5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AD DUP4 PUSH2 0xB31 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD DUP1 DUP4 LT PUSH2 0x2F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6CEB340B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD DUP5 SWAP1 DUP2 LT PUSH2 0x326 JUMPI PUSH2 0x326 PUSH2 0xD33 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x34C DUP4 PUSH2 0xB6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xC4E8FCB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 ISZERO ISZERO PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND SWAP1 PUSH4 0xC4E8FCB5 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE PUSH1 0x4 DUP5 ADD SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP1 ISZERO ISZERO DUP4 DUP1 ISZERO PUSH2 0x3E6 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x436 JUMPI PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP3 SLOAD SWAP3 DUP2 MSTORE PUSH1 0x4 DUP7 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x54B JUMP JUMPDEST DUP4 ISZERO DUP1 ISZERO PUSH2 0x441 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 PUSH2 0x453 PUSH1 0x1 DUP5 PUSH2 0xD49 JUMP JUMPDEST PUSH1 0x3 DUP6 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x46A SWAP1 PUSH1 0x1 SWAP1 PUSH2 0xD49 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x4F8 JUMPI PUSH1 0x0 DUP6 PUSH1 0x3 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x48A JUMPI PUSH2 0x48A PUSH2 0xD33 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x3 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0x4BB JUMPI PUSH2 0x4BB PUSH2 0xD33 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x4 DUP8 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE JUMPDEST DUP5 PUSH1 0x3 ADD DUP1 SLOAD DUP1 PUSH2 0x50B JUMPI PUSH2 0x50B PUSH2 0xD6E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP3 MSTORE PUSH1 0x4 DUP8 ADD SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x55E DUP3 PUSH2 0xB31 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x58B DUP4 PUSH2 0xB31 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE PUSH1 0x4 SWAP1 SWAP3 ADD SWAP1 SWAP2 MSTORE KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C6 DUP3 PUSH2 0xB31 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x5EE DUP2 PUSH2 0xB31 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD AND CALLER EQ PUSH2 0x636 JUMPI PUSH1 0x40 MLOAD PUSH4 0x88C3A115 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x2F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xD4116AAF34F80123D0229F02F46F776B386A377DBB3404BE10FDF4E81BA9CDB6 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x1 ADD SLOAD SWAP1 MLOAD CALLER SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 SWAP2 PUSH32 0xC8894F26F396CE8C004245C8B7CD1B92103A6E4302FCBAB883987149AC01B7EC SWAP2 LOG4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x6FE DUP3 PUSH2 0xB6A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x730 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA388D263 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x2F0 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xD4116AAF34F80123D0229F02F46F776B386A377DBB3404BE10FDF4E81BA9CDB6 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xFF PUSH1 0xF8 SHL ADDRESS DUP5 PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x7DF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xD84 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODEHASH PUSH32 0x0 EQ SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 SWAP1 SHR CALLER EQ PUSH2 0x852 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32DB94D1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x891 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x20 ADD PUSH2 0xD84 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODEHASH SUB PUSH2 0x901 JUMPI PUSH1 0x40 MLOAD PUSH4 0x31946659 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x2F0 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x90E SWAP1 PUSH2 0xBBB JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0x92E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP6 DUP9 AND SWAP6 SWAP1 SWAP6 OR SWAP1 SWAP5 SSTORE SWAP3 DUP7 SWAP1 SSTORE DUP1 MLOAD SWAP2 DUP3 MSTORE SWAP2 DUP2 ADD DUP6 SWAP1 MSTORE PUSH32 0x4397AF6128D529B8AE0442F99DB1296D5136062597A15BBC61C1B2A6431A7D15 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP2 PUSH1 0x0 SWAP2 DUP5 AND SWAP1 PUSH32 0xC8894F26F396CE8C004245C8B7CD1B92103A6E4302FCBAB883987149AC01B7EC SWAP1 DUP4 SWAP1 LOG4 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9E8 DUP2 PUSH2 0xB6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xD4116AAF34F80123D0229F02F46F776B386A377DBB3404BE10FDF4E81BA9CDB6 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA53 DUP3 PUSH2 0xB31 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xABC JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA9E JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD3 DUP3 PUSH2 0xB31 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0xB2C JUMPI PUSH1 0x40 MLOAD PUSH4 0x4CA8209 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xB67 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4CA8209 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xB73 DUP2 PUSH2 0xB31 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD AND CALLER EQ PUSH2 0xB67 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD4ED9A17 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x2F0 JUMP JUMPDEST PUSH2 0xAB2 DUP1 PUSH2 0xDBE DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBFB DUP4 PUSH2 0xBC8 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 0xC1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC27 DUP5 PUSH2 0xBC8 JUMP JUMPDEST SWAP3 POP PUSH2 0xC35 PUSH1 0x20 DUP6 ADD PUSH2 0xBC8 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xC4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC70 DUP3 PUSH2 0xBC8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC93 DUP4 PUSH2 0xBC8 JUMP JUMPDEST SWAP2 POP PUSH2 0xCA1 PUSH1 0x20 DUP5 ADD PUSH2 0xBC8 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0xCA1 PUSH1 0x20 DUP5 ADD PUSH2 0xBC8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD27 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xD02 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xD69 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x60 SWAP3 SWAP1 SWAP3 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 DUP5 ADD MSTORE PUSH1 0x15 DUP4 ADD MSTORE PUSH1 0x35 DUP3 ADD MSTORE PUSH1 0x55 ADD SWAP1 JUMP INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLER PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH2 0xA82 PUSH2 0x30 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x210 ADD MSTORE PUSH2 0xA82 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 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4CE34AA2 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x899E104C EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x8DF25D92 EQ PUSH2 0x94 JUMPI DUP1 PUSH4 0xC4E8FCB5 EQ PUSH2 0xA7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x85C JUMP JUMPDEST PUSH2 0xBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0x8F CALLDATASIZE PUSH1 0x4 PUSH2 0x8E3 JUMP JUMPDEST PUSH2 0x136 JUMP JUMPDEST PUSH2 0x64 PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x94F JUMP JUMPDEST PUSH2 0x1BC JUMP JUMPDEST PUSH2 0xBA PUSH2 0xB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x9A1 JUMP JUMPDEST PUSH2 0x205 JUMP JUMPDEST STOP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xEC JUMPI PUSH1 0x40 MLOAD PUSH4 0x6821B7DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x125 JUMPI CALLDATASIZE DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x10B JUMPI PUSH2 0x10B PUSH2 0x9DD JUMP JUMPDEST SWAP1 POP PUSH1 0xC0 MUL ADD SWAP1 POP PUSH2 0x11C DUP2 PUSH2 0x2AF JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xF0 JUMP JUMPDEST POP PUSH4 0x2671A551 PUSH1 0xE1 SHL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x166 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6821B7DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x19F JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x185 JUMPI PUSH2 0x185 PUSH2 0x9DD JUMP JUMPDEST SWAP1 POP PUSH1 0xC0 MUL ADD SWAP1 POP PUSH2 0x196 DUP2 PUSH2 0x2AF JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x16A JUMP JUMPDEST POP PUSH2 0x1AA DUP5 DUP5 PUSH2 0x41B JUMP JUMPDEST POP PUSH4 0x22678413 PUSH1 0xE2 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1EC JUMPI PUSH1 0x40 MLOAD PUSH4 0x6821B7DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F6 DUP4 DUP4 PUSH2 0x41B JUMP JUMPDEST POP PUSH4 0x46F92EC9 PUSH1 0xE1 SHL SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x24E JUMPI PUSH1 0x40 MLOAD PUSH4 0x36ABB4DF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE PUSH32 0xAE63067D43AC07563B7EB8DB6595635FC77F1578A2A5EA06BA91B63E2AFA37E2 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2BE PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2CF JUMPI PUSH2 0x2CF PUSH2 0x9F3 JUMP JUMPDEST SUB PUSH2 0x314 JUMPI PUSH2 0x311 PUSH2 0x2E7 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x2F7 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x307 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xA31 JUMP JUMPDEST DUP5 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x565 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 PUSH2 0x323 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x334 JUMPI PUSH2 0x334 PUSH2 0x9F3 JUMP JUMPDEST SUB PUSH2 0x39B JUMPI DUP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH1 0x1 EQ PUSH2 0x35E JUMPI PUSH1 0x40 MLOAD PUSH4 0xEFCC00B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x311 PUSH2 0x371 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x381 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x391 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xA31 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x66B JUMP JUMPDEST PUSH1 0x3 PUSH2 0x3AA PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3BB JUMPI PUSH2 0x3BB PUSH2 0x9F3 JUMP JUMPDEST SUB PUSH2 0x402 JUMPI PUSH2 0x311 PUSH2 0x3D3 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x3E3 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x3F3 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xA31 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD DUP6 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x72C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1E4CBC7F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 DUP1 PUSH4 0x1759616B PUSH1 0xE1 SHL PUSH1 0x20 MSTORE PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x558 JUMPI DUP3 CALLDATALOAD DUP3 ADD PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x80 PUSH1 0x20 DUP3 ADD PUSH1 0x24 CALLDATACOPY PUSH1 0xA0 DUP2 ADD CALLDATALOAD PUSH1 0x40 DUP2 MUL PUSH1 0x40 ADD DUP1 PUSH1 0xA0 ADD PUSH1 0xA4 MSTORE PUSH1 0x0 DUP2 PUSH2 0x104 ADD MSTORE PUSH1 0x40 DUP3 MUL PUSH2 0x104 ADD DUP2 PUSH1 0xA0 DUP6 ADD PUSH1 0xC4 CALLDATACOPY PUSH1 0x20 DUP4 MUL PUSH1 0xC0 ADD SWAP2 POP DUP2 PUSH1 0x80 DUP6 ADD CALLDATALOAD EQ PUSH1 0xA0 PUSH1 0x60 DUP7 ADD CALLDATALOAD EQ AND DUP3 DUP6 ADD CALLDATALOAD DUP5 EQ AND ISZERO SWAP3 POP DUP3 ISZERO PUSH2 0x4AC JUMPI PUSH4 0x3AE88213 PUSH1 0xE2 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST SWAP3 CALLDATALOAD SWAP3 DUP4 EXTCODESIZE PUSH2 0x4CA JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x20 PUSH1 0x0 DUP9 GAS CALL SWAP3 POP DUP3 PUSH2 0x549 JUMPI RETURNDATASIZE ISZERO PUSH2 0x524 JUMPI PUSH1 0x20 RETURNDATASIZE DIV SWAP2 POP PUSH1 0x20 DUP2 DIV DUP3 PUSH1 0x3 MUL DUP2 DUP5 GT ISZERO PUSH2 0x50C JUMPI DUP2 DUP5 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP7 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x521 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMPDEST PUSH4 0x57E222F1 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x80 PUSH1 0x44 MSTORE PUSH1 0x84 MLOAD PUSH1 0x20 ADD PUSH1 0x84 MSTORE PUSH1 0x24 DUP2 ADD PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x42C JUMP JUMPDEST POP POP POP POP PUSH1 0x80 PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x65B JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x65B JUMPI DUP1 PUSH2 0x646 JUMPI DUP2 PUSH2 0x625 JUMPI RETURNDATASIZE ISZERO PUSH2 0x5FF JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x5E6 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x5FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x98891923 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x686 JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x71D JUMPI RETURNDATASIZE ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x6DE JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x6F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x747 JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH4 0x79212195 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0x7F4 JUMPI RETURNDATASIZE ISZERO PUSH2 0x7CF JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x7B6 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x7CB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x83A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0xC0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x86F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x892 DUP6 DUP3 DUP7 ADD PUSH2 0x810 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x8B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8C8 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 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x911 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x91D DUP9 DUP4 DUP10 ADD PUSH2 0x810 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x943 DUP8 DUP3 DUP9 ADD PUSH2 0x89E JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x962 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x979 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x892 DUP6 DUP3 DUP7 ADD PUSH2 0x89E JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x99C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9BD DUP4 PUSH2 0x985 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x9D2 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 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0xA2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA2A DUP3 PUSH2 0x985 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ISZERO 0x4E JUMPI ADDRESS 0xB5 0xC0 PUSH10 0xEE38EBA91C086614CE04 0xB3 RETURN 0xB3 PUSH9 0x31B234F43B61E7A278 PUSH15 0x1E64736F6C634300080D0033A26469 PUSH17 0x66735822122009587551E24FF5186DA562 0xC4 SWAP4 SWAP11 SWAP8 0xA7 MULMOD 0x2A EQ SWAP6 0xCE DUP16 DUP1 SMOD 0xD2 0xAC DUP3 0x25 SELFBALANCE GASPRICE 0xE9 RETURN PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLER PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH2 0xA82 PUSH2 0x30 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x210 ADD MSTORE PUSH2 0xA82 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 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4CE34AA2 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x899E104C EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x8DF25D92 EQ PUSH2 0x94 JUMPI DUP1 PUSH4 0xC4E8FCB5 EQ PUSH2 0xA7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x85C JUMP JUMPDEST PUSH2 0xBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0x8F CALLDATASIZE PUSH1 0x4 PUSH2 0x8E3 JUMP JUMPDEST PUSH2 0x136 JUMP JUMPDEST PUSH2 0x64 PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x94F JUMP JUMPDEST PUSH2 0x1BC JUMP JUMPDEST PUSH2 0xBA PUSH2 0xB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x9A1 JUMP JUMPDEST PUSH2 0x205 JUMP JUMPDEST STOP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xEC JUMPI PUSH1 0x40 MLOAD PUSH4 0x6821B7DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x125 JUMPI CALLDATASIZE DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x10B JUMPI PUSH2 0x10B PUSH2 0x9DD JUMP JUMPDEST SWAP1 POP PUSH1 0xC0 MUL ADD SWAP1 POP PUSH2 0x11C DUP2 PUSH2 0x2AF JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xF0 JUMP JUMPDEST POP PUSH4 0x2671A551 PUSH1 0xE1 SHL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x166 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6821B7DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x19F JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x185 JUMPI PUSH2 0x185 PUSH2 0x9DD JUMP JUMPDEST SWAP1 POP PUSH1 0xC0 MUL ADD SWAP1 POP PUSH2 0x196 DUP2 PUSH2 0x2AF JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x16A JUMP JUMPDEST POP PUSH2 0x1AA DUP5 DUP5 PUSH2 0x41B JUMP JUMPDEST POP PUSH4 0x22678413 PUSH1 0xE2 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1EC JUMPI PUSH1 0x40 MLOAD PUSH4 0x6821B7DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F6 DUP4 DUP4 PUSH2 0x41B JUMP JUMPDEST POP PUSH4 0x46F92EC9 PUSH1 0xE1 SHL SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x24E JUMPI PUSH1 0x40 MLOAD PUSH4 0x36ABB4DF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE PUSH32 0xAE63067D43AC07563B7EB8DB6595635FC77F1578A2A5EA06BA91B63E2AFA37E2 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2BE PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2CF JUMPI PUSH2 0x2CF PUSH2 0x9F3 JUMP JUMPDEST SUB PUSH2 0x314 JUMPI PUSH2 0x311 PUSH2 0x2E7 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x2F7 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x307 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xA31 JUMP JUMPDEST DUP5 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x565 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 PUSH2 0x323 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x334 JUMPI PUSH2 0x334 PUSH2 0x9F3 JUMP JUMPDEST SUB PUSH2 0x39B JUMPI DUP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH1 0x1 EQ PUSH2 0x35E JUMPI PUSH1 0x40 MLOAD PUSH4 0xEFCC00B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x311 PUSH2 0x371 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x381 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x391 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xA31 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x66B JUMP JUMPDEST PUSH1 0x3 PUSH2 0x3AA PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3BB JUMPI PUSH2 0x3BB PUSH2 0x9F3 JUMP JUMPDEST SUB PUSH2 0x402 JUMPI PUSH2 0x311 PUSH2 0x3D3 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x3E3 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x3F3 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xA31 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD DUP6 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x72C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1E4CBC7F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 DUP1 PUSH4 0x1759616B PUSH1 0xE1 SHL PUSH1 0x20 MSTORE PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x558 JUMPI DUP3 CALLDATALOAD DUP3 ADD PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x80 PUSH1 0x20 DUP3 ADD PUSH1 0x24 CALLDATACOPY PUSH1 0xA0 DUP2 ADD CALLDATALOAD PUSH1 0x40 DUP2 MUL PUSH1 0x40 ADD DUP1 PUSH1 0xA0 ADD PUSH1 0xA4 MSTORE PUSH1 0x0 DUP2 PUSH2 0x104 ADD MSTORE PUSH1 0x40 DUP3 MUL PUSH2 0x104 ADD DUP2 PUSH1 0xA0 DUP6 ADD PUSH1 0xC4 CALLDATACOPY PUSH1 0x20 DUP4 MUL PUSH1 0xC0 ADD SWAP2 POP DUP2 PUSH1 0x80 DUP6 ADD CALLDATALOAD EQ PUSH1 0xA0 PUSH1 0x60 DUP7 ADD CALLDATALOAD EQ AND DUP3 DUP6 ADD CALLDATALOAD DUP5 EQ AND ISZERO SWAP3 POP DUP3 ISZERO PUSH2 0x4AC JUMPI PUSH4 0x3AE88213 PUSH1 0xE2 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST SWAP3 CALLDATALOAD SWAP3 DUP4 EXTCODESIZE PUSH2 0x4CA JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x20 PUSH1 0x0 DUP9 GAS CALL SWAP3 POP DUP3 PUSH2 0x549 JUMPI RETURNDATASIZE ISZERO PUSH2 0x524 JUMPI PUSH1 0x20 RETURNDATASIZE DIV SWAP2 POP PUSH1 0x20 DUP2 DIV DUP3 PUSH1 0x3 MUL DUP2 DUP5 GT ISZERO PUSH2 0x50C JUMPI DUP2 DUP5 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP7 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x521 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMPDEST PUSH4 0x57E222F1 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x80 PUSH1 0x44 MSTORE PUSH1 0x84 MLOAD PUSH1 0x20 ADD PUSH1 0x84 MSTORE PUSH1 0x24 DUP2 ADD PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x42C JUMP JUMPDEST POP POP POP POP PUSH1 0x80 PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x65B JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x65B JUMPI DUP1 PUSH2 0x646 JUMPI DUP2 PUSH2 0x625 JUMPI RETURNDATASIZE ISZERO PUSH2 0x5FF JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x5E6 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x5FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x98891923 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x686 JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x71D JUMPI RETURNDATASIZE ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x6DE JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x6F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x747 JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH4 0x79212195 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0x7F4 JUMPI RETURNDATASIZE ISZERO PUSH2 0x7CF JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x7B6 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x7CB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x83A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0xC0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x86F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x892 DUP6 DUP3 DUP7 ADD PUSH2 0x810 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x8B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8C8 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 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x911 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x91D DUP9 DUP4 DUP10 ADD PUSH2 0x810 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x943 DUP8 DUP3 DUP9 ADD PUSH2 0x89E JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x962 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x979 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x892 DUP6 DUP3 DUP7 ADD PUSH2 0x89E JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x99C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9BD DUP4 PUSH2 0x985 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x9D2 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 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0xA2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA2A DUP3 PUSH2 0x985 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ISZERO 0x4E JUMPI ADDRESS 0xB5 0xC0 PUSH10 0xEE38EBA91C086614CE04 0xB3 RETURN 0xB3 PUSH9 0x31B234F43B61E7A278 PUSH15 0x1E64736F6C634300080D0033000000 ",
              "sourceMap": "556:18447:3:-:0;;;1121:448;;;;;;;;;-1:-1:-1;1262:26:3;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1252:37;;;;;;1222:67;;;;;;1360:19;1409:1;1401:10;;1382:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1533:29:3;;1504:58;;-1:-1:-1;556:18447:3;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@_assertCallerIsConduitOwner_1422": {
                  "entryPoint": 2922,
                  "id": 1422,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_assertConduitExists_1443": {
                  "entryPoint": 2865,
                  "id": 1443,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@acceptOwnership_1150": {
                  "entryPoint": 1509,
                  "id": 1150,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@cancelOwnershipTransfer_1093": {
                  "entryPoint": 2527,
                  "id": 1093,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@createConduit_896": {
                  "entryPoint": 2092,
                  "id": 896,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getChannelStatus_1294": {
                  "entryPoint": 1408,
                  "id": 1294,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getChannel_1358": {
                  "entryPoint": 674,
                  "id": 1358,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "@getChannels_1380": {
                  "entryPoint": 2632,
                  "id": 1380,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getConduitCodeHashes_1398": {
                  "entryPoint": null,
                  "id": 1398,
                  "parameterSlots": 0,
                  "returnSlots": 2
                },
                "@getConduit_1246": {
                  "entryPoint": 1953,
                  "id": 1246,
                  "parameterSlots": 1,
                  "returnSlots": 2
                },
                "@getKey_1199": {
                  "entryPoint": 2805,
                  "id": 1199,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getPotentialOwner_1267": {
                  "entryPoint": 2760,
                  "id": 1267,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getTotalChannels_1316": {
                  "entryPoint": 1467,
                  "id": 1316,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@ownerOf_1171": {
                  "entryPoint": 1363,
                  "id": 1171,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@transferOwnership_1067": {
                  "entryPoint": 1781,
                  "id": 1067,
                  "parameterSlots": 2,
                  "returnSlots": 0
                },
                "@updateChannel_1029": {
                  "entryPoint": 835,
                  "id": 1029,
                  "parameterSlots": 3,
                  "returnSlots": 0
                },
                "abi_decode_address": {
                  "entryPoint": 3016,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address": {
                  "entryPoint": 3157,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_addresst_address": {
                  "entryPoint": 3191,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_addresst_addresst_bool": {
                  "entryPoint": 3081,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 3
                },
                "abi_decode_tuple_t_addresst_uint256": {
                  "entryPoint": 3039,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 3242,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_address": {
                  "entryPoint": 3267,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "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": 3460,
                  "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_bool__to_t_address_t_bool__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": {
                  "entryPoint": 3302,
                  "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_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "checked_sub_t_uint256": {
                  "entryPoint": 3401,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "panic_error_0x31": {
                  "entryPoint": 3438,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "panic_error_0x32": {
                  "entryPoint": 3379,
                  "id": null,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:4959:45",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:45",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "63:124:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "73:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "95:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "82:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "82:20:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "73:5:45"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "165:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "174:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "177:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "167:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "167:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "167:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "124:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "135:5:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "150:3:45",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "155:1:45",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "146:3:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "146:11:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "159:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "142:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "142:19:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "131:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "131:31:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "121:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "121:42:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "114:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "114:50:45"
                              },
                              "nodeType": "YulIf",
                              "src": "111:70:45"
                            }
                          ]
                        },
                        "name": "abi_decode_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "offset",
                            "nodeType": "YulTypedName",
                            "src": "42:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "53:5:45",
                            "type": ""
                          }
                        ],
                        "src": "14:173:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "279:167:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "325:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "334:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "337:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "327:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "327:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "327:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "300:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "309:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "296:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "296:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "321:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "292:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "292:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "289:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "350:39:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "379:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "360:18:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "360:29:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "350:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "398:42:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "425:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "436:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "421:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "421:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "408:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "408:32:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "398:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "237:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "248:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "260:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "268:6:45",
                            "type": ""
                          }
                        ],
                        "src": "192:254:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "552:102:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "562:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "574:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "585:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "570:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "570:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "562:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "604:9:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "619:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "635:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "640:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "631:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "631:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "644:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "627:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "627:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "615:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "615:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "597:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "597:51:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "597:51:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "521:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "532:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "543:4:45",
                            "type": ""
                          }
                        ],
                        "src": "451:203:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "788:119:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "798:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "810:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "821:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "806:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "806:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "798:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "840:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "851:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "833:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "833:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "833:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "878:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "889:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "874:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "874:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "894:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "867:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "867:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "867:34:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32__to_t_bytes32_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "749:9:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "760:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "768:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "779:4:45",
                            "type": ""
                          }
                        ],
                        "src": "659:248:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1013:320:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1059:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1068:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1071:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1061:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1061:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1061:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1034:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1043:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1030:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1030:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1055:2:45",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1026:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1026:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "1023:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1084:39:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1113:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1094:18:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1094:29:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1084:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1132:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1165:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1176:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1161:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1161:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1142:18:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1142:38:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1132:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1189:45:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1219:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1230:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1215:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1215:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1202:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1202:32:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "1193:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1287:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1296:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1299:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1289:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1289:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1289:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "1256:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "1277:5:45"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "1270:6:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1270:13:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1263:6:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1263:21:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "1253:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1253:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "1246:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1246:40:45"
                              },
                              "nodeType": "YulIf",
                              "src": "1243:60:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1312:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1322:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1312:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_addresst_bool",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "963:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "974:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "986:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "994:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1002:6:45",
                            "type": ""
                          }
                        ],
                        "src": "912:421:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1408:116:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1454:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1463:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1466:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1456:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1456:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1456:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1429:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1438:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1425:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1425:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1450:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1421:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1421:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "1418:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1479:39:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1508:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1489:18:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1489:29:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1479:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1374:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1385:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1397:6:45",
                            "type": ""
                          }
                        ],
                        "src": "1338:186:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1616:173:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1662:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1671:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "1674:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "1664:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1664:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "1664:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "1637:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1646:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "1633:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1633:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1658:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "1629:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1629:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "1626:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1687:39:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1716:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1697:18:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1697:29:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "1687:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1735:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1768:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1779:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1764:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1764:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "1745:18:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1745:38:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1735:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_addresst_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1574:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "1585:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1597:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1605:6:45",
                            "type": ""
                          }
                        ],
                        "src": "1529:260:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1889:92:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1899:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1911:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1922:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1907:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1907:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1899:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1941:9:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "1966:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "1959:6:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1959:14:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "1952:6:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1952:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1934:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1934:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1934:41:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1858:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1869:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1880:4:45",
                            "type": ""
                          }
                        ],
                        "src": "1794:187:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2087:76:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2097:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2109:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2120:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2105:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2105:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2097:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2139:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "2150:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2132:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2132:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2132:25:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2056:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2067:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2078:4:45",
                            "type": ""
                          }
                        ],
                        "src": "1986:177:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2238:110:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2284:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2293:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2296:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2286:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2286:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2286:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2259:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2268:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2255:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2255:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2280:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2251:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2251:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "2248:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2309:33:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2332:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2319:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2319:23:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2309:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2204:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2215:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2227:6:45",
                            "type": ""
                          }
                        ],
                        "src": "2168:180:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2476:161:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "2486:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2498:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2509:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2494:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2494:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "2486:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2528:9:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "2543:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2559:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2564:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "2555:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2555:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2568:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "2551:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2551:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2539:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2539:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2521:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2521:51:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2521:51:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2592:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2603:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2588:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2588:18:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "2622:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "2615:6:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2615:14:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "2608:6:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2608:22:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2581:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2581:50:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2581:50:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2437:9:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2448:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2456:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "2467:4:45",
                            "type": ""
                          }
                        ],
                        "src": "2353:284:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2729:167:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2775:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2784:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2787:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "2777:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2777:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "2777:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "2750:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2759:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "2746:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2746:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2771:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2742:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2742:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "2739:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2800:33:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "2823:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2810:12:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2810:23:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "2800:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2842:48:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "2875:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2886:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2871:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2871:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_decode_address",
                                  "nodeType": "YulIdentifier",
                                  "src": "2852:18:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2852:38:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "2842:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_address",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "2687:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "2698:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "2710:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "2718:6:45",
                            "type": ""
                          }
                        ],
                        "src": "2642:254:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3052:507:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3062:12:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3072:2:45",
                                "type": "",
                                "value": "32"
                              },
                              "variables": [
                                {
                                  "name": "_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3066:2:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3083:32:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3101:9:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3112:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3097:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3097:18:45"
                              },
                              "variables": [
                                {
                                  "name": "tail_1",
                                  "nodeType": "YulTypedName",
                                  "src": "3087:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3131:9:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3142:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3124:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3124:21:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3124:21:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3154:17:45",
                              "value": {
                                "name": "tail_1",
                                "nodeType": "YulIdentifier",
                                "src": "3165:6:45"
                              },
                              "variables": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulTypedName",
                                  "src": "3158:3:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3180:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3200:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "3194:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3194:13:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "3184:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "tail_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3223:6:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3231:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3216:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3216:22:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3216:22:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3247:25:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3258:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3269:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3254:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3254:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "3247:3:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3281:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3299:6:45"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "3307:2:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3295:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3295:15:45"
                              },
                              "variables": [
                                {
                                  "name": "srcPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "3285:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "3319:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "3328:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "3323:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3387:146:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "3408:3:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "srcPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3423:6:45"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "3417:5:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3417:13:45"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "3440:3:45",
                                                      "type": "",
                                                      "value": "160"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "3445:1:45",
                                                      "type": "",
                                                      "value": "1"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "shl",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3436:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "3436:11:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "3449:1:45",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "3432:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "3432:19:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "3413:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3413:39:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3401:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3401:52:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3401:52:45"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3466:19:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "pos",
                                          "nodeType": "YulIdentifier",
                                          "src": "3477:3:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3482:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3473:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3473:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3466:3:45"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3498:25:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "srcPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "3512:6:45"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "3520:2:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3508:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3508:15:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "srcPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3498:6:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "3349:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "3352:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3346:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3346:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "3360:18:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3362:14:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "3371:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3374:1:45",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3367:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3367:9:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "3362:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "3342:3:45",
                                "statements": []
                              },
                              "src": "3338:195:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3542:11:45",
                              "value": {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "3550:3:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3542:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3021:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3032:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3043:4:45",
                            "type": ""
                          }
                        ],
                        "src": "2901:658:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3665:76:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3675:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3687:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3698:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3683:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3683:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "3675:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "3717:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "3728:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3710:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3710:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3710:25:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "3634:9:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "3645:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "3656:4:45",
                            "type": ""
                          }
                        ],
                        "src": "3564:177:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3778:95:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3795:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3802:3:45",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3807:10:45",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "3798:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3798:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3788:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3788:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3788:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3835:1:45",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3838:4:45",
                                    "type": "",
                                    "value": "0x32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3828:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3828:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3828:15:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3859:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3862:4:45",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "3852:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3852:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3852:15:45"
                            }
                          ]
                        },
                        "name": "panic_error_0x32",
                        "nodeType": "YulFunctionDefinition",
                        "src": "3746:127:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3927:173:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "3957:111:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "3978:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "3985:3:45",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "3990:10:45",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "3981:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3981:20:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3971:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3971:31:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3971:31:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4022:1:45",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4025:4:45",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "4015:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4015:15:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4015:15:45"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4050:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4053:4:45",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "4043:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4043:15:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4043:15:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "3943:1:45"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "3946:1:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3940:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3940:8:45"
                              },
                              "nodeType": "YulIf",
                              "src": "3937:131:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4077:17:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "4089:1:45"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "4092:1:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "4085:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4085:9:45"
                              },
                              "variableNames": [
                                {
                                  "name": "diff",
                                  "nodeType": "YulIdentifier",
                                  "src": "4077:4:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_sub_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "3909:1:45",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "3912:1:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "diff",
                            "nodeType": "YulTypedName",
                            "src": "3918:4:45",
                            "type": ""
                          }
                        ],
                        "src": "3878:222:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4137:95:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4154:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4161:3:45",
                                        "type": "",
                                        "value": "224"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4166:10:45",
                                        "type": "",
                                        "value": "0x4e487b71"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "4157:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4157:20:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4147:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4147:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4147:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4194:1:45",
                                    "type": "",
                                    "value": "4"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4197:4:45",
                                    "type": "",
                                    "value": "0x31"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4187:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4187:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4187:15:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4218:1:45",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4221:4:45",
                                    "type": "",
                                    "value": "0x24"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "4211:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4211:15:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4211:15:45"
                            }
                          ]
                        },
                        "name": "panic_error_0x31",
                        "nodeType": "YulFunctionDefinition",
                        "src": "4105:127:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4438:240:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4455:3:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4464:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4476:3:45",
                                            "type": "",
                                            "value": "248"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4481:3:45",
                                            "type": "",
                                            "value": "255"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "4472:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4472:13:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4460:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4460:26:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4448:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4448:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4448:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4507:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4512:1:45",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4503:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4503:11:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4524:2:45",
                                            "type": "",
                                            "value": "96"
                                          },
                                          {
                                            "name": "value1",
                                            "nodeType": "YulIdentifier",
                                            "src": "4528:6:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "shl",
                                          "nodeType": "YulIdentifier",
                                          "src": "4520:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4520:15:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4541:26:45",
                                            "type": "",
                                            "value": "0xffffffffffffffffffffffff"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nodeType": "YulIdentifier",
                                          "src": "4537:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4537:31:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4516:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4516:53:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4496:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4496:74:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4496:74:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4590:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4595:2:45",
                                        "type": "",
                                        "value": "21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4586:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4586:12:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "4600:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4579:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4579:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4579:28:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4627:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4632:2:45",
                                        "type": "",
                                        "value": "53"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4623:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4623:12:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "4637:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4616:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4616:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4616:28:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "4653:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4664:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4669:2:45",
                                    "type": "",
                                    "value": "85"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4660:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4660:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "4653:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "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",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4390:3:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "4395:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "4403:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4411:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4419:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4430:3:45",
                            "type": ""
                          }
                        ],
                        "src": "4237:441:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4812:145:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4822:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4834:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4845:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4830:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4830:18:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "4822:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "4864:9:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value0",
                                        "nodeType": "YulIdentifier",
                                        "src": "4879:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4895:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "4900:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "4891:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4891:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "4904:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "4887:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4887:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "4875:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4875:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4857:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4857:51:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4857:51:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "4928:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4939:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4924:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4924:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "4944:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4917:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4917:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4917:34:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "4773:9:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "4784:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "4792:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "4803:4:45",
                            "type": ""
                          }
                        ],
                        "src": "4683:274:45"
                      }
                    ]
                  },
                  "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_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        value1 := calldataload(add(headStart, 32))\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_bytes32_t_bytes32__to_t_bytes32_t_bytes32__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_decode_tuple_t_addresst_addresst_bool(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 := calldataload(add(headStart, 64))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\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_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 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_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_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address_t_bool__to_t_address_t_bool__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), iszero(iszero(value1)))\n    }\n    function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_address(add(headStart, 32))\n    }\n    function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\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, _1)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n            pos := add(pos, _1)\n            srcPtr := add(srcPtr, _1)\n        }\n        tail := pos\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 panic_error_0x32()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x32)\n        revert(0, 0x24)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        if lt(x, y)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        diff := sub(x, y)\n    }\n    function panic_error_0x31()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x31)\n        revert(0, 0x24)\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_t_address_t_bytes32__to_t_address_t_bytes32__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": 45,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {
                "757": [
                  {
                    "length": 32,
                    "start": 293
                  },
                  {
                    "length": 32,
                    "start": 1965
                  },
                  {
                    "length": 32,
                    "start": 2153
                  }
                ],
                "759": [
                  {
                    "length": 32,
                    "start": 328
                  },
                  {
                    "length": 32,
                    "start": 2053
                  },
                  {
                    "length": 32,
                    "start": 2222
                  }
                ]
              },
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636d4354211161008c5780637b37e561116100665780637b37e561146102495780638b9e028b1461025c578063906c87cc1461027c57806393790f441461028f57600080fd5b80636d435421146101f15780636e9bfd9f14610204578063794593bc1461023657600080fd5b806314afd79e116100c857806314afd79e1461018757806333bc85721461019a5780634e3f9580146101bd57806351710e45146101de57600080fd5b8063027cc764146100ef5780630a96ad391461011f57806313ad9cab14610172575b600080fd5b6101026100fd366004610bdf565b6102a2565b6040516001600160a01b0390911681526020015b60405180910390f35b604080517f000000000000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000602082015201610116565b610185610180366004610c09565b610343565b005b610102610195366004610c55565b610553565b6101ad6101a8366004610c77565b610580565b6040519015158152602001610116565b6101d06101cb366004610c55565b6105bb565b604051908152602001610116565b6101856101ec366004610c55565b6105e5565b6101856101ff366004610c77565b6106f5565b610217610212366004610caa565b6107a1565b604080516001600160a01b039093168352901515602083015201610116565b610102610244366004610cc3565b61082c565b610185610257366004610c55565b6109df565b61026f61026a366004610c55565b610a48565b6040516101169190610ce6565b61010261028a366004610c55565b610ac8565b6101d061029d366004610c55565b610af5565b60006102ad83610b31565b6001600160a01b0383166000908152602081905260409020600301548083106102f957604051636ceb340b60e01b81526001600160a01b03851660048201526024015b60405180910390fd5b6001600160a01b038416600090815260208190526040902060030180548490811061032657610326610d33565b6000918252602090912001546001600160a01b0316949350505050565b61034c83610b6a565b60405163c4e8fcb560e01b81526001600160a01b038381166004830152821515602483015284169063c4e8fcb590604401600060405180830381600087803b15801561039757600080fd5b505af11580156103ab573d6000803e3d6000fd5b505050506001600160a01b038381166000908152602081815260408083209386168352600484019091529020548015158380156103e6575080155b15610436576003830180546001810182556000828152602080822090920180546001600160a01b0319166001600160a01b038a16908117909155925492815260048601909152604090205561054b565b831580156104415750805b1561054b576000610453600184610d49565b600385015490915060009061046a90600190610d49565b90508181146104f857600085600301828154811061048a5761048a610d33565b6000918252602090912001546003870180546001600160a01b0390921692508291859081106104bb576104bb610d33565b600091825260208083209190910180546001600160a01b0319166001600160a01b0394851617905592909116815260048701909152604090208490555b8460030180548061050b5761050b610d6e565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0389168252600487019052604081205550505b505050505050565b600061055e82610b31565b506001600160a01b039081166000908152602081905260409020600101541690565b600061058b83610b31565b506001600160a01b0391821660009081526020818152604080832093909416825260049092019091522054151590565b60006105c682610b31565b506001600160a01b031660009081526020819052604090206003015490565b6105ee81610b31565b6001600160a01b03818116600090815260208190526040902060020154163314610636576040516388c3a11560e01b81526001600160a01b03821660048201526024016102f0565b6040516000906001600160a01b038316907fd4116aaf34f80123d0229f02f46f776b386a377dbb3404be10fdf4e81ba9cdb6908390a36001600160a01b038082166000818152602081905260408082206002810180546001600160a01b031916905560010154905133949190911692917fc8894f26f396ce8c004245c8b7cd1b92103a6e4302fcbab883987149ac01b7ec91a46001600160a01b0316600090815260208190526040902060010180546001600160a01b03191633179055565b6106fe82610b6a565b6001600160a01b0381166107305760405163a388d26360e01b81526001600160a01b03831660048201526024016102f0565b806001600160a01b0316826001600160a01b03167fd4116aaf34f80123d0229f02f46f776b386a377dbb3404be10fdf4e81ba9cdb660405160405180910390a36001600160a01b03918216600090815260208190526040902060020180546001600160a01b03191691909216179055565b60008060ff60f81b30847f00000000000000000000000000000000000000000000000000000000000000006040516020016107df9493929190610d84565b60408051601f198184030181529190528051602090910120936001600160a01b0385163f7f0000000000000000000000000000000000000000000000000000000000000000149350915050565b6000606083901c3314610852576040516332db94d160e21b815260040160405180910390fd5b604051610891906001600160f81b031990309086907f000000000000000000000000000000000000000000000000000000000000000090602001610d84565b6040516020818303038152906040528051906020012060001c90507f0000000000000000000000000000000000000000000000000000000000000000816001600160a01b03163f0361090157604051633194665960e11b81526001600160a01b03821660048201526024016102f0565b8260405161090e90610bbb565b8190604051809103906000f590508015801561092e573d6000803e3d6000fd5b50506001600160a01b03818116600081815260208181526040918290206001810180546001600160a01b031916958816959095179094559286905580519182529181018590527f4397af6128d529b8ae0442f99db1296d5136062597a15bbc61c1b2a6431a7d15910160405180910390a16040516001600160a01b03808416916000918416907fc8894f26f396ce8c004245c8b7cd1b92103a6e4302fcbab883987149ac01b7ec908390a492915050565b6109e881610b6a565b6040516000906001600160a01b038316907fd4116aaf34f80123d0229f02f46f776b386a377dbb3404be10fdf4e81ba9cdb6908390a36001600160a01b0316600090815260208190526040902060020180546001600160a01b0319169055565b6060610a5382610b31565b6001600160a01b0382166000908152602081815260409182902060030180548351818402810184019094528084529091830182828015610abc57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a9e575b50505050509050919050565b6000610ad382610b31565b506001600160a01b039081166000908152602081905260409020600201541690565b6001600160a01b03811660009081526020819052604090205480610b2c576040516304ca820960e41b815260040160405180910390fd5b919050565b6001600160a01b038116600090815260208190526040902054610b67576040516304ca820960e41b815260040160405180910390fd5b50565b610b7381610b31565b6001600160a01b03818116600090815260208190526040902060010154163314610b675760405163d4ed9a1760e01b81526001600160a01b03821660048201526024016102f0565b610ab280610dbe83390190565b80356001600160a01b0381168114610b2c57600080fd5b60008060408385031215610bf257600080fd5b610bfb83610bc8565b946020939093013593505050565b600080600060608486031215610c1e57600080fd5b610c2784610bc8565b9250610c3560208501610bc8565b915060408401358015158114610c4a57600080fd5b809150509250925092565b600060208284031215610c6757600080fd5b610c7082610bc8565b9392505050565b60008060408385031215610c8a57600080fd5b610c9383610bc8565b9150610ca160208401610bc8565b90509250929050565b600060208284031215610cbc57600080fd5b5035919050565b60008060408385031215610cd657600080fd5b82359150610ca160208401610bc8565b6020808252825182820181905260009190848201906040850190845b81811015610d275783516001600160a01b031683529284019291840191600101610d02565b50909695505050505050565b634e487b7160e01b600052603260045260246000fd5b600082821015610d6957634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052603160045260246000fd5b6001600160f81b031994909416845260609290921b6bffffffffffffffffffffffff19166001840152601583015260358201526055019056fe60a060405234801561001057600080fd5b5033608052608051610a8261003060003960006102100152610a826000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80634ce34aa214610051578063899e104c146100815780638df25d9214610094578063c4e8fcb5146100a7575b600080fd5b61006461005f36600461085c565b6100bc565b6040516001600160e01b0319909116815260200160405180910390f35b61006461008f3660046108e3565b610136565b6100646100a236600461094f565b6101bc565b6100ba6100b53660046109a1565b610205565b005b3360009081526020819052604081205460ff166100ec57604051636821b7df60e01b815260040160405180910390fd5b8160005b81811015610125573685858381811061010b5761010b6109dd565b905060c00201905061011c816102af565b506001016100f0565b50632671a55160e11b949350505050565b3360009081526020819052604081205460ff1661016657604051636821b7df60e01b815260040160405180910390fd5b8360005b8181101561019f5736878783818110610185576101856109dd565b905060c002019050610196816102af565b5060010161016a565b506101aa848461041b565b50632267841360e21b95945050505050565b3360009081526020819052604081205460ff166101ec57604051636821b7df60e01b815260040160405180910390fd5b6101f6838361041b565b506346f92ec960e11b92915050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461024e576040516336abb4df60e11b815260040160405180910390fd5b6001600160a01b03821660008181526020818152604091829020805460ff19168515159081179091558251938452908301527fae63067d43ac07563b7eb8db6595635fc77f1578a2a5ea06ba91b63e2afa37e2910160405180910390a15050565b60016102be6020830183610a09565b60038111156102cf576102cf6109f3565b03610314576103116102e76040830160208401610a31565b6102f76060840160408501610a31565b6103076080850160608601610a31565b8460a00135610565565b50565b60026103236020830183610a09565b6003811115610334576103346109f3565b0361039b578060a0013560011461035e5760405163efcc00b160e01b815260040160405180910390fd5b6103116103716040830160208401610a31565b6103816060840160408501610a31565b6103916080850160608601610a31565b846080013561066b565b60036103aa6020830183610a09565b60038111156103bb576103bb6109f3565b03610402576103116103d36040830160208401610a31565b6103e36060840160408501610a31565b6103f36080850160608601610a31565b84608001358560a0013561072c565b604051631e4cbc7f60e21b815260040160405180910390fd5b808280631759616b60e11b60205260005b83811015610558578235820160208401935060806020820160243760a0810135604081026040018060a00160a452600081610104015260408202610104018160a0850160c4376020830260c00191508160808501351460a0606086013514168285013584141615925082156104ac57633ae8821360e21b60005260046000fd5b923592833b6104ca57632f8aeb3960e11b6000528360045260246000fd5b6000808260206000885af1925082610549573d156105245760203d04915060208104826003028184111561050c57818403600302610200838002868002030401015b5a602082011015610521573d6000803e3d6000fd5b50505b6357e222f160e11b600052836004526080604452608451602001608452602481016000fd5b5050505060018101905061042c565b5050505060806040525050565b6040516323b872dd60e01b600052836004528260245281604452602060006064600080895af1803d15601f3d116001600051141617163d1515811661065b5780873b15151661065b57806106465781610625573d156105ff5760203d046020840481600302818311156105e657818303600302610200838002858002030401015b5a6020820110156105fb573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005286600452856024528460445260006064528360845260a46000fd5b639889192360e01b6000528660045285602452846044528360645260846000fd5b632f8aeb3960e11b6000528660045260246000fd5b5050604052505060006060525050565b833b61068657632f8aeb3960e11b6000528360045260246000fd5b6040516323b872dd60e01b6000528360045282602452816044526000806064600080895af18061071d573d156106f75760203d046020830481600302818311156106de57818303600302610200838002858002030401015b5a6020820110156106f3573d6000803e3d6000fd5b5050505b63f486bc8760e01b60005285600452846024528360445282606452600160845260a46000fd5b50604052505060006060525050565b843b61074757632f8aeb3960e11b6000528460045260246000fd5b60405160805160a05160c051637921219560e11b6000528760045286602452856044528460645260a0608452600060a45260008060c46000808d5af1806107f4573d156107cf5760203d046020860481600302818311156107b657818303600302610200838002858002030401015b5a6020820110156107cb573d6000803e3d6000fd5b5050505b63f486bc8760e01b600052896004528860245287604452866064528560845260a46000fd5b5060809290925260a05260c05260405250506000606052505050565b60008083601f84011261082257600080fd5b50813567ffffffffffffffff81111561083a57600080fd5b60208301915083602060c08302850101111561085557600080fd5b9250929050565b6000806020838503121561086f57600080fd5b823567ffffffffffffffff81111561088657600080fd5b61089285828601610810565b90969095509350505050565b60008083601f8401126108b057600080fd5b50813567ffffffffffffffff8111156108c857600080fd5b6020830191508360208260051b850101111561085557600080fd5b600080600080604085870312156108f957600080fd5b843567ffffffffffffffff8082111561091157600080fd5b61091d88838901610810565b9096509450602087013591508082111561093657600080fd5b506109438782880161089e565b95989497509550505050565b6000806020838503121561096257600080fd5b823567ffffffffffffffff81111561097957600080fd5b6108928582860161089e565b80356001600160a01b038116811461099c57600080fd5b919050565b600080604083850312156109b457600080fd5b6109bd83610985565b9150602083013580151581146109d257600080fd5b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600060208284031215610a1b57600080fd5b813560048110610a2a57600080fd5b9392505050565b600060208284031215610a4357600080fd5b610a2a8261098556fea2646970667358221220154e5730b5c069ee38eba91c086614ce04b3f3b36831b234f43b61e7a2786e1e64736f6c634300080d0033a264697066735822122009587551e24ff5186da562c4939a97a7092a1495ce8f8007d2ac8225473ae9f364736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6D435421 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x7B37E561 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x7B37E561 EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x8B9E028B EQ PUSH2 0x25C JUMPI DUP1 PUSH4 0x906C87CC EQ PUSH2 0x27C JUMPI DUP1 PUSH4 0x93790F44 EQ PUSH2 0x28F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x6D435421 EQ PUSH2 0x1F1 JUMPI DUP1 PUSH4 0x6E9BFD9F EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x794593BC EQ PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x14AFD79E GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x14AFD79E EQ PUSH2 0x187 JUMPI DUP1 PUSH4 0x33BC8572 EQ PUSH2 0x19A JUMPI DUP1 PUSH4 0x4E3F9580 EQ PUSH2 0x1BD JUMPI DUP1 PUSH4 0x51710E45 EQ PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x27CC764 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0xA96AD39 EQ PUSH2 0x11F JUMPI DUP1 PUSH4 0x13AD9CAB EQ PUSH2 0x172 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x102 PUSH2 0xFD CALLDATASIZE PUSH1 0x4 PUSH2 0xBDF JUMP JUMPDEST PUSH2 0x2A2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x0 DUP2 MSTORE PUSH32 0x0 PUSH1 0x20 DUP3 ADD MSTORE ADD PUSH2 0x116 JUMP JUMPDEST PUSH2 0x185 PUSH2 0x180 CALLDATASIZE PUSH1 0x4 PUSH2 0xC09 JUMP JUMPDEST PUSH2 0x343 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x102 PUSH2 0x195 CALLDATASIZE PUSH1 0x4 PUSH2 0xC55 JUMP JUMPDEST PUSH2 0x553 JUMP JUMPDEST PUSH2 0x1AD PUSH2 0x1A8 CALLDATASIZE PUSH1 0x4 PUSH2 0xC77 JUMP JUMPDEST PUSH2 0x580 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x116 JUMP JUMPDEST PUSH2 0x1D0 PUSH2 0x1CB CALLDATASIZE PUSH1 0x4 PUSH2 0xC55 JUMP JUMPDEST PUSH2 0x5BB JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x116 JUMP JUMPDEST PUSH2 0x185 PUSH2 0x1EC CALLDATASIZE PUSH1 0x4 PUSH2 0xC55 JUMP JUMPDEST PUSH2 0x5E5 JUMP JUMPDEST PUSH2 0x185 PUSH2 0x1FF CALLDATASIZE PUSH1 0x4 PUSH2 0xC77 JUMP JUMPDEST PUSH2 0x6F5 JUMP JUMPDEST PUSH2 0x217 PUSH2 0x212 CALLDATASIZE PUSH1 0x4 PUSH2 0xCAA JUMP JUMPDEST PUSH2 0x7A1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND DUP4 MSTORE SWAP1 ISZERO ISZERO PUSH1 0x20 DUP4 ADD MSTORE ADD PUSH2 0x116 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x244 CALLDATASIZE PUSH1 0x4 PUSH2 0xCC3 JUMP JUMPDEST PUSH2 0x82C JUMP JUMPDEST PUSH2 0x185 PUSH2 0x257 CALLDATASIZE PUSH1 0x4 PUSH2 0xC55 JUMP JUMPDEST PUSH2 0x9DF JUMP JUMPDEST PUSH2 0x26F PUSH2 0x26A CALLDATASIZE PUSH1 0x4 PUSH2 0xC55 JUMP JUMPDEST PUSH2 0xA48 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x116 SWAP2 SWAP1 PUSH2 0xCE6 JUMP JUMPDEST PUSH2 0x102 PUSH2 0x28A CALLDATASIZE PUSH1 0x4 PUSH2 0xC55 JUMP JUMPDEST PUSH2 0xAC8 JUMP JUMPDEST PUSH2 0x1D0 PUSH2 0x29D CALLDATASIZE PUSH1 0x4 PUSH2 0xC55 JUMP JUMPDEST PUSH2 0xAF5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AD DUP4 PUSH2 0xB31 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD DUP1 DUP4 LT PUSH2 0x2F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6CEB340B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD DUP5 SWAP1 DUP2 LT PUSH2 0x326 JUMPI PUSH2 0x326 PUSH2 0xD33 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH2 0x34C DUP4 PUSH2 0xB6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xC4E8FCB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP3 ISZERO ISZERO PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND SWAP1 PUSH4 0xC4E8FCB5 SWAP1 PUSH1 0x44 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP7 AND DUP4 MSTORE PUSH1 0x4 DUP5 ADD SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP1 ISZERO ISZERO DUP4 DUP1 ISZERO PUSH2 0x3E6 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x436 JUMPI PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP3 SLOAD SWAP3 DUP2 MSTORE PUSH1 0x4 DUP7 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SSTORE PUSH2 0x54B JUMP JUMPDEST DUP4 ISZERO DUP1 ISZERO PUSH2 0x441 JUMPI POP DUP1 JUMPDEST ISZERO PUSH2 0x54B JUMPI PUSH1 0x0 PUSH2 0x453 PUSH1 0x1 DUP5 PUSH2 0xD49 JUMP JUMPDEST PUSH1 0x3 DUP6 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x46A SWAP1 PUSH1 0x1 SWAP1 PUSH2 0xD49 JUMP JUMPDEST SWAP1 POP DUP2 DUP2 EQ PUSH2 0x4F8 JUMPI PUSH1 0x0 DUP6 PUSH1 0x3 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x48A JUMPI PUSH2 0x48A PUSH2 0xD33 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH1 0x3 DUP8 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP3 POP DUP3 SWAP2 DUP6 SWAP1 DUP2 LT PUSH2 0x4BB JUMPI PUSH2 0x4BB PUSH2 0xD33 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP2 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND OR SWAP1 SSTORE SWAP3 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x4 DUP8 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP5 SWAP1 SSTORE JUMPDEST DUP5 PUSH1 0x3 ADD DUP1 SLOAD DUP1 PUSH2 0x50B JUMPI PUSH2 0x50B PUSH2 0xD6E JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 DUP4 ADD PUSH1 0x0 NOT SWAP1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE SWAP1 SWAP3 ADD SWAP1 SWAP3 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP3 MSTORE PUSH1 0x4 DUP8 ADD SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SSTORE POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x55E DUP3 PUSH2 0xB31 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x58B DUP4 PUSH2 0xB31 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE PUSH1 0x4 SWAP1 SWAP3 ADD SWAP1 SWAP2 MSTORE KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5C6 DUP3 PUSH2 0xB31 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x3 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x5EE DUP2 PUSH2 0xB31 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD AND CALLER EQ PUSH2 0x636 JUMPI PUSH1 0x40 MLOAD PUSH4 0x88C3A115 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x2F0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xD4116AAF34F80123D0229F02F46F776B386A377DBB3404BE10FDF4E81BA9CDB6 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE PUSH1 0x1 ADD SLOAD SWAP1 MLOAD CALLER SWAP5 SWAP2 SWAP1 SWAP2 AND SWAP3 SWAP2 PUSH32 0xC8894F26F396CE8C004245C8B7CD1B92103A6E4302FCBAB883987149AC01B7EC SWAP2 LOG4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x6FE DUP3 PUSH2 0xB6A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x730 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA388D263 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x2F0 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xD4116AAF34F80123D0229F02F46F776B386A377DBB3404BE10FDF4E81BA9CDB6 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xFF PUSH1 0xF8 SHL ADDRESS DUP5 PUSH32 0x0 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x7DF SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0xD84 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EXTCODEHASH PUSH32 0x0 EQ SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 SWAP1 SHR CALLER EQ PUSH2 0x852 JUMPI PUSH1 0x40 MLOAD PUSH4 0x32DB94D1 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x891 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT SWAP1 ADDRESS SWAP1 DUP7 SWAP1 PUSH32 0x0 SWAP1 PUSH1 0x20 ADD PUSH2 0xD84 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x0 SHR SWAP1 POP PUSH32 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODEHASH SUB PUSH2 0x901 JUMPI PUSH1 0x40 MLOAD PUSH4 0x31946659 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x2F0 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x90E SWAP1 PUSH2 0xBBB JUMP JUMPDEST DUP2 SWAP1 PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE2 SWAP1 POP DUP1 ISZERO DUP1 ISZERO PUSH2 0x92E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP6 DUP9 AND SWAP6 SWAP1 SWAP6 OR SWAP1 SWAP5 SSTORE SWAP3 DUP7 SWAP1 SSTORE DUP1 MLOAD SWAP2 DUP3 MSTORE SWAP2 DUP2 ADD DUP6 SWAP1 MSTORE PUSH32 0x4397AF6128D529B8AE0442F99DB1296D5136062597A15BBC61C1B2A6431A7D15 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP2 PUSH1 0x0 SWAP2 DUP5 AND SWAP1 PUSH32 0xC8894F26F396CE8C004245C8B7CD1B92103A6E4302FCBAB883987149AC01B7EC SWAP1 DUP4 SWAP1 LOG4 SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x9E8 DUP2 PUSH2 0xB6A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xD4116AAF34F80123D0229F02F46F776B386A377DBB3404BE10FDF4E81BA9CDB6 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA53 DUP3 PUSH2 0xB31 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 PUSH1 0x3 ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xABC JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xA9E JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAD3 DUP3 PUSH2 0xB31 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP1 PUSH2 0xB2C JUMPI PUSH1 0x40 MLOAD PUSH4 0x4CA8209 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xB67 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4CA8209 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH2 0xB73 DUP2 PUSH2 0xB31 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD AND CALLER EQ PUSH2 0xB67 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD4ED9A17 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0x2F0 JUMP JUMPDEST PUSH2 0xAB2 DUP1 PUSH2 0xDBE DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB2C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xBFB DUP4 PUSH2 0xBC8 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 0xC1E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC27 DUP5 PUSH2 0xBC8 JUMP JUMPDEST SWAP3 POP PUSH2 0xC35 PUSH1 0x20 DUP6 ADD PUSH2 0xBC8 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xC4A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xC67 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC70 DUP3 PUSH2 0xBC8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xC8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xC93 DUP4 PUSH2 0xBC8 JUMP JUMPDEST SWAP2 POP PUSH2 0xCA1 PUSH1 0x20 DUP5 ADD PUSH2 0xBC8 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCBC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH2 0xCA1 PUSH1 0x20 DUP5 ADD PUSH2 0xBC8 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD27 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0xD02 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP3 LT ISZERO PUSH2 0xD69 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SUB SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT SWAP5 SWAP1 SWAP5 AND DUP5 MSTORE PUSH1 0x60 SWAP3 SWAP1 SWAP3 SHL PUSH12 0xFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x1 DUP5 ADD MSTORE PUSH1 0x15 DUP4 ADD MSTORE PUSH1 0x35 DUP3 ADD MSTORE PUSH1 0x55 ADD SWAP1 JUMP INVALID PUSH1 0xA0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLER PUSH1 0x80 MSTORE PUSH1 0x80 MLOAD PUSH2 0xA82 PUSH2 0x30 PUSH1 0x0 CODECOPY PUSH1 0x0 PUSH2 0x210 ADD MSTORE PUSH2 0xA82 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 0x4C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4CE34AA2 EQ PUSH2 0x51 JUMPI DUP1 PUSH4 0x899E104C EQ PUSH2 0x81 JUMPI DUP1 PUSH4 0x8DF25D92 EQ PUSH2 0x94 JUMPI DUP1 PUSH4 0xC4E8FCB5 EQ PUSH2 0xA7 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x64 PUSH2 0x5F CALLDATASIZE PUSH1 0x4 PUSH2 0x85C JUMP JUMPDEST PUSH2 0xBC JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x64 PUSH2 0x8F CALLDATASIZE PUSH1 0x4 PUSH2 0x8E3 JUMP JUMPDEST PUSH2 0x136 JUMP JUMPDEST PUSH2 0x64 PUSH2 0xA2 CALLDATASIZE PUSH1 0x4 PUSH2 0x94F JUMP JUMPDEST PUSH2 0x1BC JUMP JUMPDEST PUSH2 0xBA PUSH2 0xB5 CALLDATASIZE PUSH1 0x4 PUSH2 0x9A1 JUMP JUMPDEST PUSH2 0x205 JUMP JUMPDEST STOP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0xEC JUMPI PUSH1 0x40 MLOAD PUSH4 0x6821B7DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x125 JUMPI CALLDATASIZE DUP6 DUP6 DUP4 DUP2 DUP2 LT PUSH2 0x10B JUMPI PUSH2 0x10B PUSH2 0x9DD JUMP JUMPDEST SWAP1 POP PUSH1 0xC0 MUL ADD SWAP1 POP PUSH2 0x11C DUP2 PUSH2 0x2AF JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0xF0 JUMP JUMPDEST POP PUSH4 0x2671A551 PUSH1 0xE1 SHL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x166 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6821B7DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP4 PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x19F JUMPI CALLDATASIZE DUP8 DUP8 DUP4 DUP2 DUP2 LT PUSH2 0x185 JUMPI PUSH2 0x185 PUSH2 0x9DD JUMP JUMPDEST SWAP1 POP PUSH1 0xC0 MUL ADD SWAP1 POP PUSH2 0x196 DUP2 PUSH2 0x2AF JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x16A JUMP JUMPDEST POP PUSH2 0x1AA DUP5 DUP5 PUSH2 0x41B JUMP JUMPDEST POP PUSH4 0x22678413 PUSH1 0xE2 SHL SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0xFF AND PUSH2 0x1EC JUMPI PUSH1 0x40 MLOAD PUSH4 0x6821B7DF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x1F6 DUP4 DUP4 PUSH2 0x41B JUMP JUMPDEST POP PUSH4 0x46F92EC9 PUSH1 0xE1 SHL SWAP3 SWAP2 POP POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x24E JUMPI PUSH1 0x40 MLOAD PUSH4 0x36ABB4DF PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP6 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP4 DUP5 MSTORE SWAP1 DUP4 ADD MSTORE PUSH32 0xAE63067D43AC07563B7EB8DB6595635FC77F1578A2A5EA06BA91B63E2AFA37E2 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH2 0x2BE PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x2CF JUMPI PUSH2 0x2CF PUSH2 0x9F3 JUMP JUMPDEST SUB PUSH2 0x314 JUMPI PUSH2 0x311 PUSH2 0x2E7 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x2F7 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x307 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xA31 JUMP JUMPDEST DUP5 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x565 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x2 PUSH2 0x323 PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x334 JUMPI PUSH2 0x334 PUSH2 0x9F3 JUMP JUMPDEST SUB PUSH2 0x39B JUMPI DUP1 PUSH1 0xA0 ADD CALLDATALOAD PUSH1 0x1 EQ PUSH2 0x35E JUMPI PUSH1 0x40 MLOAD PUSH4 0xEFCC00B1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x311 PUSH2 0x371 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x381 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x391 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xA31 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x66B JUMP JUMPDEST PUSH1 0x3 PUSH2 0x3AA PUSH1 0x20 DUP4 ADD DUP4 PUSH2 0xA09 JUMP JUMPDEST PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3BB JUMPI PUSH2 0x3BB PUSH2 0x9F3 JUMP JUMPDEST SUB PUSH2 0x402 JUMPI PUSH2 0x311 PUSH2 0x3D3 PUSH1 0x40 DUP4 ADD PUSH1 0x20 DUP5 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x3E3 PUSH1 0x60 DUP5 ADD PUSH1 0x40 DUP6 ADD PUSH2 0xA31 JUMP JUMPDEST PUSH2 0x3F3 PUSH1 0x80 DUP6 ADD PUSH1 0x60 DUP7 ADD PUSH2 0xA31 JUMP JUMPDEST DUP5 PUSH1 0x80 ADD CALLDATALOAD DUP6 PUSH1 0xA0 ADD CALLDATALOAD PUSH2 0x72C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1E4CBC7F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 DUP3 DUP1 PUSH4 0x1759616B PUSH1 0xE1 SHL PUSH1 0x20 MSTORE PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x558 JUMPI DUP3 CALLDATALOAD DUP3 ADD PUSH1 0x20 DUP5 ADD SWAP4 POP PUSH1 0x80 PUSH1 0x20 DUP3 ADD PUSH1 0x24 CALLDATACOPY PUSH1 0xA0 DUP2 ADD CALLDATALOAD PUSH1 0x40 DUP2 MUL PUSH1 0x40 ADD DUP1 PUSH1 0xA0 ADD PUSH1 0xA4 MSTORE PUSH1 0x0 DUP2 PUSH2 0x104 ADD MSTORE PUSH1 0x40 DUP3 MUL PUSH2 0x104 ADD DUP2 PUSH1 0xA0 DUP6 ADD PUSH1 0xC4 CALLDATACOPY PUSH1 0x20 DUP4 MUL PUSH1 0xC0 ADD SWAP2 POP DUP2 PUSH1 0x80 DUP6 ADD CALLDATALOAD EQ PUSH1 0xA0 PUSH1 0x60 DUP7 ADD CALLDATALOAD EQ AND DUP3 DUP6 ADD CALLDATALOAD DUP5 EQ AND ISZERO SWAP3 POP DUP3 ISZERO PUSH2 0x4AC JUMPI PUSH4 0x3AE88213 PUSH1 0xE2 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST SWAP3 CALLDATALOAD SWAP3 DUP4 EXTCODESIZE PUSH2 0x4CA JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH1 0x20 PUSH1 0x0 DUP9 GAS CALL SWAP3 POP DUP3 PUSH2 0x549 JUMPI RETURNDATASIZE ISZERO PUSH2 0x524 JUMPI PUSH1 0x20 RETURNDATASIZE DIV SWAP2 POP PUSH1 0x20 DUP2 DIV DUP3 PUSH1 0x3 MUL DUP2 DUP5 GT ISZERO PUSH2 0x50C JUMPI DUP2 DUP5 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP7 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x521 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP JUMPDEST PUSH4 0x57E222F1 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x80 PUSH1 0x44 MSTORE PUSH1 0x84 MLOAD PUSH1 0x20 ADD PUSH1 0x84 MSTORE PUSH1 0x24 DUP2 ADD PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x42C JUMP JUMPDEST POP POP POP POP PUSH1 0x80 PUSH1 0x40 MSTORE POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x20 PUSH1 0x0 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 RETURNDATASIZE ISZERO PUSH1 0x1F RETURNDATASIZE GT PUSH1 0x1 PUSH1 0x0 MLOAD EQ AND OR AND RETURNDATASIZE ISZERO ISZERO DUP2 AND PUSH2 0x65B JUMPI DUP1 DUP8 EXTCODESIZE ISZERO ISZERO AND PUSH2 0x65B JUMPI DUP1 PUSH2 0x646 JUMPI DUP2 PUSH2 0x625 JUMPI RETURNDATASIZE ISZERO PUSH2 0x5FF JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP5 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x5E6 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x5FB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE PUSH1 0x0 PUSH1 0x64 MSTORE DUP4 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x98891923 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE DUP6 PUSH1 0x24 MSTORE DUP5 PUSH1 0x44 MSTORE DUP4 PUSH1 0x64 MSTORE PUSH1 0x84 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP7 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP4 EXTCODESIZE PUSH2 0x686 JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP4 PUSH1 0x4 MSTORE DUP3 PUSH1 0x24 MSTORE DUP2 PUSH1 0x44 MSTORE PUSH1 0x0 DUP1 PUSH1 0x64 PUSH1 0x0 DUP1 DUP10 GAS CALL DUP1 PUSH2 0x71D JUMPI RETURNDATASIZE ISZERO PUSH2 0x6F7 JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP4 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x6DE JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x6F3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP6 PUSH1 0x4 MSTORE DUP5 PUSH1 0x24 MSTORE DUP4 PUSH1 0x44 MSTORE DUP3 PUSH1 0x64 MSTORE PUSH1 0x1 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP JUMP JUMPDEST DUP5 EXTCODESIZE PUSH2 0x747 JUMPI PUSH4 0x2F8AEB39 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP5 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH4 0x79212195 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE DUP8 PUSH1 0x4 MSTORE DUP7 PUSH1 0x24 MSTORE DUP6 PUSH1 0x44 MSTORE DUP5 PUSH1 0x64 MSTORE PUSH1 0xA0 PUSH1 0x84 MSTORE PUSH1 0x0 PUSH1 0xA4 MSTORE PUSH1 0x0 DUP1 PUSH1 0xC4 PUSH1 0x0 DUP1 DUP14 GAS CALL DUP1 PUSH2 0x7F4 JUMPI RETURNDATASIZE ISZERO PUSH2 0x7CF JUMPI PUSH1 0x20 RETURNDATASIZE DIV PUSH1 0x20 DUP7 DIV DUP2 PUSH1 0x3 MUL DUP2 DUP4 GT ISZERO PUSH2 0x7B6 JUMPI DUP2 DUP4 SUB PUSH1 0x3 MUL PUSH2 0x200 DUP4 DUP1 MUL DUP6 DUP1 MUL SUB DIV ADD ADD JUMPDEST GAS PUSH1 0x20 DUP3 ADD LT ISZERO PUSH2 0x7CB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP JUMPDEST PUSH4 0xF486BC87 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE DUP10 PUSH1 0x4 MSTORE DUP9 PUSH1 0x24 MSTORE DUP8 PUSH1 0x44 MSTORE DUP7 PUSH1 0x64 MSTORE DUP6 PUSH1 0x84 MSTORE PUSH1 0xA4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x80 SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xA0 MSTORE PUSH1 0xC0 MSTORE PUSH1 0x40 MSTORE POP POP PUSH1 0x0 PUSH1 0x60 MSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x822 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x83A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 PUSH1 0xC0 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x86F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x886 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x892 DUP6 DUP3 DUP7 ADD PUSH2 0x810 JUMP JUMPDEST SWAP1 SWAP7 SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x8B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x8C8 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 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x8F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x911 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x91D DUP9 DUP4 DUP10 ADD PUSH2 0x810 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x943 DUP8 DUP3 DUP9 ADD PUSH2 0x89E JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x962 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x979 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x892 DUP6 DUP3 DUP7 ADD PUSH2 0x89E JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x99C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x9B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x9BD DUP4 PUSH2 0x985 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x9D2 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 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA1B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x4 DUP2 LT PUSH2 0xA2A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xA43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA2A DUP3 PUSH2 0x985 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ISZERO 0x4E JUMPI ADDRESS 0xB5 0xC0 PUSH10 0xEE38EBA91C086614CE04 0xB3 RETURN 0xB3 PUSH9 0x31B234F43B61E7A278 PUSH15 0x1E64736F6C634300080D0033A26469 PUSH17 0x66735822122009587551E24FF5186DA562 0xC4 SWAP4 SWAP11 SWAP8 0xA7 MULMOD 0x2A EQ SWAP6 0xCE DUP16 DUP1 SMOD 0xD2 0xAC DUP3 0x25 SELFBALANCE GASPRICE 0xE9 RETURN PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "556:18447:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16021:668;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;615:32:45;;;597:51;;585:2;570:18;16021:668:3;;;;;;;;17514:398;;;;17759:27;833:25:45;;17879:26:3;889:2:45;874:18;;867:34;806:18;17514:398:3;659:248:45;4883:2772:3;;;;;;:::i;:::-;;:::i;:::-;;11029:327;;;;;;:::i;:::-;;:::i;14504:392::-;;;;;;:::i;:::-;;:::i;:::-;;;1959:14:45;;1952:22;1934:41;;1922:2;1907:18;14504:392:3;1794:187:45;15172:374:3;;;;;;:::i;:::-;;:::i;:::-;;;2132:25:45;;;2120:2;2105:18;15172:374:3;1986:177:45;9782:1012:3;;;;;;:::i;:::-;;:::i;8076:713::-;;;;;;:::i;:::-;;:::i;12518:784::-;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;2539:32:45;;;2521:51;;2615:14;;2608:22;2603:2;2588:18;;2581:50;2494:18;12518:784:3;2353:284:45;2328:1828:3;;;;;;:::i;:::-;;:::i;9053:454::-;;;;;;:::i;:::-;;:::i;17064:356::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;13773:374::-;;;;;;:::i;:::-;;:::i;11675:379::-;;;;;;:::i;:::-;;:::i;16021:668::-;16144:15;16230:29;16251:7;16230:20;:29::i;:::-;-1:-1:-1;;;;;16372:18:3;;16348:21;16372:18;;;;;;;;;;:27;;:34;16480:29;;;16476:93;;16532:26;;-1:-1:-1;;;16532:26:3;;-1:-1:-1;;;;;615:32:45;;16532:26:3;;;597:51:45;570:18;;16532:26:3;;;;;;;;16476:93;-1:-1:-1;;;;;16641:18:3;;:9;:18;;;;;;;;;;:27;;:41;;16669:12;;16641:41;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;16641:41:3;;16021:668;-1:-1:-1;;;;16021:668:3:o;4883:2772::-;5089:36;5117:7;5089:27;:36::i;:::-;5187:56;;-1:-1:-1;;;5187:56:3;;-1:-1:-1;;;;;2539:32:45;;;5187:56:3;;;2521:51:45;2615:14;;2608:22;2588:18;;;2581:50;5187:39:3;;;;;2494:18:45;;5187:56:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;5379:18:3;;;5333:43;5379:18;;;;;;;;;;;5533:48;;;;;:39;;;:48;;;;;;5708:24;;;5823:6;:32;;;;;5834:21;5833:22;5823:32;5819:1830;;;5941:26;;;:40;;;;;;;-1:-1:-1;5941:40:3;;;;;;;;;;;;-1:-1:-1;;;;;;5941:40:3;-1:-1:-1;;;;;5941:40:3;;;;;;;;6144:33;;6075:48;;;:39;;;:48;;;;;;:116;5819:1830;;;6213:6;6212:7;:32;;;;;6223:21;6212:32;6208:1441;;;6419:27;6449:23;6471:1;6449:19;:23;:::i;:::-;6595:26;;;:33;6419:53;;-1:-1:-1;6567:25:3;;6595:37;;6631:1;;6595:37;:::i;:::-;6567:65;;6750:19;6729:17;:40;6725:640;;6869:20;6914:17;:26;;6941:17;6914:45;;;;;;;;:::i;:::-;;;;;;;;;;;7076:26;;;:47;;-1:-1:-1;;;;;6914:45:3;;;;-1:-1:-1;6914:45:3;;7103:19;;7076:47;;;;;;:::i;:::-;;;;;;;;;;;;;:62;;-1:-1:-1;;;;;;7076:62:3;-1:-1:-1;;;;;7076:62:3;;;;;;7235:53;;;;;;:39;;;:53;;;;;;:115;;;6725:640;7459:17;:26;;:32;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;7459:32:3;;;;;-1:-1:-1;;;;;;7459:32:3;;;;;;;;;-1:-1:-1;;;;;7590:48:3;;;;:39;;;:48;;;;;7583:55;-1:-1:-1;;6208:1441:3;5001:2654;;;4883:2772;;;:::o;11029:327::-;11127:13;11211:29;11232:7;11211:20;:29::i;:::-;-1:-1:-1;;;;;;11325:18:3;;;:9;:18;;;;;;;;;;:24;;;;;11029:327::o;14504:392::-;14628:11;14710:29;14731:7;14710:20;:29::i;:::-;-1:-1:-1;;;;;;14835:18:3;;;:9;:18;;;;;;;;;;;:49;;;;;;:40;;;;:49;;;;;:54;;;14504:392::o;15172:374::-;15279:21;15371:29;15392:7;15371:20;:29::i;:::-;-1:-1:-1;;;;;;15505:18:3;:9;:18;;;;;;;;;;:27;;:34;;15172:374::o;9782:1012::-;9907:29;9928:7;9907:20;:29::i;:::-;-1:-1:-1;;;;;10043:18:3;;;:9;:18;;;;;;;;;;:33;;;;10029:10;:47;10025:200;;10177:37;;-1:-1:-1;;;10177:37:3;;-1:-1:-1;;;;;615:32:45;;10177:37:3;;;597:51:45;570:18;;10177:37:3;451:203:45;10025:200:3;10319:42;;10358:1;;-1:-1:-1;;;;;10319:42:3;;;;;10358:1;;10319:42;-1:-1:-1;;;;;10446:18:3;;;:9;:18;;;;;;;;;;;:33;;;10439:40;;-1:-1:-1;;;;;;10439:40:3;;;;10626:24;;10571:113;;10664:10;;10626:24;;;;;10446:18;10571:113;;;-1:-1:-1;;;;;10750:18:3;:9;:18;;;;;;;;;;:24;;:37;;-1:-1:-1;;;;;;10750:37:3;10777:10;10750:37;;;9782:1012::o;8076:713::-;8273:36;8301:7;8273:27;:36::i;:::-;-1:-1:-1;;;;;8393:31:3;;8389:108;;8447:39;;-1:-1:-1;;;8447:39:3;;-1:-1:-1;;;;;615:32:45;;8447:39:3;;;597:51:45;570:18;;8447:39:3;451:203:45;8389:108:3;8622:17;-1:-1:-1;;;;;8591:49:3;8613:7;-1:-1:-1;;;;;8591:49:3;;;;;;;;;;;-1:-1:-1;;;;;8729:18:3;;;:9;:18;;;;;;;;;;:33;;:53;;-1:-1:-1;;;;;;8729:53:3;;;;;;;;8076:713::o;12518:784::-;12622:15;12639:11;12916:4;12909:12;;12959:4;12994:10;13034:27;12863:224;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;12863:224:3;;;;;;;;;12828:281;;12863:224;12828:281;;;;;-1:-1:-1;;;;;13248:16:3;;;13268:26;13248:46;;-1:-1:-1;12518:784:3;-1:-1:-1;;12518:784:3:o;2328:1828::-;2444:15;2566:28;;;;2599:10;2558:51;2554:181;;2708:16;;-1:-1:-1;;;2708:16:3;;;;;;;;;;;2554:181;2942:224;;;;-1:-1:-1;;;;;;2988:12:3;3038:4;;3073:10;;3113:27;;2942:224;;;:::i;:::-;;;;;;;;;;;;;2907:281;;;;;;2878:328;;2822:408;;3345:26;3325:7;-1:-1:-1;;;;;3325:16:3;;:46;3321:193;;3474:29;;-1:-1:-1;;;3474:29:3;;-1:-1:-1;;;;;615:32:45;;3474:29:3;;;597:51:45;570:18;;3474:29:3;451:203:45;3321:193:3;3620:10;3601:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;3716:18:3;;;:9;:18;;;;;;;;;;;;:24;;;:39;;-1:-1:-1;;;;;;3716:39:3;;;;;;;;;;;3846:35;;;;3969:31;;4857:51:45;;;4924:18;;;4917:34;;;3969:31:3;;4830:18:45;3969:31:3;;;;;;;4094:55;;-1:-1:-1;;;;;4094:55:3;;;;4132:1;;4094:55;;;;;4132:1;;4094:55;2328:1828;;;;:::o;9053:454::-;9209:36;9237:7;9209:27;:36::i;:::-;9340:42;;9379:1;;-1:-1:-1;;;;;9340:42:3;;;;;9379:1;;9340:42;-1:-1:-1;;;;;9467:18:3;:9;:18;;;;;;;;;;:33;;9460:40;;-1:-1:-1;;;;;;9460:40:3;;;9053:454::o;17064:356::-;17166:25;17262:29;17283:7;17262:20;:29::i;:::-;-1:-1:-1;;;;;17386:18:3;;:9;:18;;;;;;;;;;;;:27;;17375:38;;;;;;;;;;;;;;;;;17386:27;;17375:38;;17386:27;17375:38;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17375:38:3;;;;;;;;;;;;;;;;;;;;;;;17064:356;;;:::o;13773:374::-;13881:22;13974:29;13995:7;13974:20;:29::i;:::-;-1:-1:-1;;;;;;14107:18:3;;;:9;:18;;;;;;;;;;:33;;;;;13773:374::o;11675:379::-;-1:-1:-1;;;;;11893:18:3;;11772;11893;;;;;;;;;;:22;;11975:73;;12026:11;;-1:-1:-1;;;12026:11:3;;;;;;;;;;;11975:73;11675:379;;;:::o;18712:289::-;-1:-1:-1;;;;;18861:18:3;;18895:1;18861:18;;;;;;;;;;:22;18857:138;;18973:11;;-1:-1:-1;;;18973:11:3;;;;;;;;;;;18857:138;18712:289;:::o;18114:424::-;18247:29;18268:7;18247:20;:29::i;:::-;-1:-1:-1;;;;;18381:18:3;;;:9;:18;;;;;;;;;;:24;;;;18367:10;:38;18363:169;;18496:25;;-1:-1:-1;;;18496:25:3;;-1:-1:-1;;;;;615:32:45;;18496:25:3;;;597:51:45;570:18;;18496:25:3;451:203:45;-1:-1:-1;;;;;;;;:::o;14:173:45:-;82:20;;-1:-1:-1;;;;;131:31:45;;121:42;;111:70;;177:1;174;167:12;192:254;260:6;268;321:2;309:9;300:7;296:23;292:32;289:52;;;337:1;334;327:12;289:52;360:29;379:9;360:29;:::i;:::-;350:39;436:2;421:18;;;;408:32;;-1:-1:-1;;;192:254:45:o;912:421::-;986:6;994;1002;1055:2;1043:9;1034:7;1030:23;1026:32;1023:52;;;1071:1;1068;1061:12;1023:52;1094:29;1113:9;1094:29;:::i;:::-;1084:39;;1142:38;1176:2;1165:9;1161:18;1142:38;:::i;:::-;1132:48;;1230:2;1219:9;1215:18;1202:32;1277:5;1270:13;1263:21;1256:5;1253:32;1243:60;;1299:1;1296;1289:12;1243:60;1322:5;1312:15;;;912:421;;;;;:::o;1338:186::-;1397:6;1450:2;1438:9;1429:7;1425:23;1421:32;1418:52;;;1466:1;1463;1456:12;1418:52;1489:29;1508:9;1489:29;:::i;:::-;1479:39;1338:186;-1:-1:-1;;;1338:186:45:o;1529:260::-;1597:6;1605;1658:2;1646:9;1637:7;1633:23;1629:32;1626:52;;;1674:1;1671;1664:12;1626:52;1697:29;1716:9;1697:29;:::i;:::-;1687:39;;1745:38;1779:2;1768:9;1764:18;1745:38;:::i;:::-;1735:48;;1529:260;;;;;:::o;2168:180::-;2227:6;2280:2;2268:9;2259:7;2255:23;2251:32;2248:52;;;2296:1;2293;2286:12;2248:52;-1:-1:-1;2319:23:45;;2168:180;-1:-1:-1;2168:180:45:o;2642:254::-;2710:6;2718;2771:2;2759:9;2750:7;2746:23;2742:32;2739:52;;;2787:1;2784;2777:12;2739:52;2823:9;2810:23;2800:33;;2852:38;2886:2;2875:9;2871:18;2852:38;:::i;2901:658::-;3072:2;3124:21;;;3194:13;;3097:18;;;3216:22;;;3043:4;;3072:2;3295:15;;;;3269:2;3254:18;;;3043:4;3338:195;3352:6;3349:1;3346:13;3338:195;;;3417:13;;-1:-1:-1;;;;;3413:39:45;3401:52;;3508:15;;;;3473:12;;;;3449:1;3367:9;3338:195;;;-1:-1:-1;3550:3:45;;2901:658;-1:-1:-1;;;;;;2901:658:45:o;3746:127::-;3807:10;3802:3;3798:20;3795:1;3788:31;3838:4;3835:1;3828:15;3862:4;3859:1;3852:15;3878:222;3918:4;3946:1;3943;3940:8;3937:131;;;3990:10;3985:3;3981:20;3978:1;3971:31;4025:4;4022:1;4015:15;4053:4;4050:1;4043:15;3937:131;-1:-1:-1;4085:9:45;;3878:222::o;4105:127::-;4166:10;4161:3;4157:20;4154:1;4147:31;4197:4;4194:1;4187:15;4221:4;4218:1;4211:15;4237:441;-1:-1:-1;;;;;;4460:26:45;;;;4448:39;;4524:2;4520:15;;;;-1:-1:-1;;4516:53:45;4512:1;4503:11;;4496:74;4595:2;4586:12;;4579:28;4632:2;4623:12;;4616:28;4669:2;4660:12;;4237:441::o"
            },
            "methodIdentifiers": {
              "acceptOwnership(address)": "51710e45",
              "cancelOwnershipTransfer(address)": "7b37e561",
              "createConduit(bytes32,address)": "794593bc",
              "getChannel(address,uint256)": "027cc764",
              "getChannelStatus(address,address)": "33bc8572",
              "getChannels(address)": "8b9e028b",
              "getConduit(bytes32)": "6e9bfd9f",
              "getConduitCodeHashes()": "0a96ad39",
              "getKey(address)": "93790f44",
              "getPotentialOwner(address)": "906c87cc",
              "getTotalChannels(address)": "4e3f9580",
              "ownerOf(address)": "14afd79e",
              "transferOwnership(address,address)": "6d435421",
              "updateChannel(address,address,bool)": "13ad9cab"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"CallerIsNotNewPotentialOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"CallerIsNotOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"ChannelOutOfRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"ConduitAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCreator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"NewPotentialOwnerIsZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoConduit\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"name\":\"NewConduit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"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\":\"conduit\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newPotentialOwner\",\"type\":\"address\"}],\"name\":\"PotentialOwnerUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"cancelOwnershipTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"createConduit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"channelIndex\",\"type\":\"uint256\"}],\"name\":\"getChannel\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"}],\"name\":\"getChannelStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"getChannels\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"channels\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"name\":\"getConduit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConduitCodeHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"creationCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"runtimeCodeHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"getKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"getPotentialOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"potentialOwner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"getTotalChannels\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalChannels\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newPotentialOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"updateChannel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"CallerIsNotNewPotentialOwner(address)\":[{\"details\":\"Revert with an error when attempting to claim ownership of a conduit      with a caller that is not the current potential owner for the      conduit in question.\"}],\"CallerIsNotOwner(address)\":[{\"details\":\"Revert with an error when attempting to update channels or transfer      ownership of a conduit when the caller is not the owner of the      conduit in question.\"}],\"ChannelOutOfRange(address)\":[{\"details\":\"Revert with an error when attempting to retrieve a channel using an      index that is out of range.\"}],\"ConduitAlreadyExists(address)\":[{\"details\":\"Revert with an error when attempting to create a conduit that      already exists.\"}],\"InvalidCreator()\":[{\"details\":\"Revert with an error when attempting to create a new conduit using a      conduit key where the last twenty bytes of the key do not match the      address of the caller.\"}],\"NewPotentialOwnerIsZeroAddress(address)\":[{\"details\":\"Revert with an error when attempting to register a new potential      owner and supplying the null address.\"}],\"NoConduit()\":[{\"details\":\"Revert with an error when attempting to interact with a conduit that      does not yet exist.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptOwnership(address)\":{\"params\":{\"conduit\":\"The conduit for which to accept ownership.\"}},\"cancelOwnershipTransfer(address)\":{\"params\":{\"conduit\":\"The conduit for which to cancel ownership transfer.\"}},\"constructor\":{\"details\":\"Initialize contract by deploying a conduit and setting the creation      code and runtime code hashes as immutable arguments.\"},\"createConduit(bytes32,address)\":{\"params\":{\"conduitKey\":\"The conduit key used to deploy the conduit. Note that                     the first twenty bytes of the conduit key must match                     the caller of this contract.\",\"initialOwner\":\"The initial owner to set for the new conduit.\"},\"returns\":{\"conduit\":\"The address of the newly deployed conduit.\"}},\"getChannel(address,uint256)\":{\"params\":{\"channelIndex\":\"The index of the channel in question.\",\"conduit\":\"The conduit for which to retrieve the open channel.\"},\"returns\":{\"channel\":\"The open channel, if any, at the specified channel index.\"}},\"getChannelStatus(address,address)\":{\"params\":{\"channel\":\"The channel for which to retrieve the status.\",\"conduit\":\"The conduit for which to retrieve the channel status.\"},\"returns\":{\"isOpen\":\"The status of the channel on the given conduit.\"}},\"getChannels(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve open channels.\"},\"returns\":{\"channels\":\"An array of open channels on the given conduit.\"}},\"getConduit(bytes32)\":{\"params\":{\"conduitKey\":\"The conduit key used to derive the conduit.\"},\"returns\":{\"conduit\":\"The derived address of the conduit.\",\"exists\":\" A boolean indicating whether the derived conduit has been                 deployed or not.\"}},\"getConduitCodeHashes()\":{\"details\":\"Retrieve the conduit creation code and runtime code hashes.\"},\"getKey(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve the associated conduit                key.\"},\"returns\":{\"conduitKey\":\"The conduit key used to deploy the supplied conduit.\"}},\"getPotentialOwner(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve the potential owner.\"},\"returns\":{\"potentialOwner\":\"The potential owner, if any, for the conduit.\"}},\"getTotalChannels(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve the total channel count.\"},\"returns\":{\"totalChannels\":\"The total number of open channels for the conduit.\"}},\"ownerOf(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve the associated owner.\"},\"returns\":{\"owner\":\"The owner of the supplied conduit.\"}},\"transferOwnership(address,address)\":{\"params\":{\"conduit\":\"The conduit for which to initiate ownership transfer.\"}},\"updateChannel(address,address,bool)\":{\"params\":{\"channel\":\"The channel to open or close on the conduit.\",\"conduit\":\"The conduit for which to open or close the channel.\",\"isOpen\":\"A boolean indicating whether to open or close the channel.\"}}},\"title\":\"ConduitController\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOwnership(address)\":{\"notice\":\"Accept ownership of a supplied conduit. Only accounts that the         current owner has set as the new potential owner may call this         function.\"},\"cancelOwnershipTransfer(address)\":{\"notice\":\"Clear the currently set potential owner, if any, from a conduit.         Only the owner of the conduit in question may call this function.\"},\"createConduit(bytes32,address)\":{\"notice\":\"Deploy a new conduit using a supplied conduit key and assigning         an initial owner for the deployed conduit. Note that the first         twenty bytes of the supplied conduit key must match the caller         and that a new conduit cannot be created if one has already been         deployed using the same conduit key.\"},\"getChannel(address,uint256)\":{\"notice\":\"Retrieve an open channel at a specific index for a given conduit.         Note that the index of a channel can change as a result of other         channels being closed on the conduit.\"},\"getChannelStatus(address,address)\":{\"notice\":\"Retrieve the status (either open or closed) of a given channel on         a conduit.\"},\"getChannels(address)\":{\"notice\":\"Retrieve all open channels for a given conduit. Note that calling         this function for a conduit with many channels will revert with         an out-of-gas error.\"},\"getConduit(bytes32)\":{\"notice\":\"Derive the conduit associated with a given conduit key and         determine whether that conduit exists (i.e. whether it has been         deployed).\"},\"getKey(address)\":{\"notice\":\"Retrieve the conduit key for a deployed conduit via reverse         lookup.\"},\"getPotentialOwner(address)\":{\"notice\":\"Retrieve the potential owner, if any, for a given conduit. The         current owner may set a new potential owner via         `transferOwnership` and that owner may then accept ownership of         the conduit in question via `acceptOwnership`.\"},\"getTotalChannels(address)\":{\"notice\":\"Retrieve the total number of open channels for a given conduit.\"},\"ownerOf(address)\":{\"notice\":\"Retrieve the current owner of a deployed conduit.\"},\"transferOwnership(address,address)\":{\"notice\":\"Initiate conduit ownership transfer by assigning a new potential         owner for the given conduit. Once set, the new potential owner         may call `acceptOwnership` to claim ownership of the conduit.         Only the owner of the conduit in question may call this function.\"},\"updateChannel(address,address,bool)\":{\"notice\":\"Open or close a channel on a given conduit, thereby allowing the         specified account to execute transfers against that conduit.         Extreme care must be taken when updating channels, as malicious         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155         tokens where the token holder has granted the conduit approval.         Only the owner of the conduit in question may call this function.\"}},\"notice\":\"ConduitController enables deploying and managing new conduits, or         contracts that allow registered callers (or open \\\"channels\\\") to         transfer approved ERC20/721/1155 tokens on their behalf.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/conduit/ConduitController.sol\":\"ConduitController\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/conduit/Conduit.sol\":{\"keccak256\":\"0x32a5c557f58e717798ee6770bd43f343063fa8c077cd0f5752f7725f4b8168cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bec0b717faaa55a918a2a60aa7a52e5f4e7303c7f9cd73e6ff766b8e6500f55d\",\"dweb:/ipfs/QmdpLscNHaYLKMgcPVQcR6PtB6WuubJk79xWM6k2CiXAkt\"]},\"seaport/contracts/conduit/ConduitController.sol\":{\"keccak256\":\"0x8a71bc2386168fc35665be3475ed03d1446862928854a5894fed1691106187cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4b90619f8ca043856c74a146724ee170a838c6d23f11736f0863f188d5aa2c88\",\"dweb:/ipfs/QmeNHQSQCxt3EWHAQCTYiSDLrokTmeWz6fLhHrUbYqCnU9\"]},\"seaport/contracts/conduit/lib/ConduitEnums.sol\":{\"keccak256\":\"0x3a9ecf77688f97d1b595be27b49fca3eac93e3f91160d79f0f0063c250fd8aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d596c21d5c7c7b47ca14908cbd7add9c06898c500cf47988446f843c0b28cf96\",\"dweb:/ipfs/QmZf12Y7XHwEWvjd2ZbaUFz4NXsWPFGJF6vNg1HECvXV5m\"]},\"seaport/contracts/conduit/lib/ConduitStructs.sol\":{\"keccak256\":\"0xfd2cec45327e9a6ebc02d7efb9daa1cfdabb26eb803e4b2e9b5e82340d92cfed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea7fa97afdf70ab91449e54f9a4f40e9da16292ab87b86e7e975e6d92f573dc3\",\"dweb:/ipfs/QmaRvo6P8YYPYNgcuP4HVV2wqDuVSB1t6AwMe8jMbcQY3F\"]},\"seaport/contracts/interfaces/ConduitControllerInterface.sol\":{\"keccak256\":\"0x86b7ceb6ff7ce653fa7d0d79eeb8b96ec57eedd35f8c87e9838dde6c23f317bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://453fa0365834a50956e513d306371bfb7019124150bf9afd1699599fe6f7852c\",\"dweb:/ipfs/QmXiqKzGdj2A4TsuHtFLTgdLPRFwasbWWibNBRP5cikJod\"]},\"seaport/contracts/interfaces/ConduitInterface.sol\":{\"keccak256\":\"0x6aec074141c2a66f0c06ff006b6b61f5ee3f988c1cee26a51f91e1616af194d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4cda8ec77a8261f3270087331f72443b5dcb686e93297fe9641b757dff108ae1\",\"dweb:/ipfs/QmPuWHXQWuhTUfbe3yB842nS1jRM2iLyJ16rVkDSyLCD2L\"]},\"seaport/contracts/interfaces/TokenTransferrerErrors.sol\":{\"keccak256\":\"0x128fbb0236de5e52c34876c61148e04c12289e92d6bce2270760905617a01b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ed114ea7bf9ce55065d853f0f705eb82cc840672e0c2ab899691ab5703d2e98\",\"dweb:/ipfs/QmXQsajetWBmU7tzjoFm5wyajRKrMMEGXFF7ZQxaH7ZceG\"]},\"seaport/contracts/lib/TokenTransferrer.sol\":{\"keccak256\":\"0xe392cea22226f1b55e35b0295d0cfa156c7764f2509fa416f3946ca748c9605a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddf9b20512bc36f5bbe25f56729aa31a139b1560dfc14beb42d5d09ae8d44b48\",\"dweb:/ipfs/QmSN9GdbtqBcobRSd8kSCxn2GScZhiiAbuxk5djmkatKRD\"]},\"seaport/contracts/lib/TokenTransferrerConstants.sol\":{\"keccak256\":\"0x5ecc368039fd81cc27788a664538ab63f1b5deb9caa8839d9499fadfd1d465cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0e821e5fd5a31cdcaaf334203dd58d80489c1aed2fd2a91a9683a9e342c9653\",\"dweb:/ipfs/QmRKkHF5aLKJ8KrMmMoV9UsCtgtrCQYgeptGK4jKVGM68j\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/interfaces/AbridgedTokenInterfaces.sol": {
        "ERC1155Interface": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "ids",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeBatchTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                },
                {
                  "internalType": "bytes",
                  "name": "data",
                  "type": "bytes"
                }
              ],
              "name": "safeTransferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
              "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/interfaces/AbridgedTokenInterfaces.sol\":\"ERC1155Interface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/AbridgedTokenInterfaces.sol\":{\"keccak256\":\"0x6b4937a65838012d673de632665960836d9b81ce4d90142c02797e4d17361838\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe115b5e3b76cab664b07b242b37221adb36606b114a212798809106c1e0faab\",\"dweb:/ipfs/QmQvEoKtVyYQC5pPoJogvT5yMtumoCffH1Q8BCGLfGzVAM\"]}},\"version\":1}"
        },
        "ERC20Interface": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/interfaces/AbridgedTokenInterfaces.sol\":\"ERC20Interface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/AbridgedTokenInterfaces.sol\":{\"keccak256\":\"0x6b4937a65838012d673de632665960836d9b81ce4d90142c02797e4d17361838\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe115b5e3b76cab664b07b242b37221adb36606b114a212798809106c1e0faab\",\"dweb:/ipfs/QmQvEoKtVyYQC5pPoJogvT5yMtumoCffH1Q8BCGLfGzVAM\"]}},\"version\":1}"
        },
        "ERC721Interface": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "name": "transferFrom",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "transferFrom(address,address,uint256)": "23b872dd"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/interfaces/AbridgedTokenInterfaces.sol\":\"ERC721Interface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/AbridgedTokenInterfaces.sol\":{\"keccak256\":\"0x6b4937a65838012d673de632665960836d9b81ce4d90142c02797e4d17361838\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe115b5e3b76cab664b07b242b37221adb36606b114a212798809106c1e0faab\",\"dweb:/ipfs/QmQvEoKtVyYQC5pPoJogvT5yMtumoCffH1Q8BCGLfGzVAM\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/interfaces/AmountDerivationErrors.sol": {
        "AmountDerivationErrors": {
          "abi": [
            {
              "inputs": [],
              "name": "InexactFraction",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InexactFraction\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"InexactFraction()\":[{\"details\":\"Revert with an error when attempting to apply a fraction as part of      a partial fill that does not divide the target amount cleanly.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"AmountDerivationErrors\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"AmountDerivationErrors contains errors related to amount derivation.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/interfaces/AmountDerivationErrors.sol\":\"AmountDerivationErrors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/AmountDerivationErrors.sol\":{\"keccak256\":\"0x1cba27c1c5510ec735e47d5b8f98b50bcf5f96884f8b1a6367987fff7cdc2735\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3394e76c89cd4e558a5a25a8b71e31372ad690f62c45512be98b01cd40948d1b\",\"dweb:/ipfs/QmW2KQeNm7dRXHxYY5SzBVpZxFQ59CkNJqW2LXPdJx3hZX\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/interfaces/ConduitControllerInterface.sol": {
        "ConduitControllerInterface": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "CallerIsNotNewPotentialOwner",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "CallerIsNotOwner",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "ChannelOutOfRange",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "ConduitAlreadyExists",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidCreator",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "NewPotentialOwnerIsZeroAddress",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoConduit",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                }
              ],
              "name": "NewConduit",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                },
                {
                  "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": "conduit",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "newPotentialOwner",
                  "type": "address"
                }
              ],
              "name": "PotentialOwnerUpdated",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "acceptOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "cancelOwnershipTransfer",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "initialOwner",
                  "type": "address"
                }
              ],
              "name": "createConduit",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "channelIndex",
                  "type": "uint256"
                }
              ],
              "name": "getChannel",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "channel",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "channel",
                  "type": "address"
                }
              ],
              "name": "getChannelStatus",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isOpen",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "getChannels",
              "outputs": [
                {
                  "internalType": "address[]",
                  "name": "channels",
                  "type": "address[]"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                }
              ],
              "name": "getConduit",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "exists",
                  "type": "bool"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getConduitCodeHashes",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "creationCodeHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "runtimeCodeHash",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "getKey",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "getPotentialOwner",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "potentialOwner",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "getTotalChannels",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "totalChannels",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "ownerOf",
              "outputs": [
                {
                  "internalType": "address",
                  "name": "owner",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "newPotentialOwner",
                  "type": "address"
                }
              ],
              "name": "transferOwnership",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "channel",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "isOpen",
                  "type": "bool"
                }
              ],
              "name": "updateChannel",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "acceptOwnership(address)": "51710e45",
              "cancelOwnershipTransfer(address)": "7b37e561",
              "createConduit(bytes32,address)": "794593bc",
              "getChannel(address,uint256)": "027cc764",
              "getChannelStatus(address,address)": "33bc8572",
              "getChannels(address)": "8b9e028b",
              "getConduit(bytes32)": "6e9bfd9f",
              "getConduitCodeHashes()": "0a96ad39",
              "getKey(address)": "93790f44",
              "getPotentialOwner(address)": "906c87cc",
              "getTotalChannels(address)": "4e3f9580",
              "ownerOf(address)": "14afd79e",
              "transferOwnership(address,address)": "6d435421",
              "updateChannel(address,address,bool)": "13ad9cab"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"CallerIsNotNewPotentialOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"CallerIsNotOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"ChannelOutOfRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"ConduitAlreadyExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCreator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"NewPotentialOwnerIsZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoConduit\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"name\":\"NewConduit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"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\":\"conduit\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newPotentialOwner\",\"type\":\"address\"}],\"name\":\"PotentialOwnerUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"cancelOwnershipTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"name\":\"createConduit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"channelIndex\",\"type\":\"uint256\"}],\"name\":\"getChannel\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"}],\"name\":\"getChannelStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"getChannels\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"channels\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"name\":\"getConduit\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"exists\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getConduitCodeHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"creationCodeHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"runtimeCodeHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"getKey\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"getPotentialOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"potentialOwner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"getTotalChannels\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalChannels\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newPotentialOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"updateChannel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"CallerIsNotNewPotentialOwner(address)\":[{\"details\":\"Revert with an error when attempting to claim ownership of a conduit      with a caller that is not the current potential owner for the      conduit in question.\"}],\"CallerIsNotOwner(address)\":[{\"details\":\"Revert with an error when attempting to update channels or transfer      ownership of a conduit when the caller is not the owner of the      conduit in question.\"}],\"ChannelOutOfRange(address)\":[{\"details\":\"Revert with an error when attempting to retrieve a channel using an      index that is out of range.\"}],\"ConduitAlreadyExists(address)\":[{\"details\":\"Revert with an error when attempting to create a conduit that      already exists.\"}],\"InvalidCreator()\":[{\"details\":\"Revert with an error when attempting to create a new conduit using a      conduit key where the last twenty bytes of the key do not match the      address of the caller.\"}],\"NewPotentialOwnerIsZeroAddress(address)\":[{\"details\":\"Revert with an error when attempting to register a new potential      owner and supplying the null address.\"}],\"NoConduit()\":[{\"details\":\"Revert with an error when attempting to interact with a conduit that      does not yet exist.\"}]},\"events\":{\"NewConduit(address,bytes32)\":{\"details\":\"Emit an event whenever a new conduit is created.\",\"params\":{\"conduit\":\"The newly created conduit.\",\"conduitKey\":\"The conduit key used to create the new conduit.\"}},\"OwnershipTransferred(address,address,address)\":{\"details\":\"Emit an event whenever conduit ownership is transferred.\",\"params\":{\"conduit\":\"The conduit for which ownership has been                      transferred.\",\"newOwner\":\"The new owner of the conduit.\",\"previousOwner\":\"The previous owner of the conduit.\"}},\"PotentialOwnerUpdated(address,address)\":{\"details\":\"Emit an event whenever a conduit owner registers a new potential      owner for that conduit.\",\"params\":{\"conduit\":\"The conduit for which ownership may now be                          transferred.\",\"newPotentialOwner\":\"The new potential owner of the conduit.\"}}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership(address)\":{\"params\":{\"conduit\":\"The conduit for which to accept ownership.\"}},\"cancelOwnershipTransfer(address)\":{\"params\":{\"conduit\":\"The conduit for which to cancel ownership transfer.\"}},\"createConduit(bytes32,address)\":{\"params\":{\"conduitKey\":\"The conduit key used to deploy the conduit. Note that                     the last twenty bytes of the conduit key must match                     the caller of this contract.\",\"initialOwner\":\"The initial owner to set for the new conduit.\"},\"returns\":{\"conduit\":\"The address of the newly deployed conduit.\"}},\"getChannel(address,uint256)\":{\"params\":{\"channelIndex\":\"The index of the channel in question.\",\"conduit\":\"The conduit for which to retrieve the open channel.\"},\"returns\":{\"channel\":\"The open channel, if any, at the specified channel index.\"}},\"getChannelStatus(address,address)\":{\"params\":{\"channel\":\"The channel for which to retrieve the status.\",\"conduit\":\"The conduit for which to retrieve the channel status.\"},\"returns\":{\"isOpen\":\"The status of the channel on the given conduit.\"}},\"getChannels(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve open channels.\"},\"returns\":{\"channels\":\"An array of open channels on the given conduit.\"}},\"getConduit(bytes32)\":{\"params\":{\"conduitKey\":\"The conduit key used to derive the conduit.\"},\"returns\":{\"conduit\":\"The derived address of the conduit.\",\"exists\":\" A boolean indicating whether the derived conduit has been                 deployed or not.\"}},\"getConduitCodeHashes()\":{\"details\":\"Retrieve the conduit creation code and runtime code hashes.\"},\"getKey(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve the associated conduit                key.\"},\"returns\":{\"conduitKey\":\"The conduit key used to deploy the supplied conduit.\"}},\"getPotentialOwner(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve the potential owner.\"},\"returns\":{\"potentialOwner\":\"The potential owner, if any, for the conduit.\"}},\"getTotalChannels(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve the total channel count.\"},\"returns\":{\"totalChannels\":\"The total number of open channels for the conduit.\"}},\"ownerOf(address)\":{\"params\":{\"conduit\":\"The conduit for which to retrieve the associated owner.\"},\"returns\":{\"owner\":\"The owner of the supplied conduit.\"}},\"transferOwnership(address,address)\":{\"params\":{\"conduit\":\"The conduit for which to initiate ownership transfer.\"}},\"updateChannel(address,address,bool)\":{\"params\":{\"channel\":\"The channel to open or close on the conduit.\",\"conduit\":\"The conduit for which to open or close the channel.\",\"isOpen\":\"A boolean indicating whether to open or close the channel.\"}}},\"title\":\"ConduitControllerInterface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptOwnership(address)\":{\"notice\":\"Accept ownership of a supplied conduit. Only accounts that the         current owner has set as the new potential owner may call this         function.\"},\"cancelOwnershipTransfer(address)\":{\"notice\":\"Clear the currently set potential owner, if any, from a conduit.         Only the owner of the conduit in question may call this function.\"},\"createConduit(bytes32,address)\":{\"notice\":\"Deploy a new conduit using a supplied conduit key and assigning         an initial owner for the deployed conduit. Note that the last         twenty bytes of the supplied conduit key must match the caller         and that a new conduit cannot be created if one has already been         deployed using the same conduit key.\"},\"getChannel(address,uint256)\":{\"notice\":\"Retrieve an open channel at a specific index for a given conduit.         Note that the index of a channel can change as a result of other         channels being closed on the conduit.\"},\"getChannelStatus(address,address)\":{\"notice\":\"Retrieve the status (either open or closed) of a given channel on         a conduit.\"},\"getChannels(address)\":{\"notice\":\"Retrieve all open channels for a given conduit. Note that calling         this function for a conduit with many channels will revert with         an out-of-gas error.\"},\"getConduit(bytes32)\":{\"notice\":\"Derive the conduit associated with a given conduit key and         determine whether that conduit exists (i.e. whether it has been         deployed).\"},\"getKey(address)\":{\"notice\":\"Retrieve the conduit key for a deployed conduit via reverse         lookup.\"},\"getPotentialOwner(address)\":{\"notice\":\"Retrieve the potential owner, if any, for a given conduit. The         current owner may set a new potential owner via         `transferOwnership` and that owner may then accept ownership of         the conduit in question via `acceptOwnership`.\"},\"getTotalChannels(address)\":{\"notice\":\"Retrieve the total number of open channels for a given conduit.\"},\"ownerOf(address)\":{\"notice\":\"Retrieve the current owner of a deployed conduit.\"},\"transferOwnership(address,address)\":{\"notice\":\"Initiate conduit ownership transfer by assigning a new potential         owner for the given conduit. Once set, the new potential owner         may call `acceptOwnership` to claim ownership of the conduit.         Only the owner of the conduit in question may call this function.\"},\"updateChannel(address,address,bool)\":{\"notice\":\"Open or close a channel on a given conduit, thereby allowing the         specified account to execute transfers against that conduit.         Extreme care must be taken when updating channels, as malicious         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155         tokens where the token holder has granted the conduit approval.         Only the owner of the conduit in question may call this function.\"}},\"notice\":\"ConduitControllerInterface contains all external function interfaces,         structs, events, and errors for the conduit controller.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/interfaces/ConduitControllerInterface.sol\":\"ConduitControllerInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/ConduitControllerInterface.sol\":{\"keccak256\":\"0x86b7ceb6ff7ce653fa7d0d79eeb8b96ec57eedd35f8c87e9838dde6c23f317bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://453fa0365834a50956e513d306371bfb7019124150bf9afd1699599fe6f7852c\",\"dweb:/ipfs/QmXiqKzGdj2A4TsuHtFLTgdLPRFwasbWWibNBRP5cikJod\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/interfaces/ConduitInterface.sol": {
        "ConduitInterface": {
          "abi": [
            {
              "inputs": [],
              "name": "ChannelClosed",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "Invalid1155BatchTransferEncoding",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidController",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidItemType",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "channel",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "bool",
                  "name": "open",
                  "type": "bool"
                }
              ],
              "name": "ChannelUpdated",
              "type": "event"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "enum ConduitItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "from",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "to",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct ConduitTransfer[]",
                  "name": "transfers",
                  "type": "tuple[]"
                }
              ],
              "name": "execute",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "magicValue",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "from",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "to",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256[]",
                      "name": "ids",
                      "type": "uint256[]"
                    },
                    {
                      "internalType": "uint256[]",
                      "name": "amounts",
                      "type": "uint256[]"
                    }
                  ],
                  "internalType": "struct ConduitBatch1155Transfer[]",
                  "name": "batch1155Transfers",
                  "type": "tuple[]"
                }
              ],
              "name": "executeBatch1155",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "magicValue",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "enum ConduitItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "from",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "to",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct ConduitTransfer[]",
                  "name": "standardTransfers",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "from",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "to",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256[]",
                      "name": "ids",
                      "type": "uint256[]"
                    },
                    {
                      "internalType": "uint256[]",
                      "name": "amounts",
                      "type": "uint256[]"
                    }
                  ],
                  "internalType": "struct ConduitBatch1155Transfer[]",
                  "name": "batch1155Transfers",
                  "type": "tuple[]"
                }
              ],
              "name": "executeWithBatch1155",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "magicValue",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "channel",
                  "type": "address"
                },
                {
                  "internalType": "bool",
                  "name": "isOpen",
                  "type": "bool"
                }
              ],
              "name": "updateChannel",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "execute((uint8,address,address,address,uint256,uint256)[])": "4ce34aa2",
              "executeBatch1155((address,address,address,uint256[],uint256[])[])": "8df25d92",
              "executeWithBatch1155((uint8,address,address,address,uint256,uint256)[],(address,address,address,uint256[],uint256[])[])": "899e104c",
              "updateChannel(address,bool)": "c4e8fcb5"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ChannelClosed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Invalid1155BatchTransferEncoding\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidController\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidItemType\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"open\",\"type\":\"bool\"}],\"name\":\"ChannelUpdated\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ConduitItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ConduitTransfer[]\",\"name\":\"transfers\",\"type\":\"tuple[]\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"internalType\":\"struct ConduitBatch1155Transfer[]\",\"name\":\"batch1155Transfers\",\"type\":\"tuple[]\"}],\"name\":\"executeBatch1155\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum ConduitItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct ConduitTransfer[]\",\"name\":\"standardTransfers\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"internalType\":\"struct ConduitBatch1155Transfer[]\",\"name\":\"batch1155Transfers\",\"type\":\"tuple[]\"}],\"name\":\"executeWithBatch1155\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"magicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"channel\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isOpen\",\"type\":\"bool\"}],\"name\":\"updateChannel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"ChannelClosed()\":[{\"details\":\"Revert with an error when attempting to execute transfers using a      caller that does not have an open channel.\"}],\"Invalid1155BatchTransferEncoding()\":[{\"details\":\"Revert with an error when attempting to execute an 1155 batch      transfer using calldata not produced by default ABI encoding or with      different lengths for ids and amounts arrays.\"}],\"InvalidController()\":[{\"details\":\"Revert with an error when attempting to update the status of a      channel from a caller that is not the conduit controller.\"}],\"InvalidItemType()\":[{\"details\":\"Revert with an error when attempting to execute a transfer for an      item that does not have an ERC20/721/1155 item type.\"}]},\"events\":{\"ChannelUpdated(address,bool)\":{\"details\":\"Emit an event whenever a channel is opened or closed.\",\"params\":{\"channel\":\"The channel that has been updated.\",\"open\":\"A boolean indicating whether the conduit is open or not.\"}}},\"kind\":\"dev\",\"methods\":{\"execute((uint8,address,address,address,uint256,uint256)[])\":{\"params\":{\"transfers\":\"The ERC20/721/1155 transfers to perform.\"},\"returns\":{\"magicValue\":\"A magic value indicating that the transfers were                    performed successfully.\"}},\"executeBatch1155((address,address,address,uint256[],uint256[])[])\":{\"params\":{\"batch1155Transfers\":\"The 1155 batch transfers to perform.\"},\"returns\":{\"magicValue\":\"A magic value indicating that the transfers were                    performed successfully.\"}},\"executeWithBatch1155((uint8,address,address,address,uint256,uint256)[],(address,address,address,uint256[],uint256[])[])\":{\"params\":{\"batch1155Transfers\":\"The 1155 batch transfers to perform.\",\"standardTransfers\":\"The ERC20/721/1155 transfers to perform.\"},\"returns\":{\"magicValue\":\"A magic value indicating that the transfers were                    performed successfully.\"}},\"updateChannel(address,bool)\":{\"params\":{\"channel\":\"The channel to open or close.\",\"isOpen\":\"The status of the channel (either open or closed).\"}}},\"title\":\"ConduitInterface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"execute((uint8,address,address,address,uint256,uint256)[])\":{\"notice\":\"Execute a sequence of ERC20/721/1155 transfers. Only a caller         with an open channel can call this function.\"},\"executeBatch1155((address,address,address,uint256[],uint256[])[])\":{\"notice\":\"Execute a sequence of batch 1155 transfers. Only a caller with an         open channel can call this function.\"},\"executeWithBatch1155((uint8,address,address,address,uint256,uint256)[],(address,address,address,uint256[],uint256[])[])\":{\"notice\":\"Execute a sequence of transfers, both single and batch 1155. Only         a caller with an open channel can call this function.\"},\"updateChannel(address,bool)\":{\"notice\":\"Open or close a given channel. Only callable by the controller.\"}},\"notice\":\"ConduitInterface contains all external function interfaces, events,         and errors for conduit contracts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/interfaces/ConduitInterface.sol\":\"ConduitInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/conduit/lib/ConduitEnums.sol\":{\"keccak256\":\"0x3a9ecf77688f97d1b595be27b49fca3eac93e3f91160d79f0f0063c250fd8aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d596c21d5c7c7b47ca14908cbd7add9c06898c500cf47988446f843c0b28cf96\",\"dweb:/ipfs/QmZf12Y7XHwEWvjd2ZbaUFz4NXsWPFGJF6vNg1HECvXV5m\"]},\"seaport/contracts/conduit/lib/ConduitStructs.sol\":{\"keccak256\":\"0xfd2cec45327e9a6ebc02d7efb9daa1cfdabb26eb803e4b2e9b5e82340d92cfed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea7fa97afdf70ab91449e54f9a4f40e9da16292ab87b86e7e975e6d92f573dc3\",\"dweb:/ipfs/QmaRvo6P8YYPYNgcuP4HVV2wqDuVSB1t6AwMe8jMbcQY3F\"]},\"seaport/contracts/interfaces/ConduitInterface.sol\":{\"keccak256\":\"0x6aec074141c2a66f0c06ff006b6b61f5ee3f988c1cee26a51f91e1616af194d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4cda8ec77a8261f3270087331f72443b5dcb686e93297fe9641b757dff108ae1\",\"dweb:/ipfs/QmPuWHXQWuhTUfbe3yB842nS1jRM2iLyJ16rVkDSyLCD2L\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol": {
        "ConsiderationEventsAndErrors": {
          "abi": [
            {
              "inputs": [],
              "name": "BadFraction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "orderIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "considerationIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "shortfallAmount",
                  "type": "uint256"
                }
              ],
              "name": "ConsiderationNotMet",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "EtherTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InsufficientEtherSupplied",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidBasicOrderParameterEncoding",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidCallToConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidCanceller",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidConduit",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "InvalidMsgValue",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidTime",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingOriginalConsiderationItems",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoSpecifiedOrdersAvailable",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderAlreadyFilled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderIsCancelled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderPartiallyFilled",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "PartialFillsNotEnabledForOrder",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                }
              ],
              "name": "NonceIncremented",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderCancelled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fulfiller",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct SpentItem[]",
                  "name": "offer",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address payable",
                      "name": "recipient",
                      "type": "address"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct ReceivedItem[]",
                  "name": "consideration",
                  "type": "tuple[]"
                }
              ],
              "name": "OrderFulfilled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderValidated",
              "type": "event"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"NonceIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fulfiller\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct SpentItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct ReceivedItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}]},\"events\":{\"NonceIncremented(uint256,address)\":{\"details\":\"Emit an event whenever a nonce for a given offerer is incremented.\",\"params\":{\"newNonce\":\"The new nonce for the offerer.\",\"offerer\":\"The offerer in question.\"}},\"OrderCancelled(bytes32,address,address)\":{\"details\":\"Emit an event whenever an order is successfully cancelled.\",\"params\":{\"offerer\":\"The offerer of the cancelled order.\",\"orderHash\":\"The hash of the cancelled order.\",\"zone\":\"The zone of the cancelled order.\"}},\"OrderFulfilled(bytes32,address,address,address,(uint8,address,uint256,uint256)[],(uint8,address,uint256,uint256,address)[])\":{\"details\":\"Emit an event whenever an order is successfully fulfilled.\",\"params\":{\"consideration\":\"The consideration items received as part of the                      order along with the recipients of each item.\",\"fulfiller\":\"The fulfiller of the order, or the null address if                      there is no specific fulfiller (i.e. the order is                      part of a group of orders).\",\"offer\":\"The offer items spent as part of the order.\",\"offerer\":\"The offerer of the fulfilled order.\",\"orderHash\":\"The hash of the fulfilled order.\",\"zone\":\"The zone of the fulfilled order.\"}},\"OrderValidated(bytes32,address,address)\":{\"details\":\"Emit an event whenever an order is explicitly validated. Note that      this event will not be emitted on partial fills even though they do      validate the order as part of partial fulfillment.\",\"params\":{\"offerer\":\"The offerer of the validated order.\",\"orderHash\":\"The hash of the validated order.\",\"zone\":\"The zone of the validated order.\"}}},\"kind\":\"dev\",\"methods\":{},\"title\":\"ConsiderationEventsAndErrors\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"ConsiderationEventsAndErrors contains all events and errors.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol\":\"ConsiderationEventsAndErrors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"keccak256\":\"0xf0d0eda6b47217d0e7c2862fdd5d7857cb828f9e0fc52e2c37c6d2b454832a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://374d19e0d9e5ce76e10dce8bada5ee9d1adcd54898c0cba9099d0dd72a5bf996\",\"dweb:/ipfs/QmS49qk49jmkPuMzLbbop5s7eJxbfRzKokQXB2QJjfVPHT\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/interfaces/ConsiderationInterface.sol": {
        "ConsiderationInterface": {
          "abi": [
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "zone",
                      "type": "address"
                    },
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifierOrCriteria",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endAmount",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OfferItem[]",
                      "name": "offer",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifierOrCriteria",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ConsiderationItem[]",
                      "name": "consideration",
                      "type": "tuple[]"
                    },
                    {
                      "internalType": "enum OrderType",
                      "name": "orderType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "endTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "zoneHash",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "salt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "nonce",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct OrderComponents[]",
                  "name": "orders",
                  "type": "tuple[]"
                }
              ],
              "name": "cancel",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "cancelled",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "uint120",
                      "name": "numerator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "uint120",
                      "name": "denominator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "extraData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct AdvancedOrder",
                  "name": "advancedOrder",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "enum Side",
                      "name": "side",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "index",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32[]",
                      "name": "criteriaProof",
                      "type": "bytes32[]"
                    }
                  ],
                  "internalType": "struct CriteriaResolver[]",
                  "name": "criteriaResolvers",
                  "type": "tuple[]"
                },
                {
                  "internalType": "bytes32",
                  "name": "fulfillerConduitKey",
                  "type": "bytes32"
                }
              ],
              "name": "fulfillAdvancedOrder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "fulfilled",
                  "type": "bool"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "uint120",
                      "name": "numerator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "uint120",
                      "name": "denominator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "extraData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct AdvancedOrder[]",
                  "name": "advancedOrders",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "enum Side",
                      "name": "side",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "index",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32[]",
                      "name": "criteriaProof",
                      "type": "bytes32[]"
                    }
                  ],
                  "internalType": "struct CriteriaResolver[]",
                  "name": "criteriaResolvers",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "itemIndex",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct FulfillmentComponent[][]",
                  "name": "offerFulfillments",
                  "type": "tuple[][]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "itemIndex",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct FulfillmentComponent[][]",
                  "name": "considerationFulfillments",
                  "type": "tuple[][]"
                },
                {
                  "internalType": "bytes32",
                  "name": "fulfillerConduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "maximumFulfilled",
                  "type": "uint256"
                }
              ],
              "name": "fulfillAvailableAdvancedOrders",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "availableOrders",
                  "type": "bool[]"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifier",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ReceivedItem",
                      "name": "item",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct Execution[]",
                  "name": "executions",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Order[]",
                  "name": "orders",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "itemIndex",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct FulfillmentComponent[][]",
                  "name": "offerFulfillments",
                  "type": "tuple[][]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "itemIndex",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct FulfillmentComponent[][]",
                  "name": "considerationFulfillments",
                  "type": "tuple[][]"
                },
                {
                  "internalType": "bytes32",
                  "name": "fulfillerConduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "uint256",
                  "name": "maximumFulfilled",
                  "type": "uint256"
                }
              ],
              "name": "fulfillAvailableOrders",
              "outputs": [
                {
                  "internalType": "bool[]",
                  "name": "availableOrders",
                  "type": "bool[]"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifier",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ReceivedItem",
                      "name": "item",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct Execution[]",
                  "name": "executions",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "considerationToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "considerationIdentifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "considerationAmount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address payable",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "zone",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "offerToken",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "offerIdentifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "offerAmount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "enum BasicOrderType",
                      "name": "basicOrderType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "endTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "zoneHash",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "salt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "offererConduitKey",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "fulfillerConduitKey",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "totalOriginalAdditionalRecipients",
                      "type": "uint256"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct AdditionalRecipient[]",
                      "name": "additionalRecipients",
                      "type": "tuple[]"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct BasicOrderParameters",
                  "name": "parameters",
                  "type": "tuple"
                }
              ],
              "name": "fulfillBasicOrder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "fulfilled",
                  "type": "bool"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Order",
                  "name": "order",
                  "type": "tuple"
                },
                {
                  "internalType": "bytes32",
                  "name": "fulfillerConduitKey",
                  "type": "bytes32"
                }
              ],
              "name": "fulfillOrder",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "fulfilled",
                  "type": "bool"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                }
              ],
              "name": "getNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "address",
                      "name": "zone",
                      "type": "address"
                    },
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifierOrCriteria",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endAmount",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OfferItem[]",
                      "name": "offer",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifierOrCriteria",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endAmount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ConsiderationItem[]",
                      "name": "consideration",
                      "type": "tuple[]"
                    },
                    {
                      "internalType": "enum OrderType",
                      "name": "orderType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "startTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "endTime",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "zoneHash",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "salt",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    },
                    {
                      "internalType": "uint256",
                      "name": "nonce",
                      "type": "uint256"
                    }
                  ],
                  "internalType": "struct OrderComponents",
                  "name": "order",
                  "type": "tuple"
                }
              ],
              "name": "getOrderHash",
              "outputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "getOrderStatus",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "isValidated",
                  "type": "bool"
                },
                {
                  "internalType": "bool",
                  "name": "isCancelled",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "totalFilled",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "totalSize",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "incrementNonce",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "information",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "version",
                  "type": "string"
                },
                {
                  "internalType": "bytes32",
                  "name": "domainSeparator",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "conduitController",
                  "type": "address"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "uint120",
                      "name": "numerator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "uint120",
                      "name": "denominator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "extraData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct AdvancedOrder[]",
                  "name": "orders",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "enum Side",
                      "name": "side",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "index",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32[]",
                      "name": "criteriaProof",
                      "type": "bytes32[]"
                    }
                  ],
                  "internalType": "struct CriteriaResolver[]",
                  "name": "criteriaResolvers",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "orderIndex",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "itemIndex",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct FulfillmentComponent[]",
                      "name": "offerComponents",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "orderIndex",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "itemIndex",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct FulfillmentComponent[]",
                      "name": "considerationComponents",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct Fulfillment[]",
                  "name": "fulfillments",
                  "type": "tuple[]"
                }
              ],
              "name": "matchAdvancedOrders",
              "outputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifier",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ReceivedItem",
                      "name": "item",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct Execution[]",
                  "name": "executions",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Order[]",
                  "name": "orders",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "orderIndex",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "itemIndex",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct FulfillmentComponent[]",
                      "name": "offerComponents",
                      "type": "tuple[]"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "orderIndex",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "itemIndex",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct FulfillmentComponent[]",
                      "name": "considerationComponents",
                      "type": "tuple[]"
                    }
                  ],
                  "internalType": "struct Fulfillment[]",
                  "name": "fulfillments",
                  "type": "tuple[]"
                }
              ],
              "name": "matchOrders",
              "outputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "enum ItemType",
                          "name": "itemType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address",
                          "name": "token",
                          "type": "address"
                        },
                        {
                          "internalType": "uint256",
                          "name": "identifier",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "amount",
                          "type": "uint256"
                        },
                        {
                          "internalType": "address payable",
                          "name": "recipient",
                          "type": "address"
                        }
                      ],
                      "internalType": "struct ReceivedItem",
                      "name": "item",
                      "type": "tuple"
                    },
                    {
                      "internalType": "address",
                      "name": "offerer",
                      "type": "address"
                    },
                    {
                      "internalType": "bytes32",
                      "name": "conduitKey",
                      "type": "bytes32"
                    }
                  ],
                  "internalType": "struct Execution[]",
                  "name": "executions",
                  "type": "tuple[]"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "name",
              "outputs": [
                {
                  "internalType": "string",
                  "name": "contractName",
                  "type": "string"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct Order[]",
                  "name": "orders",
                  "type": "tuple[]"
                }
              ],
              "name": "validate",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "validated",
                  "type": "bool"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "cancel((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256)[])": "fd9f1e10",
              "fulfillAdvancedOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes),(uint256,uint8,uint256,uint256,bytes32[])[],bytes32)": "df7b0dac",
              "fulfillAvailableAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)": "fb4c2af9",
              "fulfillAvailableOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)": "ed98a574",
              "fulfillBasicOrder((address,uint256,uint256,address,address,address,uint256,uint256,uint8,uint256,uint256,bytes32,uint256,bytes32,bytes32,uint256,(uint256,address)[],bytes))": "fb0f3ee1",
              "fulfillOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes),bytes32)": "b3a34c4c",
              "getNonce(address)": "2d0335ab",
              "getOrderHash((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256))": "79df72bd",
              "getOrderStatus(bytes32)": "46423aa7",
              "incrementNonce()": "627cdcb9",
              "information()": "f47b7740",
              "matchAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],((uint256,uint256)[],(uint256,uint256)[])[])": "55944a42",
              "matchOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],((uint256,uint256)[],(uint256,uint256)[])[])": "a8174404",
              "name()": "06fdde03",
              "validate(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[])": "88147732"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderComponents[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"cancel\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"cancelled\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"uint120\",\"name\":\"numerator\",\"type\":\"uint120\"},{\"internalType\":\"uint120\",\"name\":\"denominator\",\"type\":\"uint120\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct AdvancedOrder\",\"name\":\"advancedOrder\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"enum Side\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"criteriaProof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct CriteriaResolver[]\",\"name\":\"criteriaResolvers\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"}],\"name\":\"fulfillAdvancedOrder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"fulfilled\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"uint120\",\"name\":\"numerator\",\"type\":\"uint120\"},{\"internalType\":\"uint120\",\"name\":\"denominator\",\"type\":\"uint120\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct AdvancedOrder[]\",\"name\":\"advancedOrders\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"enum Side\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"criteriaProof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct CriteriaResolver[]\",\"name\":\"criteriaResolvers\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[][]\",\"name\":\"offerFulfillments\",\"type\":\"tuple[][]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[][]\",\"name\":\"considerationFulfillments\",\"type\":\"tuple[][]\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"maximumFulfilled\",\"type\":\"uint256\"}],\"name\":\"fulfillAvailableAdvancedOrders\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"availableOrders\",\"type\":\"bool[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ReceivedItem\",\"name\":\"item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct Execution[]\",\"name\":\"executions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Order[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[][]\",\"name\":\"offerFulfillments\",\"type\":\"tuple[][]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[][]\",\"name\":\"considerationFulfillments\",\"type\":\"tuple[][]\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"maximumFulfilled\",\"type\":\"uint256\"}],\"name\":\"fulfillAvailableOrders\",\"outputs\":[{\"internalType\":\"bool[]\",\"name\":\"availableOrders\",\"type\":\"bool[]\"},{\"components\":[{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ReceivedItem\",\"name\":\"item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct Execution[]\",\"name\":\"executions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"considerationToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"considerationIdentifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"offerToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"offerIdentifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"offerAmount\",\"type\":\"uint256\"},{\"internalType\":\"enum BasicOrderType\",\"name\":\"basicOrderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"offererConduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalAdditionalRecipients\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct AdditionalRecipient[]\",\"name\":\"additionalRecipients\",\"type\":\"tuple[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct BasicOrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"}],\"name\":\"fulfillBasicOrder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"fulfilled\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Order\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"fulfillerConduitKey\",\"type\":\"bytes32\"}],\"name\":\"fulfillOrder\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"fulfilled\",\"type\":\"bool\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"getNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderComponents\",\"name\":\"order\",\"type\":\"tuple\"}],\"name\":\"getOrderHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"getOrderStatus\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isValidated\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isCancelled\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"totalFilled\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalSize\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"incrementNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"information\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"bytes32\",\"name\":\"domainSeparator\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"uint120\",\"name\":\"numerator\",\"type\":\"uint120\"},{\"internalType\":\"uint120\",\"name\":\"denominator\",\"type\":\"uint120\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct AdvancedOrder[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"enum Side\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"criteriaProof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct CriteriaResolver[]\",\"name\":\"criteriaResolvers\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[]\",\"name\":\"offerComponents\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[]\",\"name\":\"considerationComponents\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Fulfillment[]\",\"name\":\"fulfillments\",\"type\":\"tuple[]\"}],\"name\":\"matchAdvancedOrders\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ReceivedItem\",\"name\":\"item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct Execution[]\",\"name\":\"executions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Order[]\",\"name\":\"orders\",\"type\":\"tuple[]\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[]\",\"name\":\"offerComponents\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"itemIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct FulfillmentComponent[]\",\"name\":\"considerationComponents\",\"type\":\"tuple[]\"}],\"internalType\":\"struct Fulfillment[]\",\"name\":\"fulfillments\",\"type\":\"tuple[]\"}],\"name\":\"matchOrders\",\"outputs\":[{\"components\":[{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ReceivedItem\",\"name\":\"item\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"}],\"internalType\":\"struct Execution[]\",\"name\":\"executions\",\"type\":\"tuple[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"contractName\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"internalType\":\"struct Order[]\",\"name\":\"orders\",\"type\":\"tuple[]\"}],\"name\":\"validate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"validated\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"0age\",\"custom:version\":\"1\",\"details\":\"ConsiderationInterface contains all external function interfaces for      Consideration.\",\"kind\":\"dev\",\"methods\":{\"cancel((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256)[])\":{\"params\":{\"orders\":\"The orders to cancel.\"},\"returns\":{\"cancelled\":\"A boolean indicating whether the supplied orders have                   been successfully cancelled.\"}},\"fulfillAdvancedOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes),(uint256,uint8,uint256,uint256,bytes32[])[],bytes32)\":{\"params\":{\"advancedOrder\":\"The order to fulfill along with the fraction                            of the order to attempt to fill. Note that                            both the offerer and the fulfiller must first                            approve this contract (or their preferred                            conduit if indicated by the order) to transfer                            any relevant tokens on their behalf and that                            contracts must implement `onERC1155Received`                            to receive ERC1155 tokens as consideration.                            Also note that all offer and consideration                            components must have no remainder after                            multiplication of the respective amount with                            the supplied fraction for the partial fill to                            be considered valid.\",\"criteriaResolvers\":\"An array where each element contains a                            reference to a specific offer or                            consideration, a token identifier, and a proof                            that the supplied token identifier is                            contained in the merkle root held by the item                            in question's criteria element. Note that an                            empty criteria indicates that any                            (transferrable) token identifier on the token                            in question is valid and that no associated                            proof needs to be supplied.\",\"fulfillerConduitKey\":\"A bytes32 value indicating what conduit, if                            any, to source the fulfiller's token approvals                            from. The zero hash signifies that no conduit                            should be used, with direct approvals set on                            Consideration.\"},\"returns\":{\"fulfilled\":\"A boolean indicating whether the order has been                   successfully fulfilled.\"}},\"fulfillAvailableAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)\":{\"params\":{\"advancedOrders\":\"The orders to fulfill along with the                                  fraction of those orders to attempt to                                  fill. Note that both the offerer and the                                  fulfiller must first approve this                                  contract (or their preferred conduit if                                  indicated by the order) to transfer any                                  relevant tokens on their behalf and that                                  contracts must implement                                  `onERC1155Received` to enable receipt of                                  ERC1155 tokens as consideration. Also                                  note that all offer and consideration                                  components must have no remainder after                                  multiplication of the respective amount                                  with the supplied fraction for an                                  order's partial fill amount to be                                  considered valid.\",\"considerationFulfillments\":\"An array of FulfillmentComponent arrays                                  indicating which consideration items to                                  attempt to aggregate when preparing                                  executions.\",\"criteriaResolvers\":\"An array where each element contains a                                  reference to a specific offer or                                  consideration, a token identifier, and a                                  proof that the supplied token identifier                                  is contained in the merkle root held by                                  the item in question's criteria element.                                  Note that an empty criteria indicates                                  that any (transferrable) token                                  identifier on the token in question is                                  valid and that no associated proof needs                                  to be supplied.\",\"fulfillerConduitKey\":\"A bytes32 value indicating what conduit,                                  if any, to source the fulfiller's token                                  approvals from. The zero hash signifies                                  that no conduit should be used, with                                  direct approvals set on this contract.\",\"maximumFulfilled\":\"The maximum number of orders to fulfill.\",\"offerFulfillments\":\"An array of FulfillmentComponent arrays                                  indicating which offer items to attempt                                  to aggregate when preparing executions.\"},\"returns\":{\"availableOrders\":\"An array of booleans indicating if each order                         with an index corresponding to the index of the                         returned boolean was fulfillable or not.\",\"executions\":\"     An array of elements indicating the sequence of                         transfers performed as part of matching the given                         orders.\"}},\"fulfillAvailableOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)\":{\"params\":{\"considerationFulfillments\":\"An array of FulfillmentComponent arrays                                  indicating which consideration items to                                  attempt to aggregate when preparing                                  executions.\",\"fulfillerConduitKey\":\"A bytes32 value indicating what conduit,                                  if any, to source the fulfiller's token                                  approvals from. The zero hash signifies                                  that no conduit should be used, with                                  direct approvals set on this contract.\",\"maximumFulfilled\":\"The maximum number of orders to fulfill.\",\"offerFulfillments\":\"An array of FulfillmentComponent arrays                                  indicating which offer items to attempt                                  to aggregate when preparing executions.\",\"orders\":\"The orders to fulfill. Note that both                                  the offerer and the fulfiller must first                                  approve this contract (or the                                  corresponding conduit if indicated) to                                  transfer any relevant tokens on their                                  behalf and that contracts must implement                                  `onERC1155Received` to receive ERC1155                                  tokens as consideration.\"},\"returns\":{\"availableOrders\":\"An array of booleans indicating if each order                         with an index corresponding to the index of the                         returned boolean was fulfillable or not.\",\"executions\":\"     An array of elements indicating the sequence of                         transfers performed as part of matching the given                         orders.\"}},\"fulfillBasicOrder((address,uint256,uint256,address,address,address,uint256,uint256,uint8,uint256,uint256,bytes32,uint256,bytes32,bytes32,uint256,(uint256,address)[],bytes))\":{\"params\":{\"parameters\":\"Additional information on the fulfilled order. Note                   that the offerer must first approve this contract (or                   their preferred conduit if indicated by the order) for                   their offered ERC721 token to be transferred.\"},\"returns\":{\"fulfilled\":\"A boolean indicating whether the order has been                   successfully fulfilled.\"}},\"fulfillOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes),bytes32)\":{\"params\":{\"fulfillerConduitKey\":\"A bytes32 value indicating what conduit, if                            any, to source the fulfiller's token approvals                            from. The zero hash signifies that no conduit                            should be used, with direct approvals set on                            Consideration.\",\"order\":\"The order to fulfill. Note that both the                            offerer and the fulfiller must first approve                            this contract (or the corresponding conduit if                            indicated) to transfer any relevant tokens on                            their behalf and that contracts must implement                            `onERC1155Received` to receive ERC1155 tokens                            as consideration.\"},\"returns\":{\"fulfilled\":\"A boolean indicating whether the order has been                   successfully fulfilled.\"}},\"getNonce(address)\":{\"params\":{\"offerer\":\"The offerer in question.\"},\"returns\":{\"nonce\":\"The current nonce.\"}},\"getOrderHash((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256))\":{\"params\":{\"order\":\"The components of the order.\"},\"returns\":{\"orderHash\":\"The order hash.\"}},\"getOrderStatus(bytes32)\":{\"params\":{\"orderHash\":\"The order hash in question.\"},\"returns\":{\"isCancelled\":\"A boolean indicating whether the order in question                     has been cancelled.\",\"isValidated\":\"A boolean indicating whether the order in question                     has been validated (i.e. previously approved or                     partially filled).\",\"totalFilled\":\"The total portion of the order that has been filled                     (i.e. the \\\"numerator\\\").\",\"totalSize\":\"  The total size of the order that is either filled or                     unfilled (i.e. the \\\"denominator\\\").\"}},\"incrementNonce()\":{\"returns\":{\"newNonce\":\"The new nonce.\"}},\"information()\":{\"returns\":{\"conduitController\":\"The conduit Controller set for this contract.\",\"domainSeparator\":\"  The domain separator for this contract.\",\"version\":\"          The contract version.\"}},\"matchAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],((uint256,uint256)[],(uint256,uint256)[])[])\":{\"params\":{\"criteriaResolvers\":\"An array where each element contains a reference                          to a specific order as well as that order's                          offer or consideration, a token identifier, and                          a proof that the supplied token identifier is                          contained in the order's merkle root. Note that                          an empty root indicates that any (transferrable)                          token identifier is valid and that no associated                          proof needs to be supplied.\",\"fulfillments\":\"An array of elements allocating offer components                          to consideration components. Note that each                          consideration component must be fully met in                          order for the match operation to be valid.\",\"orders\":\"The advanced orders to match. Note that both the                          offerer and fulfiller on each order must first                          approve this contract (or a preferred conduit if                          indicated by the order) to transfer any relevant                          tokens on their behalf and each consideration                          recipient must implement `onERC1155Received` in                          order toreceive ERC1155 tokens. Also note that                          the offer and consideration components for each                          order must have no remainder after multiplying                          the respective amount with the supplied fraction                          in order for the group of partial fills to be                          considered valid.\"},\"returns\":{\"executions\":\"An array of elements indicating the sequence of                    transfers performed as part of matching the given                    orders.\"}},\"matchOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],((uint256,uint256)[],(uint256,uint256)[])[])\":{\"params\":{\"fulfillments\":\"An array of elements allocating offer components to                     consideration components. Note that each                     consideration component must be fully met for the                     match operation to be valid.\",\"orders\":\"The orders to match. Note that both the offerer and                     fulfiller on each order must first approve this                     contract (or their conduit if indicated by the order)                     to transfer any relevant tokens on their behalf and                     each consideration recipient must implement                     `onERC1155Received` to enable ERC1155 token receipt.\"},\"returns\":{\"executions\":\"An array of elements indicating the sequence of                    transfers performed as part of matching the given                    orders.\"}},\"name()\":{\"returns\":{\"contractName\":\"The name of this contract.\"}},\"validate(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[])\":{\"params\":{\"orders\":\"The orders to validate.\"},\"returns\":{\"validated\":\"A boolean indicating whether the supplied orders have                   been successfully validated.\"}}},\"title\":\"ConsiderationInterface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"cancel((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256)[])\":{\"notice\":\"Cancel an arbitrary number of orders. Note that only the offerer         or the zone of a given order may cancel it. Callers should ensure         that the intended order was cancelled by calling `getOrderStatus`         and confirming that `isCancelled` returns `true`.\"},\"fulfillAdvancedOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes),(uint256,uint8,uint256,uint256,bytes32[])[],bytes32)\":{\"notice\":\"Fill an order, fully or partially, with an arbitrary number of         items for offer and consideration alongside criteria resolvers         containing specific token identifiers and associated proofs.\"},\"fulfillAvailableAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)\":{\"notice\":\"Attempt to fill a group of orders, fully or partially, with an         arbitrary number of items for offer and consideration per order         alongside criteria resolvers containing specific token         identifiers and associated proofs. Any order that is not         currently active, has already been fully filled, or has been         cancelled will be omitted. Remaining offer and consideration         items will then be aggregated where possible as indicated by the         supplied offer and consideration component arrays and aggregated         items will be transferred to the fulfiller or to each intended         recipient, respectively. Note that a failing item transfer or an         issue with order formatting will cause the entire batch to fail.\"},\"fulfillAvailableOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],(uint256,uint256)[][],(uint256,uint256)[][],bytes32,uint256)\":{\"notice\":\"Attempt to fill a group of orders, each with an arbitrary number         of items for offer and consideration. Any order that is not         currently active, has already been fully filled, or has been         cancelled will be omitted. Remaining offer and consideration         items will then be aggregated where possible as indicated by the         supplied offer and consideration component arrays and aggregated         items will be transferred to the fulfiller or to each intended         recipient, respectively. Note that a failing item transfer or an         issue with order formatting will cause the entire batch to fail.         Note that this function does not support criteria-based orders or         partial filling of orders (though filling the remainder of a         partially-filled order is supported).\"},\"fulfillBasicOrder((address,uint256,uint256,address,address,address,uint256,uint256,uint8,uint256,uint256,bytes32,uint256,bytes32,bytes32,uint256,(uint256,address)[],bytes))\":{\"notice\":\"Fulfill an order offering an ERC721 token by supplying Ether (or         the native token for the given chain) as consideration for the         order. An arbitrary number of \\\"additional recipients\\\" may also be         supplied which will each receive native tokens from the fulfiller         as consideration.\"},\"fulfillOrder(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes),bytes32)\":{\"notice\":\"Fulfill an order with an arbitrary number of items for offer and         consideration. Note that this function does not support         criteria-based orders or partial filling of orders (though         filling the remainder of a partially-filled order is supported).\"},\"getNonce(address)\":{\"notice\":\"Retrieve the current nonce for a given offerer.\"},\"getOrderHash((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256))\":{\"notice\":\"Retrieve the order hash for a given order.\"},\"getOrderStatus(bytes32)\":{\"notice\":\"Retrieve the status of a given order by hash, including whether         the order has been cancelled or validated and the fraction of the         order that has been filled.\"},\"incrementNonce()\":{\"notice\":\"Cancel all orders from a given offerer with a given zone in bulk         by incrementing a nonce. Note that only the offerer may increment         the nonce.\"},\"information()\":{\"notice\":\"Retrieve configuration information for this contract.\"},\"matchAdvancedOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes)[],(uint256,uint8,uint256,uint256,bytes32[])[],((uint256,uint256)[],(uint256,uint256)[])[])\":{\"notice\":\"Match an arbitrary number of full or partial orders, each with an         arbitrary number of items for offer and consideration, supplying         criteria resolvers containing specific token identifiers and         associated proofs as well as fulfillments allocating offer         components to consideration components.\"},\"matchOrders(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[],((uint256,uint256)[],(uint256,uint256)[])[])\":{\"notice\":\"Match an arbitrary number of orders, each with an arbitrary         number of items for offer and consideration along with as set of         fulfillments allocating offer components to consideration         components. Note that this function does not support         criteria-based or partial filling of orders (though filling the         remainder of a partially-filled order is supported).\"},\"name()\":{\"notice\":\"Retrieve the name of this contract.\"},\"validate(((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),bytes)[])\":{\"notice\":\"Validate an arbitrary number of orders, thereby registering their         signatures as valid and allowing the fulfiller to skip signature         verification on fulfillment. Note that validated orders may still         be unfulfillable due to invalid item amounts or other factors;         callers should determine whether validated orders are fulfillable         by simulating the fulfillment call prior to execution. Also note         that anyone can validate a signed order, but only the offerer can         validate an order without supplying a signature.\"}},\"notice\":\"Consideration is a generalized ETH/ERC20/ERC721/ERC1155 marketplace.         It minimizes external calls to the greatest extent possible and         provides lightweight methods for common routes as well as more         flexible methods for composing advanced orders.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/interfaces/ConsiderationInterface.sol\":\"ConsiderationInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/ConsiderationInterface.sol\":{\"keccak256\":\"0x67b79ae6f30efab80173b0dda195b573790b9c470c498b257e7a976c18fefca9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86190d6402279941ce2a139432969de2fe76c31c3751c33690eb2f2a172c2898\",\"dweb:/ipfs/QmW3hqAgXbmQuxKXkfQ5NGK1U1uuoxnzzwEhBM6VKFZYo1\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/interfaces/CriteriaResolutionErrors.sol": {
        "CriteriaResolutionErrors": {
          "abi": [
            {
              "inputs": [],
              "name": "ConsiderationCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "CriteriaNotEnabledForItem",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidProof",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OfferCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OrderCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnresolvedConsiderationCriteria",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnresolvedOfferCriteria",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ConsiderationCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CriteriaNotEnabledForItem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnresolvedConsiderationCriteria\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnresolvedOfferCriteria\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"ConsiderationCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with a consideration item that has not been supplied.\"}],\"CriteriaNotEnabledForItem()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with an item that does not expect a criteria to be      resolved.\"}],\"InvalidProof()\":[{\"details\":\"Revert with an error when providing a criteria resolver that      contains an invalid proof with respect to the given item and      chosen identifier.\"}],\"OfferCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with an offer item that has not been supplied.\"}],\"OrderCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order that has not been supplied.\"}],\"UnresolvedConsiderationCriteria()\":[{\"details\":\"Revert with an error if a consideration item still has unresolved      criteria after applying all criteria resolvers.\"}],\"UnresolvedOfferCriteria()\":[{\"details\":\"Revert with an error if an offer item still has unresolved criteria      after applying all criteria resolvers.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"CriteriaResolutionErrors\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"CriteriaResolutionErrors contains all errors related to criteria         resolution.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/interfaces/CriteriaResolutionErrors.sol\":\"CriteriaResolutionErrors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/CriteriaResolutionErrors.sol\":{\"keccak256\":\"0x3c63de591ecf89478714308c38953d72b88c7034f9b4ae4605f356a121df969e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a538b46b3ae2bb4331fed4f2936caece352db92694c69255e0a27dcf69243f79\",\"dweb:/ipfs/QmNr2LKznf9kCHL4di5GrjYto1RTD9JgKJv13WT6yqrgNn\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/interfaces/EIP1271Interface.sol": {
        "EIP1271Interface": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "digest",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes",
                  "name": "signature",
                  "type": "bytes"
                }
              ],
              "name": "isValidSignature",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "isValidSignature(bytes32,bytes)": "1626ba7e"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/interfaces/EIP1271Interface.sol\":\"EIP1271Interface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/EIP1271Interface.sol\":{\"keccak256\":\"0x3c60fdc09b2bc7cb3a615ca82ee1bd776813e75883515efd1e794fe8a3228f29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b17dda7065bffe0ba89c26d413e89c7e7e733f5e74cefba56799ebb57e60908\",\"dweb:/ipfs/QmT2DJBP4WvXYKyFusiSeJ7kbo4UVor4yKCkwEF237CqxZ\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/interfaces/FulfillmentApplicationErrors.sol": {
        "FulfillmentApplicationErrors": {
          "abi": [
            {
              "inputs": [],
              "name": "InvalidFulfillmentComponentData",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MismatchedFulfillmentOfferAndConsiderationComponents",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "enum Side",
                  "name": "side",
                  "type": "uint8"
                }
              ],
              "name": "MissingFulfillmentComponentOnAggregation",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OfferAndConsiderationRequiredOnFulfillment",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidFulfillmentComponentData\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MismatchedFulfillmentOfferAndConsiderationComponents\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum Side\",\"name\":\"side\",\"type\":\"uint8\"}],\"name\":\"MissingFulfillmentComponentOnAggregation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferAndConsiderationRequiredOnFulfillment\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"InvalidFulfillmentComponentData()\":[{\"details\":\"Revert with an error when an order or item index are out of range      or a fulfillment component does not match the type, token,      identifier, or conduit preference of the initial consideration item.\"}],\"MismatchedFulfillmentOfferAndConsiderationComponents()\":[{\"details\":\"Revert with an error when the initial offer item named by a      fulfillment component does not match the type, token, identifier,      or conduit preference of the initial consideration item.\"}],\"MissingFulfillmentComponentOnAggregation(uint8)\":[{\"details\":\"Revert with an error when a fulfillment is provided as part of an      call to fulfill available orders that does not declare at least one      component.\"}],\"OfferAndConsiderationRequiredOnFulfillment()\":[{\"details\":\"Revert with an error when a fulfillment is provided that does not      declare at least one offer component and at least one consideration      component.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"FulfillmentApplicationErrors\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"FulfillmentApplicationErrors contains errors related to fulfillment         application and aggregation.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/interfaces/FulfillmentApplicationErrors.sol\":\"FulfillmentApplicationErrors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/FulfillmentApplicationErrors.sol\":{\"keccak256\":\"0x85d34353dec017698bffe508a2cd37970ac35684e9319ca5ce1ec41228313cde\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://304c4f89b90b212a7fed6e29c7f11575c20992845981074e42b6890f86a42808\",\"dweb:/ipfs/QmP1g5tEi8YLbAbFDXGc6Rp37zuQXousunm38bvQbdanu5\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/interfaces/ReentrancyErrors.sol": {
        "ReentrancyErrors": {
          "abi": [
            {
              "inputs": [],
              "name": "NoReentrantCalls",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"ReentrancyErrors\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"ReentrancyErrors contains errors related to reentrancy.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/interfaces/ReentrancyErrors.sol\":\"ReentrancyErrors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/ReentrancyErrors.sol\":{\"keccak256\":\"0x9ab27fa5a68f55ad89072ea213c6f12979ae469041ca473d81f800dbdbe9bb48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0cc617da7254d981fd5970d16acc2a6f6fe2fe0bc3e2d0976f7c01a4893430ec\",\"dweb:/ipfs/QmbhqKxfhrfPAjp99LVspxopQG7Mb9L9xdSa38ujCxmvTJ\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/interfaces/SignatureVerificationErrors.sol": {
        "SignatureVerificationErrors": {
          "abi": [
            {
              "inputs": [],
              "name": "BadContractSignature",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                }
              ],
              "name": "BadSignatureV",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSigner",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SignatureVerificationErrors\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"SignatureVerificationErrors contains all errors related to signature         verification.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/interfaces/SignatureVerificationErrors.sol\":\"SignatureVerificationErrors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/SignatureVerificationErrors.sol\":{\"keccak256\":\"0xb86f318b159c16087372e12b1e2c37c15fb745be1566bb03812e3814c15fb605\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff051f5cb44654096126c9ec72d1aaebf568e87a01da6200e969e673b8c3e4bf\",\"dweb:/ipfs/QmaPKx8ikPxRzYRubNraLhPdnGmXunZ6WGhzaed18oBi66\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/interfaces/TokenTransferrerErrors.sol": {
        "TokenTransferrerErrors": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BadReturnValueFromERC20OnTransfer",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "identifiers",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "ERC1155BatchTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidERC721TransferAmount",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingItemAmount",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "NoContract",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "identifier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenTransferGenericFailure",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"}],\"devdoc\":{\"errors\":{\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"TokenTransferrerErrors\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/interfaces/TokenTransferrerErrors.sol\":\"TokenTransferrerErrors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/TokenTransferrerErrors.sol\":{\"keccak256\":\"0x128fbb0236de5e52c34876c61148e04c12289e92d6bce2270760905617a01b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ed114ea7bf9ce55065d853f0f705eb82cc840672e0c2ab899691ab5703d2e98\",\"dweb:/ipfs/QmXQsajetWBmU7tzjoFm5wyajRKrMMEGXFF7ZQxaH7ZceG\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/interfaces/ZoneInteractionErrors.sol": {
        "ZoneInteractionErrors": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "InvalidRestrictedOrder",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"InvalidRestrictedOrder\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"InvalidRestrictedOrder(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that specifies      a restricted submitter as its order type when not submitted by      either the offerrer or the order's zone or approved as valid by the      zone in question via a staticcall to `isValidOrder`.\",\"params\":{\"orderHash\":\"The order hash for the invalid restricted order.\"}}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"ZoneInteractionErrors\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"ZoneInteractionErrors contains errors related to zone interaction.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/interfaces/ZoneInteractionErrors.sol\":\"ZoneInteractionErrors\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/ZoneInteractionErrors.sol\":{\"keccak256\":\"0x7cc23125af35b317beac057bfbe34291f6b2f34f37f7d698f5bc7373b09b4480\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c56917ceed46a2e3029b7daf5331cd6e3a10e3174287c9d2a5cccb5fb6e1568\",\"dweb:/ipfs/QmRdPmvPm2F2hXq4QwXZyavjMis1RmY5XLMZLzM45Cv9hT\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/interfaces/ZoneInterface.sol": {
        "ZoneInterface": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "zoneHash",
                  "type": "bytes32"
                }
              ],
              "name": "isValidOrder",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "validOrderMagicValue",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "caller",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "offerer",
                          "type": "address"
                        },
                        {
                          "internalType": "address",
                          "name": "zone",
                          "type": "address"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct OfferItem[]",
                          "name": "offer",
                          "type": "tuple[]"
                        },
                        {
                          "components": [
                            {
                              "internalType": "enum ItemType",
                              "name": "itemType",
                              "type": "uint8"
                            },
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "identifierOrCriteria",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "startAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "endAmount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "address payable",
                              "name": "recipient",
                              "type": "address"
                            }
                          ],
                          "internalType": "struct ConsiderationItem[]",
                          "name": "consideration",
                          "type": "tuple[]"
                        },
                        {
                          "internalType": "enum OrderType",
                          "name": "orderType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "startTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "endTime",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "zoneHash",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "salt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "conduitKey",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "uint256",
                          "name": "totalOriginalConsiderationItems",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct OrderParameters",
                      "name": "parameters",
                      "type": "tuple"
                    },
                    {
                      "internalType": "uint120",
                      "name": "numerator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "uint120",
                      "name": "denominator",
                      "type": "uint120"
                    },
                    {
                      "internalType": "bytes",
                      "name": "signature",
                      "type": "bytes"
                    },
                    {
                      "internalType": "bytes",
                      "name": "extraData",
                      "type": "bytes"
                    }
                  ],
                  "internalType": "struct AdvancedOrder",
                  "name": "order",
                  "type": "tuple"
                },
                {
                  "internalType": "bytes32[]",
                  "name": "priorOrderHashes",
                  "type": "bytes32[]"
                },
                {
                  "components": [
                    {
                      "internalType": "uint256",
                      "name": "orderIndex",
                      "type": "uint256"
                    },
                    {
                      "internalType": "enum Side",
                      "name": "side",
                      "type": "uint8"
                    },
                    {
                      "internalType": "uint256",
                      "name": "index",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "bytes32[]",
                      "name": "criteriaProof",
                      "type": "bytes32[]"
                    }
                  ],
                  "internalType": "struct CriteriaResolver[]",
                  "name": "criteriaResolvers",
                  "type": "tuple[]"
                }
              ],
              "name": "isValidOrderIncludingExtraData",
              "outputs": [
                {
                  "internalType": "bytes4",
                  "name": "validOrderMagicValue",
                  "type": "bytes4"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "",
              "opcodes": "",
              "sourceMap": ""
            },
            "methodIdentifiers": {
              "isValidOrder(bytes32,address,address,bytes32)": "0e1d31dc",
              "isValidOrderIncludingExtraData(bytes32,address,((address,address,(uint8,address,uint256,uint256,uint256)[],(uint8,address,uint256,uint256,uint256,address)[],uint8,uint256,uint256,bytes32,uint256,bytes32,uint256),uint120,uint120,bytes,bytes),bytes32[],(uint256,uint8,uint256,uint256,bytes32[])[])": "33131570"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"}],\"name\":\"isValidOrder\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"validOrderMagicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"}],\"internalType\":\"struct OfferItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifierOrCriteria\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endAmount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"internalType\":\"struct ConsiderationItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"},{\"internalType\":\"enum OrderType\",\"name\":\"orderType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"startTime\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"endTime\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"zoneHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"salt\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"totalOriginalConsiderationItems\",\"type\":\"uint256\"}],\"internalType\":\"struct OrderParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"uint120\",\"name\":\"numerator\",\"type\":\"uint120\"},{\"internalType\":\"uint120\",\"name\":\"denominator\",\"type\":\"uint120\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"internalType\":\"struct AdvancedOrder\",\"name\":\"order\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"priorOrderHashes\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"enum Side\",\"name\":\"side\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"criteriaProof\",\"type\":\"bytes32[]\"}],\"internalType\":\"struct CriteriaResolver[]\",\"name\":\"criteriaResolvers\",\"type\":\"tuple[]\"}],\"name\":\"isValidOrderIncludingExtraData\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"validOrderMagicValue\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/interfaces/ZoneInterface.sol\":\"ZoneInterface\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/ZoneInterface.sol\":{\"keccak256\":\"0x5c5d749fd3de01bd89acf7cb08f11d041b3a600819e18b8a51cebd65285ced46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43788f6ae192a2063f185ccb87853576e4d90ea8f1df19d1334d2e9be62333f3\",\"dweb:/ipfs/QmXSXFPhSNsTv4kvBZbCHwzakoAxvvnvZPSmw7CXg2j1vu\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/AmountDeriver.sol": {
        "AmountDeriver": {
          "abi": [
            {
              "inputs": [],
              "name": "InexactFraction",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220f82812afd7db6bb930ba2e40622f7fb9846f360bff24c2ab9caade4703d268b164736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 0x28 SLT 0xAF 0xD7 0xDB PUSH12 0xB930BA2E40622F7FB9846F36 SIGNEXTEND SELFDESTRUCT 0x24 0xC2 0xAB SWAP13 0xAA 0xDE SELFBALANCE SUB 0xD2 PUSH9 0xB164736F6C63430008 0xD STOP CALLER ",
              "sourceMap": "442:5965:20:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea2646970667358221220f82812afd7db6bb930ba2e40622f7fb9846f360bff24c2ab9caade4703d268b164736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 0x28 SLT 0xAF 0xD7 0xDB PUSH12 0xB930BA2E40622F7FB9846F36 SIGNEXTEND SELFDESTRUCT 0x24 0xC2 0xAB SWAP13 0xAA 0xDE SELFBALANCE SUB 0xD2 PUSH9 0xB164736F6C63430008 0xD STOP CALLER ",
              "sourceMap": "442:5965:20:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InexactFraction\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"InexactFraction()\":[{\"details\":\"Revert with an error when attempting to apply a fraction as part of      a partial fill that does not divide the target amount cleanly.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"AmountDeriver\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"AmountDeriver contains pure functions related to deriving item         amounts based on partial fill quantity and on linear extrapolation         based on current time when the start amount and end amount differ.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/AmountDeriver.sol\":\"AmountDeriver\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/AmountDerivationErrors.sol\":{\"keccak256\":\"0x1cba27c1c5510ec735e47d5b8f98b50bcf5f96884f8b1a6367987fff7cdc2735\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3394e76c89cd4e558a5a25a8b71e31372ad690f62c45512be98b01cd40948d1b\",\"dweb:/ipfs/QmW2KQeNm7dRXHxYY5SzBVpZxFQ59CkNJqW2LXPdJx3hZX\"]},\"seaport/contracts/lib/AmountDeriver.sol\":{\"keccak256\":\"0x2f02fe1e7b22f5ca600416d37f6d3829b10dae8b752ea497ffc2a6a5420ad920\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://978d3a8d7aa0de2d32fde5d25b16f0d43d78d68e8ecefb2d1a80853a10eea806\",\"dweb:/ipfs/Qmam1XT3P6RPYH5tMfNyfm5i5jDrMWYqCArMar9FpDW6ji\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/Assertions.sol": {
        "Assertions": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduitController",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "BadFraction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BadReturnValueFromERC20OnTransfer",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "orderIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "considerationIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "shortfallAmount",
                  "type": "uint256"
                }
              ],
              "name": "ConsiderationNotMet",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "identifiers",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "ERC1155BatchTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "EtherTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InsufficientEtherSupplied",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidBasicOrderParameterEncoding",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidCallToConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidCanceller",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidERC721TransferAmount",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "InvalidMsgValue",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidTime",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingItemAmount",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingOriginalConsiderationItems",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "NoContract",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoReentrantCalls",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoSpecifiedOrdersAvailable",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderAlreadyFilled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderIsCancelled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderPartiallyFilled",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "PartialFillsNotEnabledForOrder",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "identifier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenTransferGenericFailure",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                }
              ],
              "name": "NonceIncremented",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderCancelled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fulfiller",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct SpentItem[]",
                  "name": "offer",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address payable",
                      "name": "recipient",
                      "type": "address"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct ReceivedItem[]",
                  "name": "consideration",
                  "type": "tuple[]"
                }
              ],
              "name": "OrderFulfilled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderValidated",
              "type": "event"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_2519": {
                  "entryPoint": null,
                  "id": 2519,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_3225": {
                  "entryPoint": null,
                  "id": 3225,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_5345": {
                  "entryPoint": null,
                  "id": 5345,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_7733": {
                  "entryPoint": null,
                  "id": 7733,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_deriveDomainSeparator_3247": {
                  "entryPoint": null,
                  "id": 3247,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_deriveTypehashes_3383": {
                  "entryPoint": 278,
                  "id": 3383,
                  "parameterSlots": 0,
                  "returnSlots": 6
                },
                "@_nameString_3264": {
                  "entryPoint": null,
                  "id": 3264,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1448,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_bytes32_fromMemory": {
                  "entryPoint": 1496,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_bytes": {
                  "entryPoint": 1532,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_59d7": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_cfcd": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1591,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7686:45",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:45",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:45",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:45",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:45"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:45",
                            "type": ""
                          }
                        ],
                        "src": "14:290:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "407:147:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "453:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "462:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "465:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "455:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "455:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "455:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "428:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "437:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "424:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "424:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "449:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "420:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "420:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "417:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "478:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "494:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "488:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "488:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "478:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "513:35:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "533:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "544:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "529:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "529:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:25:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "365:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "376:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "388:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "396:6:45",
                            "type": ""
                          }
                        ],
                        "src": "309:245:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "614:59:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "631:3:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "636:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "624:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "624:16:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "624:16:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "649:18:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "660:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "665:1:45",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "656:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "656:11:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "649:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_59d7",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "598:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "606:3:45",
                            "type": ""
                          }
                        ],
                        "src": "559:114:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1476:365:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1493:3:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1498:12:45",
                                    "type": "",
                                    "value": "OfferItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1486:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1486:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1486:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1531:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1536:2:45",
                                        "type": "",
                                        "value": "10"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1527:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1527:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1541:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1520:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1520:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1520:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1579:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1584:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1575:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1575:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1589:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1568:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1568:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1568:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1626:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1631:2:45",
                                        "type": "",
                                        "value": "39"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1622:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1622:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1636:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1615:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1615:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1615:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1688:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1693:2:45",
                                        "type": "",
                                        "value": "68"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1684:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1684:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1698:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1677:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1677:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1677:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1741:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1746:2:45",
                                        "type": "",
                                        "value": "88"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1737:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1737:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1751:19:45",
                                    "type": "",
                                    "value": "uint256 endAmount"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1730:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1730:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1730:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1791:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1796:3:45",
                                        "type": "",
                                        "value": "105"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1787:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1787:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1802:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1780:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1780:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1780:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1815:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1826:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1831:3:45",
                                    "type": "",
                                    "value": "106"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1822:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1822:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1815:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1460:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1468:3:45",
                            "type": ""
                          }
                        ],
                        "src": "678:1163:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2745:425:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2762:3:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2767:20:45",
                                    "type": "",
                                    "value": "ConsiderationItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2755:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2755:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2755:33:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2808:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2813:2:45",
                                        "type": "",
                                        "value": "18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2804:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2804:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2818:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2797:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2797:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2797:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2856:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2861:2:45",
                                        "type": "",
                                        "value": "33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2852:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2852:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2866:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2845:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2845:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2845:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2903:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2908:2:45",
                                        "type": "",
                                        "value": "47"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2899:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2899:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2913:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2892:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2892:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2892:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2965:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2970:2:45",
                                        "type": "",
                                        "value": "76"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2961:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2961:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2975:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2954:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2954:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2954:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3018:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3023:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3014:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3014:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3028:20:45",
                                    "type": "",
                                    "value": "uint256 endAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3007:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3007:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3007:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3069:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3074:3:45",
                                        "type": "",
                                        "value": "114"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3065:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3065:13:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320726563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3080:19:45",
                                    "type": "",
                                    "value": "address recipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3058:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3058:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3058:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3120:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3125:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3116:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3116:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3131:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3109:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3109:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3109:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3144:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3155:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3160:3:45",
                                    "type": "",
                                    "value": "132"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3151:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3151:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3144:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2729:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2737:3:45",
                            "type": ""
                          }
                        ],
                        "src": "1846:1324:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3230:78:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3247:3:45"
                                  },
                                  {
                                    "hexValue": "6279746573333220636f6e647569744b65792c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3252:21:45",
                                    "type": "",
                                    "value": "bytes32 conduitKey,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3240:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3240:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3240:34:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3283:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3294:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3299:2:45",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3290:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3290:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_cfcd",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3214:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3222:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3175:133:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3363:72:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3380:3:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206e6f6e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3385:15:45",
                                    "type": "",
                                    "value": "uint256 nonce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3373:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3373:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3373:28:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3410:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3421:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3426:2:45",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3417:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3417:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3410:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3347:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3355:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3313:122:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4844:659:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4861:3:45"
                                  },
                                  {
                                    "hexValue": "4f72646572436f6d706f6e656e747328",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4866:18:45",
                                    "type": "",
                                    "value": "OrderComponents("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4854:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4854:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4854:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4905:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4910:2:45",
                                        "type": "",
                                        "value": "16"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4901:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4901:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373206f6666657265722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4915:18:45",
                                    "type": "",
                                    "value": "address offerer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4894:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4894:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4894:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4954:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4959:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4950:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4950:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373207a6f6e652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4964:15:45",
                                    "type": "",
                                    "value": "address zone,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4943:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4943:37:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4943:37:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5000:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5005:2:45",
                                        "type": "",
                                        "value": "45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4996:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4996:12:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d5b5d206f666665722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5010:20:45",
                                    "type": "",
                                    "value": "OfferItem[] offer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4989:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4989:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4989:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5051:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5056:2:45",
                                        "type": "",
                                        "value": "63"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5047:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5047:12:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5061:34:45",
                                    "type": "",
                                    "value": "ConsiderationItem[] consideratio"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5040:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5040:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5040:56:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5116:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5121:2:45",
                                        "type": "",
                                        "value": "95"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5112:12:45"
                                  },
                                  {
                                    "hexValue": "6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5126:4:45",
                                    "type": "",
                                    "value": "n,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5105:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5105:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5105:26:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5151:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5156:2:45",
                                        "type": "",
                                        "value": "97"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5147:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5147:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206f72646572547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5161:18:45",
                                    "type": "",
                                    "value": "uint8 orderType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5140:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5140:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5140:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5200:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5205:3:45",
                                        "type": "",
                                        "value": "113"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5196:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5196:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620737461727454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5211:20:45",
                                    "type": "",
                                    "value": "uint256 startTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5189:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5189:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5189:43:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5252:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5257:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5248:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5248:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e6454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5263:18:45",
                                    "type": "",
                                    "value": "uint256 endTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5241:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5241:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5241:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5302:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5307:3:45",
                                        "type": "",
                                        "value": "147"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5298:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5298:13:45"
                                  },
                                  {
                                    "hexValue": "62797465733332207a6f6e65486173682c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5313:19:45",
                                    "type": "",
                                    "value": "bytes32 zoneHash,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5291:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5291:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5291:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5353:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5358:3:45",
                                        "type": "",
                                        "value": "164"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5349:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5349:13:45"
                                  },
                                  {
                                    "hexValue": "75696e743235362073616c742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5364:15:45",
                                    "type": "",
                                    "value": "uint256 salt,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5342:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5342:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5342:38:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5389:108:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "5485:3:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5490:3:45",
                                                "type": "",
                                                "value": "177"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5481:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5481:13:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_stringliteral_cfcd",
                                          "nodeType": "YulIdentifier",
                                          "src": "5451:29:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5451:44:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_stringliteral",
                                      "nodeType": "YulIdentifier",
                                      "src": "5426:24:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5426:70:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_stringliteral_59d7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5396:29:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5396:101:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5389:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4828:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4836:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3440:2063:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6205:306:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6222:3:45"
                                  },
                                  {
                                    "hexValue": "454950373132446f6d61696e28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6227:15:45",
                                    "type": "",
                                    "value": "EIP712Domain("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6215:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6215:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6215:28:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6263:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6268:2:45",
                                        "type": "",
                                        "value": "13"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6259:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6259:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e67206e616d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6273:14:45",
                                    "type": "",
                                    "value": "string name,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6252:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6252:36:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6252:36:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6308:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6313:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6304:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6304:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e672076657273696f6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6318:17:45",
                                    "type": "",
                                    "value": "string version,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6297:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6297:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6297:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6356:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6361:2:45",
                                        "type": "",
                                        "value": "40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6352:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6352:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620636861696e49642c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6366:18:45",
                                    "type": "",
                                    "value": "uint256 chainId,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6345:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6345:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6345:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6405:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6410:2:45",
                                        "type": "",
                                        "value": "56"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6401:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6401:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320766572696679696e67436f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6415:27:45",
                                    "type": "",
                                    "value": "address verifyingContract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6394:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6394:49:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6394:49:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6463:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6468:2:45",
                                        "type": "",
                                        "value": "81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6459:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6459:12:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6473:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6452:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6452:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6452:25:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6486:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6497:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6502:2:45",
                                    "type": "",
                                    "value": "82"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6493:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6493:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6486:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6189:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6197:3:45",
                            "type": ""
                          }
                        ],
                        "src": "5508:1003:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6565:287:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6575:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6595:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6589:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6589:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6579:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6610:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6619:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6614:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6681:76:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6706:3:45"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "6711:1:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6702:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6702:11:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6729:5:45"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6736:1:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6725:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6725:13:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "6740:4:45",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6721:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6721:24:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6715:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6715:31:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6695:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6695:52:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6695:52:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6640:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6643:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6637:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6637:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6651:21:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6653:17:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6662:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6665:4:45",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6658:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6658:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6653:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6633:3:45",
                                "statements": []
                              },
                              "src": "6629:128:45"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6783:31:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6796:3:45"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "6801:6:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6792:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6792:16:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6810:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6785:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6785:27:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6785:27:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6772:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6775:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6769:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6769:13:45"
                              },
                              "nodeType": "YulIf",
                              "src": "6766:48:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6823:23:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6834:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6839:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6830:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6830:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6823:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6542:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6549:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6557:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6516:336:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7086:104:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7096:88:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7120:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7145:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "7170:6:45"
                                          },
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "7178:3:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_bytes",
                                          "nodeType": "YulIdentifier",
                                          "src": "7153:16:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7153:29:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "7128:16:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7128:55:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "7103:16:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7103:81:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7096:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7046:3:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7051:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7059:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7067:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7078:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6857:333:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7408:276:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7418:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7430:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7441:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7426:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7426:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7418:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7461:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7472:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7454:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7454:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7454:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7499:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7510:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7495:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7495:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7515:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7488:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7488:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7488:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7542:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7553:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7538:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7538:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7558:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7531:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7531:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7531:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7585:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7596:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7581:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7581:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7601:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7574:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7574:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7574:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7628:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7639:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7624:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7624:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7649:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7665:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7670:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "7661:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7661:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7674:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "7657:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7657:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7645:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7645:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7617:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7617:61:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7617:61:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7345:9:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7356:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7364:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7372:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7380:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7388:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7399:4:45",
                            "type": ""
                          }
                        ],
                        "src": "7195:489:45"
                      }
                    ]
                  },
                  "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 abi_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OfferItem(\")\n        mstore(add(pos, 10), \"uint8 itemType,\")\n        mstore(add(pos, 25), \"address token,\")\n        mstore(add(pos, 39), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 68), \"uint256 startAmount,\")\n        mstore(add(pos, 88), \"uint256 endAmount\")\n        mstore(add(pos, 105), \")\")\n        end := add(pos, 106)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"ConsiderationItem(\")\n        mstore(add(pos, 18), \"uint8 itemType,\")\n        mstore(add(pos, 33), \"address token,\")\n        mstore(add(pos, 47), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 76), \"uint256 startAmount,\")\n        mstore(add(pos, 96), \"uint256 endAmount,\")\n        mstore(add(pos, 114), \"address recipient\")\n        mstore(add(pos, 131), \")\")\n        end := add(pos, 132)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral(pos) -> end\n    {\n        mstore(pos, \"uint256 nonce\")\n        end := add(pos, 13)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address zone,\")\n        mstore(add(pos, 45), \"OfferItem[] offer,\")\n        mstore(add(pos, 63), \"ConsiderationItem[] consideratio\")\n        mstore(add(pos, 95), \"n,\")\n        mstore(add(pos, 97), \"uint8 orderType,\")\n        mstore(add(pos, 113), \"uint256 startTime,\")\n        mstore(add(pos, 131), \"uint256 endTime,\")\n        mstore(add(pos, 147), \"bytes32 zoneHash,\")\n        mstore(add(pos, 164), \"uint256 salt,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral(abi_encode_stringliteral_cfcd(add(pos, 177))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value, i), 0x20)))\n        }\n        if gt(i, length) { mstore(add(pos, length), 0) }\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        end := abi_encode_bytes(value2, abi_encode_bytes(value1, abi_encode_bytes(value0, pos)))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}",
                  "id": 45,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101c060405234801561001157600080fd5b506040516106f83803806106f8833981016040819052610030916105a8565b808061003a610116565b610120526101005260e05260c081815260a0838152608085815246610140819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610160526001600160a01b03811661018081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010491906105d8565b506101a052505060016000555061065e565b6000808080808061014760408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260018152603160f81b90840152519097507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6965060009161024991016909ecccccae492e8cada560b31b81526e1d5a5b9d0e081a5d195b551e5c194b608a1b600a8201526d1859191c995cdcc81d1bdad95b8b60921b60198201527f75696e74323536206964656e7469666965724f7243726974657269612c00000060278201527f75696e74323536207374617274416d6f756e742c0000000000000000000000006044820152701d5a5b9d0c8d4d88195b99105b5bdd5b9d607a1b6058820152602960f81b6069820152606a0190565b60408051601f1981840301815282825271086dedce6d2c8cae4c2e8d2dedc92e8cada560731b60208401526e1d5a5b9d0e081a5d195b551e5c194b608a1b60328401526d1859191c995cdcc81d1bdad95b8b60921b60418401527f75696e74323536206964656e7469666965724f7243726974657269612c000000604f8401527f75696e74323536207374617274416d6f756e742c000000000000000000000000606c840152711d5a5b9d0c8d4d88195b99105b5bdd5b9d0b60721b6080840152701859191c995cdcc81c9958da5c1a595b9d607a1b6092840152602960f81b60a384018190528251808503608401815260a485019093526f09ee4c8cae486dedae0dedccadce8e6560831b60c48501526f1859191c995cdcc81bd999995c995c8b60821b60d48501526c1859191c995cdcc81e9bdb994b609a1b60e48501527113d999995c925d195b56d7481bd999995c8b60721b60f18501527f436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f610103850152611b8b60f21b6101238501526f1d5a5b9d0e081bdc99195c951e5c194b60821b610125850152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b6101358501526f1d5a5b9d0c8d4d88195b99151a5b594b60821b61014785015270189e5d195ccccc881e9bdb9952185cda0b607a1b6101578501526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101688501527f6279746573333220636f6e647569744b65792c000000000000000000000000006101758501526c75696e74323536206e6f6e636560981b6101888501526101958401529250906000906101960160408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b6071830152915060720160408051601f19818403018152908290528051602091820120855186830120855186840120919a50985096506105859183918591879101610637565b604051602081830303815290604052805190602001209350505050909192939495565b6000602082840312156105ba57600080fd5b81516001600160a01b03811681146105d157600080fd5b9392505050565b600080604083850312156105eb57600080fd5b505080516020909101519092909150565b6000815160005b8181101561061d5760208185018101518683015201610603565b8181111561062c576000828601525b509290920192915050565b600061065561064f61064984886105fc565b866105fc565b846105fc565b95945050505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051603f6106b960003960005050600050506000505060005050600050506000505060005050600050506000505060005050603f6000f3fe6080604052600080fdfea2646970667358221220ed5f28ecd1d968793df5aef9c60477ceaa0517ae1165a70e9f2f24467eb9247364736f6c634300080d0033",
              "opcodes": "PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x6F8 CODESIZE SUB DUP1 PUSH2 0x6F8 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0x5A8 JUMP JUMPDEST DUP1 DUP1 PUSH2 0x3A PUSH2 0x116 JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH2 0x100 MSTORE PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x160 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x180 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE0 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 0x104 SWAP2 SWAP1 PUSH2 0x5D8 JUMP JUMPDEST POP PUSH2 0x1A0 MSTORE POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP PUSH2 0x65E JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x147 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP8 POP PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP7 POP PUSH1 0x0 SWAP2 PUSH2 0x249 SWAP2 ADD PUSH10 0x9ECCCCCAE492E8CADA5 PUSH1 0xB3 SHL DUP2 MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0xA DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x19 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x27 DUP3 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D PUSH1 0x7A SHL PUSH1 0x58 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x69 DUP3 ADD MSTORE PUSH1 0x6A ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE PUSH18 0x86DEDCE6D2C8CAE4C2E8D2DEDC92E8CADA5 PUSH1 0x73 SHL PUSH1 0x20 DUP5 ADD MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0x32 DUP5 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x41 DUP5 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x4F DUP5 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x6C DUP5 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D0B PUSH1 0x72 SHL PUSH1 0x80 DUP5 ADD MSTORE PUSH17 0x1859191C995CDCC81C9958DA5C1A595B9D PUSH1 0x7A SHL PUSH1 0x92 DUP5 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0xA3 DUP5 ADD DUP2 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB PUSH1 0x84 ADD DUP2 MSTORE PUSH1 0xA4 DUP6 ADD SWAP1 SWAP4 MSTORE PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL PUSH1 0xC4 DUP6 ADD MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0xD4 DUP6 ADD MSTORE PUSH13 0x1859191C995CDCC81E9BDB994B PUSH1 0x9A SHL PUSH1 0xE4 DUP6 ADD MSTORE PUSH18 0x13D999995C925D195B56D7481BD999995C8B PUSH1 0x72 SHL PUSH1 0xF1 DUP6 ADD MSTORE PUSH32 0x436F6E73696465726174696F6E4974656D5B5D20636F6E73696465726174696F PUSH2 0x103 DUP6 ADD MSTORE PUSH2 0x1B8B PUSH1 0xF2 SHL PUSH2 0x123 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0E081BDC99195C951E5C194B PUSH1 0x82 SHL PUSH2 0x125 DUP6 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH2 0x135 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH2 0x147 DUP6 ADD MSTORE PUSH17 0x189E5D195CCCCC881E9BDB9952185CDA0B PUSH1 0x7A SHL PUSH2 0x157 DUP6 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x168 DUP6 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x175 DUP6 ADD MSTORE PUSH13 0x75696E74323536206E6F6E6365 PUSH1 0x98 SHL PUSH2 0x188 DUP6 ADD MSTORE PUSH2 0x195 DUP5 ADD MSTORE SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x196 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 DUP6 MLOAD DUP7 DUP4 ADD KECCAK256 DUP6 MLOAD DUP7 DUP5 ADD KECCAK256 SWAP2 SWAP11 POP SWAP9 POP SWAP7 POP PUSH2 0x585 SWAP2 DUP4 SWAP2 DUP6 SWAP2 DUP8 SWAP2 ADD PUSH2 0x637 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP POP POP POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x61D JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0x603 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x62C JUMPI PUSH1 0x0 DUP3 DUP7 ADD MSTORE JUMPDEST POP SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x655 PUSH2 0x64F PUSH2 0x649 DUP5 DUP9 PUSH2 0x5FC JUMP JUMPDEST DUP7 PUSH2 0x5FC JUMP JUMPDEST DUP5 PUSH2 0x5FC JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH1 0x3F PUSH2 0x6B9 PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x3F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xED 0x5F 0x28 0xEC 0xD1 0xD9 PUSH9 0x793DF5AEF9C60477CE 0xAA SDIV OR 0xAE GT PUSH6 0xA70E9F2F2446 PUSH31 0xB9247364736F6C634300080D00330000000000000000000000000000000000 ",
              "sourceMap": "541:5506:21:-:0;;;992:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1058:17;;1967:19:23;:17;:19::i;:::-;1760:226;;;;;;;;;;;;;;-1:-1:-1;1760:226:23;;;2087:13;2075:25;;;;-1:-1:-1;2761:187:23;;-1:-1:-1;2761:187:23;;;7454:25:45;;;;7495:18;;;7488:34;;;;-1:-1:-1;7538:18:45;;7531:34;;;;7581:18;;;7574:34;2929:4:23;7624:19:45;;;7617:61;2761:187:23;;;;;;;;;;7426:19:45;;2761:187:23;;;2738:220;;;;;2110:44;;-1:-1:-1;;;;;2213:67:23;;;;;;2420:42;;;-1:-1:-1;;;2420:42:23;;;;:40;;:42;;;;;;;;;;;;;2213:67;2420:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2372:100:23;;-1:-1:-1;;2287:1:24;657:16:36;:31;-1:-1:-1;541:5506:21;;4735:3021:23;4824:16;;;;;;5140:13;3927:22;;;;;;;;;;;;-1:-1:-1;;;3927:22:23;;;;;3804:152;5140:13;5124:31;;;;;;;5252:10;;;;;;;;;;;-1:-1:-1;;;5252:10:23;;;;5384:264;5124:31;;-1:-1:-1;5242:21:23;;-1:-1:-1;;;5384:264:23;;;-1:-1:-1;;;1486:25:45;;-1:-1:-1;;;1536:2:45;1527:12;;1520:39;-1:-1:-1;;;1584:2:45;1575:12;;1568:38;1636:31;1631:2;1622:12;;1615:53;1698:22;1693:2;1684:12;;1677:44;-1:-1:-1;;;1746:2:45;1737:12;;1730:41;-1:-1:-1;;;1796:3:45;1787:13;;1780:26;1831:3;1822:13;;678:1163;5384:264:23;;;;-1:-1:-1;;5384:264:23;;;;;;;;;-1:-1:-1;;;5384:264:23;5785:310;;2755:33:45;-1:-1:-1;;;2804:12:45;;;2797:39;-1:-1:-1;;;2852:12:45;;;2845:38;2913:31;2899:12;;;2892:53;2975:22;2961:12;;;2954:44;-1:-1:-1;;;3014:12:45;;;3007:42;-1:-1:-1;;;3065:13:45;;;3058:42;-1:-1:-1;;;3116:13:45;;;3109:26;;;5785:310:23;;;;;;;;;3151:13:45;;;5785:310:23;;;-1:-1:-1;;;6260:488:23;;;4854:31:45;-1:-1:-1;;;4901:12:45;;;4894:40;-1:-1:-1;;;4950:12:45;;;4943:37;-1:-1:-1;;;4996:12:45;;;4989:42;5061:34;5047:12;;;5040:56;-1:-1:-1;;;5112:12:45;;;5105:26;-1:-1:-1;;;5147:12:45;;;5140:40;-1:-1:-1;;;5196:13:45;;;5189:43;-1:-1:-1;;;5248:13:45;;;5241:41;-1:-1:-1;;;5298:13:45;;;5291:42;-1:-1:-1;;;5349:13:45;;;5342:38;3252:21;5481:13;;;3240:34;-1:-1:-1;;;3290:12:45;;;3373:28;3417:12;;;624:16;5384:264:23;-1:-1:-1;5785:310:23;-1:-1:-1;;656:11:45;;6260:488:23;;;-1:-1:-1;;6260:488:23;;;;;;;;;;-1:-1:-1;;;6260:488:23;6893:248;;6215:28:45;-1:-1:-1;;;6259:12:45;;;6252:36;-1:-1:-1;;;6304:12:45;;;6297:39;-1:-1:-1;;;6352:12:45;;;6345:40;6415:27;6401:12;;;6394:49;-1:-1:-1;;;6459:12:45;;;6452:25;6260:488:23;-1:-1:-1;6493:12:45;;6893:248:23;;;-1:-1:-1;;6893:248:23;;;;;;;;;;6870:281;;6893:248;6870:281;;;;7261:30;;;;;;7409:38;;;;;;6870:281;;-1:-1:-1;7261:30:23;-1:-1:-1;7409:38:23;-1:-1:-1;7577:162:23;;7611:32;;7419:27;;7271:19;;7577:162;;:::i;:::-;;;;;;;;;;;;;7554:195;;;;;;7538:211;;5051:2705;;;4735:3021;;;;;;:::o;14:290:45:-;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:45;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:45:o;309:245::-;388:6;396;449:2;437:9;428:7;424:23;420:32;417:52;;;465:1;462;455:12;417:52;-1:-1:-1;;488:16:45;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:45:o;6516:336::-;6557:3;6595:5;6589:12;6619:1;6629:128;6643:6;6640:1;6637:13;6629:128;;;6740:4;6725:13;;;6721:24;;6715:31;6702:11;;;6695:52;6658:12;6629:128;;;6775:6;6772:1;6769:13;6766:48;;;6810:1;6801:6;6796:3;6792:16;6785:27;6766:48;-1:-1:-1;6830:16:45;;;;;6516:336;-1:-1:-1;;6516:336:45:o;6857:333::-;7078:3;7103:81;7128:55;7153:29;7178:3;7170:6;7153:29;:::i;:::-;7145:6;7128:55;:::i;:::-;7120:6;7103:81;:::i;:::-;7096:88;6857:333;-1:-1:-1;;;;;6857:333:45:o;7195:489::-;541:5506:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea2646970667358221220ed5f28ecd1d968793df5aef9c60477ceaa0517ae1165a70e9f2f24467eb9247364736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xED 0x5F 0x28 0xEC 0xD1 0xD9 PUSH9 0x793DF5AEF9C60477CE 0xAA SDIV OR 0xAE GT PUSH6 0xA70E9F2F2446 PUSH31 0xB9247364736F6C634300080D00330000000000000000000000000000000000 ",
              "sourceMap": "541:5506:21:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"NonceIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fulfiller\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct SpentItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct ReceivedItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Derive and set hashes, reference chainId, and associated domain      separator during deployment.\",\"params\":{\"conduitController\":\"A contract that deploys conduits, or proxies                          that may optionally be used to transfer approved                          ERC20/721/1155 tokens.\"}}},\"title\":\"Assertions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Assertions contains logic for making various assertions that do not         fit neatly within a dedicated semantic scope.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/Assertions.sol\":\"Assertions\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/ConduitControllerInterface.sol\":{\"keccak256\":\"0x86b7ceb6ff7ce653fa7d0d79eeb8b96ec57eedd35f8c87e9838dde6c23f317bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://453fa0365834a50956e513d306371bfb7019124150bf9afd1699599fe6f7852c\",\"dweb:/ipfs/QmXiqKzGdj2A4TsuHtFLTgdLPRFwasbWWibNBRP5cikJod\"]},\"seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"keccak256\":\"0xf0d0eda6b47217d0e7c2862fdd5d7857cb828f9e0fc52e2c37c6d2b454832a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://374d19e0d9e5ce76e10dce8bada5ee9d1adcd54898c0cba9099d0dd72a5bf996\",\"dweb:/ipfs/QmS49qk49jmkPuMzLbbop5s7eJxbfRzKokQXB2QJjfVPHT\"]},\"seaport/contracts/interfaces/ReentrancyErrors.sol\":{\"keccak256\":\"0x9ab27fa5a68f55ad89072ea213c6f12979ae469041ca473d81f800dbdbe9bb48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0cc617da7254d981fd5970d16acc2a6f6fe2fe0bc3e2d0976f7c01a4893430ec\",\"dweb:/ipfs/QmbhqKxfhrfPAjp99LVspxopQG7Mb9L9xdSa38ujCxmvTJ\"]},\"seaport/contracts/interfaces/TokenTransferrerErrors.sol\":{\"keccak256\":\"0x128fbb0236de5e52c34876c61148e04c12289e92d6bce2270760905617a01b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ed114ea7bf9ce55065d853f0f705eb82cc840672e0c2ab899691ab5703d2e98\",\"dweb:/ipfs/QmXQsajetWBmU7tzjoFm5wyajRKrMMEGXFF7ZQxaH7ZceG\"]},\"seaport/contracts/lib/Assertions.sol\":{\"keccak256\":\"0xb2ef1d902d0eefb7aaffc720354dd0352f95442178091f059d31ebe096894586\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6f121104190dd5e5a4e98fcbf024ad300c4b9704768fdb49d81f270c22a8067\",\"dweb:/ipfs/QmWKzhVq1itpqTfeiCELGb1jDcTnBdCwroHgGMzqDuYWN8\"]},\"seaport/contracts/lib/ConsiderationBase.sol\":{\"keccak256\":\"0x1015a0bb6fff27278ceec2f76cbf0c775bfb3e8d03cafe8d3549e252e9563ba2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f7d3b48069268df59a77293a7cdc232df35c5b1c8b1974b422a850bedb875f6\",\"dweb:/ipfs/QmSMMnXqsUEWuC1u7BF6coTXK63BXaQYvWqX69doaatKw8\"]},\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]},\"seaport/contracts/lib/GettersAndDerivers.sol\":{\"keccak256\":\"0xb9d0cf2a84567b6b70e1ddd9e3450dddf8139e5396bcac24c42f46db16228efa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99767431817fd6b157bc199784ca3f3bc2cf024a332ae8e2a5eb7e3db0f2b47d\",\"dweb:/ipfs/QmPWaJet2TPiWc7xEo7QqVpctaLvXPZFep8R8Vi4ZRzzCw\"]},\"seaport/contracts/lib/NonceManager.sol\":{\"keccak256\":\"0xe8b6e40830e216912ce483e867151e84cc0b290404220e1ed5fbb69821161f8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4ef49cbc0b5385b64c1f8c9d5cf572dff35ec291970714ef11520de2c01ab9c\",\"dweb:/ipfs/QmfJoNCtAHUYsidmUaiMBP8wMzUYCtg33G8nUqyME5AftL\"]},\"seaport/contracts/lib/ReentrancyGuard.sol\":{\"keccak256\":\"0xec219fb657ce8400835d8d1ff87716247c5fdde51bca31fddf19415abad773db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eca390f7b8fbccc703ad22edd4f35fa896de59912f21d9471d51ef83b961d3c5\",\"dweb:/ipfs/QmXyxcfzgD4SaTtgqGjUjxK4tb76NiPcooMkL9c11yhm2L\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/BasicOrderFulfiller.sol": {
        "BasicOrderFulfiller": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduitController",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "BadContractSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "BadFraction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BadReturnValueFromERC20OnTransfer",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                }
              ],
              "name": "BadSignatureV",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "orderIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "considerationIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "shortfallAmount",
                  "type": "uint256"
                }
              ],
              "name": "ConsiderationNotMet",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "identifiers",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "ERC1155BatchTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "EtherTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InsufficientEtherSupplied",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidBasicOrderParameterEncoding",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidCallToConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidCanceller",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidERC721TransferAmount",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "InvalidMsgValue",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "InvalidRestrictedOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSigner",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidTime",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingItemAmount",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingOriginalConsiderationItems",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "NoContract",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoReentrantCalls",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoSpecifiedOrdersAvailable",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderAlreadyFilled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderIsCancelled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderPartiallyFilled",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "PartialFillsNotEnabledForOrder",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "identifier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenTransferGenericFailure",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                }
              ],
              "name": "NonceIncremented",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderCancelled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fulfiller",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct SpentItem[]",
                  "name": "offer",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address payable",
                      "name": "recipient",
                      "type": "address"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct ReceivedItem[]",
                  "name": "consideration",
                  "type": "tuple[]"
                }
              ],
              "name": "OrderFulfilled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderValidated",
              "type": "event"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_2519": {
                  "entryPoint": null,
                  "id": 2519,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_2625": {
                  "entryPoint": null,
                  "id": 2625,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_3225": {
                  "entryPoint": null,
                  "id": 3225,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_4482": {
                  "entryPoint": null,
                  "id": 4482,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_5345": {
                  "entryPoint": null,
                  "id": 5345,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_7098": {
                  "entryPoint": null,
                  "id": 7098,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_7733": {
                  "entryPoint": null,
                  "id": 7733,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_8248": {
                  "entryPoint": null,
                  "id": 8248,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_deriveDomainSeparator_3247": {
                  "entryPoint": null,
                  "id": 3247,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_deriveTypehashes_3383": {
                  "entryPoint": 287,
                  "id": 3383,
                  "parameterSlots": 0,
                  "returnSlots": 6
                },
                "@_nameString_3264": {
                  "entryPoint": null,
                  "id": 3264,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1457,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_bytes32_fromMemory": {
                  "entryPoint": 1505,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_bytes": {
                  "entryPoint": 1541,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_59d7": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_cfcd": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1600,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7686:45",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:45",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:45",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:45",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:45"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:45",
                            "type": ""
                          }
                        ],
                        "src": "14:290:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "407:147:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "453:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "462:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "465:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "455:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "455:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "455:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "428:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "437:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "424:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "424:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "449:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "420:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "420:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "417:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "478:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "494:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "488:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "488:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "478:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "513:35:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "533:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "544:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "529:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "529:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:25:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "365:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "376:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "388:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "396:6:45",
                            "type": ""
                          }
                        ],
                        "src": "309:245:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "614:59:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "631:3:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "636:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "624:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "624:16:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "624:16:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "649:18:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "660:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "665:1:45",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "656:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "656:11:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "649:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_59d7",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "598:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "606:3:45",
                            "type": ""
                          }
                        ],
                        "src": "559:114:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1476:365:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1493:3:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1498:12:45",
                                    "type": "",
                                    "value": "OfferItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1486:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1486:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1486:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1531:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1536:2:45",
                                        "type": "",
                                        "value": "10"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1527:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1527:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1541:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1520:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1520:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1520:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1579:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1584:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1575:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1575:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1589:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1568:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1568:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1568:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1626:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1631:2:45",
                                        "type": "",
                                        "value": "39"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1622:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1622:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1636:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1615:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1615:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1615:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1688:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1693:2:45",
                                        "type": "",
                                        "value": "68"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1684:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1684:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1698:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1677:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1677:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1677:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1741:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1746:2:45",
                                        "type": "",
                                        "value": "88"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1737:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1737:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1751:19:45",
                                    "type": "",
                                    "value": "uint256 endAmount"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1730:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1730:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1730:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1791:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1796:3:45",
                                        "type": "",
                                        "value": "105"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1787:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1787:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1802:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1780:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1780:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1780:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1815:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1826:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1831:3:45",
                                    "type": "",
                                    "value": "106"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1822:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1822:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1815:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1460:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1468:3:45",
                            "type": ""
                          }
                        ],
                        "src": "678:1163:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2745:425:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2762:3:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2767:20:45",
                                    "type": "",
                                    "value": "ConsiderationItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2755:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2755:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2755:33:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2808:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2813:2:45",
                                        "type": "",
                                        "value": "18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2804:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2804:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2818:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2797:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2797:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2797:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2856:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2861:2:45",
                                        "type": "",
                                        "value": "33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2852:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2852:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2866:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2845:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2845:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2845:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2903:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2908:2:45",
                                        "type": "",
                                        "value": "47"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2899:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2899:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2913:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2892:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2892:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2892:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2965:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2970:2:45",
                                        "type": "",
                                        "value": "76"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2961:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2961:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2975:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2954:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2954:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2954:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3018:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3023:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3014:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3014:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3028:20:45",
                                    "type": "",
                                    "value": "uint256 endAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3007:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3007:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3007:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3069:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3074:3:45",
                                        "type": "",
                                        "value": "114"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3065:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3065:13:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320726563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3080:19:45",
                                    "type": "",
                                    "value": "address recipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3058:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3058:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3058:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3120:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3125:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3116:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3116:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3131:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3109:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3109:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3109:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3144:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3155:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3160:3:45",
                                    "type": "",
                                    "value": "132"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3151:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3151:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3144:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2729:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2737:3:45",
                            "type": ""
                          }
                        ],
                        "src": "1846:1324:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3230:78:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3247:3:45"
                                  },
                                  {
                                    "hexValue": "6279746573333220636f6e647569744b65792c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3252:21:45",
                                    "type": "",
                                    "value": "bytes32 conduitKey,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3240:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3240:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3240:34:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3283:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3294:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3299:2:45",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3290:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3290:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_cfcd",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3214:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3222:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3175:133:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3363:72:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3380:3:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206e6f6e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3385:15:45",
                                    "type": "",
                                    "value": "uint256 nonce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3373:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3373:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3373:28:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3410:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3421:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3426:2:45",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3417:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3417:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3410:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3347:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3355:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3313:122:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4844:659:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4861:3:45"
                                  },
                                  {
                                    "hexValue": "4f72646572436f6d706f6e656e747328",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4866:18:45",
                                    "type": "",
                                    "value": "OrderComponents("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4854:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4854:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4854:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4905:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4910:2:45",
                                        "type": "",
                                        "value": "16"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4901:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4901:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373206f6666657265722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4915:18:45",
                                    "type": "",
                                    "value": "address offerer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4894:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4894:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4894:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4954:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4959:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4950:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4950:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373207a6f6e652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4964:15:45",
                                    "type": "",
                                    "value": "address zone,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4943:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4943:37:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4943:37:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5000:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5005:2:45",
                                        "type": "",
                                        "value": "45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4996:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4996:12:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d5b5d206f666665722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5010:20:45",
                                    "type": "",
                                    "value": "OfferItem[] offer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4989:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4989:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4989:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5051:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5056:2:45",
                                        "type": "",
                                        "value": "63"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5047:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5047:12:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5061:34:45",
                                    "type": "",
                                    "value": "ConsiderationItem[] consideratio"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5040:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5040:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5040:56:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5116:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5121:2:45",
                                        "type": "",
                                        "value": "95"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5112:12:45"
                                  },
                                  {
                                    "hexValue": "6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5126:4:45",
                                    "type": "",
                                    "value": "n,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5105:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5105:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5105:26:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5151:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5156:2:45",
                                        "type": "",
                                        "value": "97"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5147:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5147:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206f72646572547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5161:18:45",
                                    "type": "",
                                    "value": "uint8 orderType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5140:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5140:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5140:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5200:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5205:3:45",
                                        "type": "",
                                        "value": "113"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5196:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5196:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620737461727454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5211:20:45",
                                    "type": "",
                                    "value": "uint256 startTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5189:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5189:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5189:43:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5252:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5257:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5248:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5248:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e6454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5263:18:45",
                                    "type": "",
                                    "value": "uint256 endTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5241:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5241:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5241:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5302:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5307:3:45",
                                        "type": "",
                                        "value": "147"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5298:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5298:13:45"
                                  },
                                  {
                                    "hexValue": "62797465733332207a6f6e65486173682c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5313:19:45",
                                    "type": "",
                                    "value": "bytes32 zoneHash,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5291:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5291:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5291:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5353:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5358:3:45",
                                        "type": "",
                                        "value": "164"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5349:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5349:13:45"
                                  },
                                  {
                                    "hexValue": "75696e743235362073616c742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5364:15:45",
                                    "type": "",
                                    "value": "uint256 salt,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5342:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5342:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5342:38:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5389:108:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "5485:3:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5490:3:45",
                                                "type": "",
                                                "value": "177"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5481:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5481:13:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_stringliteral_cfcd",
                                          "nodeType": "YulIdentifier",
                                          "src": "5451:29:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5451:44:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_stringliteral",
                                      "nodeType": "YulIdentifier",
                                      "src": "5426:24:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5426:70:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_stringliteral_59d7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5396:29:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5396:101:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5389:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4828:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4836:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3440:2063:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6205:306:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6222:3:45"
                                  },
                                  {
                                    "hexValue": "454950373132446f6d61696e28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6227:15:45",
                                    "type": "",
                                    "value": "EIP712Domain("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6215:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6215:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6215:28:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6263:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6268:2:45",
                                        "type": "",
                                        "value": "13"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6259:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6259:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e67206e616d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6273:14:45",
                                    "type": "",
                                    "value": "string name,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6252:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6252:36:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6252:36:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6308:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6313:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6304:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6304:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e672076657273696f6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6318:17:45",
                                    "type": "",
                                    "value": "string version,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6297:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6297:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6297:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6356:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6361:2:45",
                                        "type": "",
                                        "value": "40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6352:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6352:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620636861696e49642c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6366:18:45",
                                    "type": "",
                                    "value": "uint256 chainId,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6345:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6345:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6345:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6405:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6410:2:45",
                                        "type": "",
                                        "value": "56"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6401:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6401:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320766572696679696e67436f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6415:27:45",
                                    "type": "",
                                    "value": "address verifyingContract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6394:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6394:49:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6394:49:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6463:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6468:2:45",
                                        "type": "",
                                        "value": "81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6459:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6459:12:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6473:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6452:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6452:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6452:25:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6486:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6497:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6502:2:45",
                                    "type": "",
                                    "value": "82"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6493:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6493:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6486:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6189:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6197:3:45",
                            "type": ""
                          }
                        ],
                        "src": "5508:1003:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6565:287:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6575:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6595:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6589:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6589:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6579:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6610:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6619:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6614:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6681:76:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6706:3:45"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "6711:1:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6702:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6702:11:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6729:5:45"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6736:1:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6725:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6725:13:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "6740:4:45",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6721:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6721:24:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6715:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6715:31:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6695:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6695:52:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6695:52:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6640:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6643:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6637:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6637:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6651:21:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6653:17:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6662:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6665:4:45",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6658:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6658:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6653:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6633:3:45",
                                "statements": []
                              },
                              "src": "6629:128:45"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6783:31:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6796:3:45"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "6801:6:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6792:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6792:16:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6810:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6785:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6785:27:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6785:27:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6772:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6775:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6769:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6769:13:45"
                              },
                              "nodeType": "YulIf",
                              "src": "6766:48:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6823:23:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6834:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6839:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6830:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6830:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6823:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6542:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6549:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6557:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6516:336:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7086:104:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7096:88:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7120:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7145:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "7170:6:45"
                                          },
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "7178:3:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_bytes",
                                          "nodeType": "YulIdentifier",
                                          "src": "7153:16:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7153:29:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "7128:16:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7128:55:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "7103:16:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7103:81:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7096:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7046:3:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7051:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7059:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7067:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7078:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6857:333:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7408:276:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7418:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7430:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7441:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7426:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7426:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7418:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7461:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7472:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7454:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7454:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7454:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7499:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7510:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7495:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7495:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7515:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7488:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7488:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7488:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7542:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7553:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7538:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7538:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7558:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7531:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7531:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7531:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7585:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7596:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7581:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7581:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7601:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7574:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7574:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7574:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7628:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7639:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7624:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7624:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7649:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7665:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7670:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "7661:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7661:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7674:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "7657:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7657:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7645:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7645:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7617:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7617:61:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7617:61:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7345:9:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7356:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7364:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7372:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7380:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7388:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7399:4:45",
                            "type": ""
                          }
                        ],
                        "src": "7195:489:45"
                      }
                    ]
                  },
                  "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 abi_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OfferItem(\")\n        mstore(add(pos, 10), \"uint8 itemType,\")\n        mstore(add(pos, 25), \"address token,\")\n        mstore(add(pos, 39), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 68), \"uint256 startAmount,\")\n        mstore(add(pos, 88), \"uint256 endAmount\")\n        mstore(add(pos, 105), \")\")\n        end := add(pos, 106)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"ConsiderationItem(\")\n        mstore(add(pos, 18), \"uint8 itemType,\")\n        mstore(add(pos, 33), \"address token,\")\n        mstore(add(pos, 47), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 76), \"uint256 startAmount,\")\n        mstore(add(pos, 96), \"uint256 endAmount,\")\n        mstore(add(pos, 114), \"address recipient\")\n        mstore(add(pos, 131), \")\")\n        end := add(pos, 132)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral(pos) -> end\n    {\n        mstore(pos, \"uint256 nonce\")\n        end := add(pos, 13)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address zone,\")\n        mstore(add(pos, 45), \"OfferItem[] offer,\")\n        mstore(add(pos, 63), \"ConsiderationItem[] consideratio\")\n        mstore(add(pos, 95), \"n,\")\n        mstore(add(pos, 97), \"uint8 orderType,\")\n        mstore(add(pos, 113), \"uint256 startTime,\")\n        mstore(add(pos, 131), \"uint256 endTime,\")\n        mstore(add(pos, 147), \"bytes32 zoneHash,\")\n        mstore(add(pos, 164), \"uint256 salt,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral(abi_encode_stringliteral_cfcd(add(pos, 177))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value, i), 0x20)))\n        }\n        if gt(i, length) { mstore(add(pos, length), 0) }\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        end := abi_encode_bytes(value2, abi_encode_bytes(value1, abi_encode_bytes(value0, pos)))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}",
                  "id": 45,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101c060405234801561001157600080fd5b50604051610701380380610701833981016040819052610030916105b1565b80808080808061003e61011f565b610120526101005260e05260c081815260a0838152608085815246610140819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610160526001600160a01b03811661018081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100e4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010891906105e1565b506101a05250506001600055506106679350505050565b6000808080808061015060408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260018152603160f81b90840152519097507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6965060009161025291016909ecccccae492e8cada560b31b81526e1d5a5b9d0e081a5d195b551e5c194b608a1b600a8201526d1859191c995cdcc81d1bdad95b8b60921b60198201527f75696e74323536206964656e7469666965724f7243726974657269612c00000060278201527f75696e74323536207374617274416d6f756e742c0000000000000000000000006044820152701d5a5b9d0c8d4d88195b99105b5bdd5b9d607a1b6058820152602960f81b6069820152606a0190565b60408051601f1981840301815282825271086dedce6d2c8cae4c2e8d2dedc92e8cada560731b60208401526e1d5a5b9d0e081a5d195b551e5c194b608a1b60328401526d1859191c995cdcc81d1bdad95b8b60921b60418401527f75696e74323536206964656e7469666965724f7243726974657269612c000000604f8401527f75696e74323536207374617274416d6f756e742c000000000000000000000000606c840152711d5a5b9d0c8d4d88195b99105b5bdd5b9d0b60721b6080840152701859191c995cdcc81c9958da5c1a595b9d607a1b6092840152602960f81b60a384018190528251808503608401815260a485019093526f09ee4c8cae486dedae0dedccadce8e6560831b60c48501526f1859191c995cdcc81bd999995c995c8b60821b60d48501526c1859191c995cdcc81e9bdb994b609a1b60e48501527113d999995c925d195b56d7481bd999995c8b60721b60f18501527f436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f610103850152611b8b60f21b6101238501526f1d5a5b9d0e081bdc99195c951e5c194b60821b610125850152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b6101358501526f1d5a5b9d0c8d4d88195b99151a5b594b60821b61014785015270189e5d195ccccc881e9bdb9952185cda0b607a1b6101578501526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101688501527f6279746573333220636f6e647569744b65792c000000000000000000000000006101758501526c75696e74323536206e6f6e636560981b6101888501526101958401529250906000906101960160408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b6071830152915060720160408051601f19818403018152908290528051602091820120855186830120855186840120919a509850965061058e9183918591879101610640565b604051602081830303815290604052805190602001209350505050909192939495565b6000602082840312156105c357600080fd5b81516001600160a01b03811681146105da57600080fd5b9392505050565b600080604083850312156105f457600080fd5b505080516020909101519092909150565b6000815160005b81811015610626576020818501810151868301520161060c565b81811115610635576000828601525b509290920192915050565b600061065e6106586106528488610605565b86610605565b84610605565b95945050505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051603f6106c260003960005050600050506000505060005050600050506000505060005050600050506000505060005050603f6000f3fe6080604052600080fdfea2646970667358221220cad97efea5bed9c21fb2061c3a32eb1a3c38109305c68bcd85dec520fefd506564736f6c634300080d0033",
              "opcodes": "PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x701 CODESIZE SUB DUP1 PUSH2 0x701 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0x5B1 JUMP JUMPDEST DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x3E PUSH2 0x11F JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH2 0x100 MSTORE PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x160 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x180 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE4 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 0x108 SWAP2 SWAP1 PUSH2 0x5E1 JUMP JUMPDEST POP PUSH2 0x1A0 MSTORE POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP PUSH2 0x667 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x150 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP8 POP PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP7 POP PUSH1 0x0 SWAP2 PUSH2 0x252 SWAP2 ADD PUSH10 0x9ECCCCCAE492E8CADA5 PUSH1 0xB3 SHL DUP2 MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0xA DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x19 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x27 DUP3 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D PUSH1 0x7A SHL PUSH1 0x58 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x69 DUP3 ADD MSTORE PUSH1 0x6A ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE PUSH18 0x86DEDCE6D2C8CAE4C2E8D2DEDC92E8CADA5 PUSH1 0x73 SHL PUSH1 0x20 DUP5 ADD MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0x32 DUP5 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x41 DUP5 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x4F DUP5 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x6C DUP5 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D0B PUSH1 0x72 SHL PUSH1 0x80 DUP5 ADD MSTORE PUSH17 0x1859191C995CDCC81C9958DA5C1A595B9D PUSH1 0x7A SHL PUSH1 0x92 DUP5 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0xA3 DUP5 ADD DUP2 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB PUSH1 0x84 ADD DUP2 MSTORE PUSH1 0xA4 DUP6 ADD SWAP1 SWAP4 MSTORE PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL PUSH1 0xC4 DUP6 ADD MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0xD4 DUP6 ADD MSTORE PUSH13 0x1859191C995CDCC81E9BDB994B PUSH1 0x9A SHL PUSH1 0xE4 DUP6 ADD MSTORE PUSH18 0x13D999995C925D195B56D7481BD999995C8B PUSH1 0x72 SHL PUSH1 0xF1 DUP6 ADD MSTORE PUSH32 0x436F6E73696465726174696F6E4974656D5B5D20636F6E73696465726174696F PUSH2 0x103 DUP6 ADD MSTORE PUSH2 0x1B8B PUSH1 0xF2 SHL PUSH2 0x123 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0E081BDC99195C951E5C194B PUSH1 0x82 SHL PUSH2 0x125 DUP6 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH2 0x135 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH2 0x147 DUP6 ADD MSTORE PUSH17 0x189E5D195CCCCC881E9BDB9952185CDA0B PUSH1 0x7A SHL PUSH2 0x157 DUP6 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x168 DUP6 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x175 DUP6 ADD MSTORE PUSH13 0x75696E74323536206E6F6E6365 PUSH1 0x98 SHL PUSH2 0x188 DUP6 ADD MSTORE PUSH2 0x195 DUP5 ADD MSTORE SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x196 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 DUP6 MLOAD DUP7 DUP4 ADD KECCAK256 DUP6 MLOAD DUP7 DUP5 ADD KECCAK256 SWAP2 SWAP11 POP SWAP9 POP SWAP7 POP PUSH2 0x58E SWAP2 DUP4 SWAP2 DUP6 SWAP2 DUP8 SWAP2 ADD PUSH2 0x640 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP POP POP POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x626 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0x60C JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x635 JUMPI PUSH1 0x0 DUP3 DUP7 ADD MSTORE JUMPDEST POP SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x65E PUSH2 0x658 PUSH2 0x652 DUP5 DUP9 PUSH2 0x605 JUMP JUMPDEST DUP7 PUSH2 0x605 JUMP JUMPDEST DUP5 PUSH2 0x605 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH1 0x3F PUSH2 0x6C2 PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x3F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA 0xD9 PUSH31 0xFEA5BED9C21FB2061C3A32EB1A3C38109305C68BCD85DEC520FEFD50656473 PUSH16 0x6C634300080D00330000000000000000 ",
              "sourceMap": "778:43493:22:-:0;;;1184:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1238:17;;;;;;1967:19:23;:17;:19::i;:::-;1760:226;;;;;;;;;;;;;;-1:-1:-1;1760:226:23;;;2087:13;2075:25;;;;-1:-1:-1;2761:187:23;;-1:-1:-1;2761:187:23;;;7454:25:45;;;;7495:18;;;7488:34;;;;-1:-1:-1;7538:18:45;;7531:34;;;;7581:18;;;7574:34;2929:4:23;7624:19:45;;;7617:61;2761:187:23;;;;;;;;;;7426:19:45;;2761:187:23;;;2738:220;;;;;2110:44;;-1:-1:-1;;;;;2213:67:23;;;;;;2420:42;;;-1:-1:-1;;;2420:42:23;;;;:40;;:42;;;;;;;;;;;;;2213:67;2420:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2372:100:23;;-1:-1:-1;;2287:1:24;657:16:36;:31;-1:-1:-1;778:43493:22;;-1:-1:-1;;;;778:43493:22;4735:3021:23;4824:16;;;;;;5140:13;3927:22;;;;;;;;;;;;-1:-1:-1;;;3927:22:23;;;;;3804:152;5140:13;5124:31;;;;;;;5252:10;;;;;;;;;;;-1:-1:-1;;;5252:10:23;;;;5384:264;5124:31;;-1:-1:-1;5242:21:23;;-1:-1:-1;;;5384:264:23;;;-1:-1:-1;;;1486:25:45;;-1:-1:-1;;;1536:2:45;1527:12;;1520:39;-1:-1:-1;;;1584:2:45;1575:12;;1568:38;1636:31;1631:2;1622:12;;1615:53;1698:22;1693:2;1684:12;;1677:44;-1:-1:-1;;;1746:2:45;1737:12;;1730:41;-1:-1:-1;;;1796:3:45;1787:13;;1780:26;1831:3;1822:13;;678:1163;5384:264:23;;;;-1:-1:-1;;5384:264:23;;;;;;;;;-1:-1:-1;;;5384:264:23;5785:310;;2755:33:45;-1:-1:-1;;;2804:12:45;;;2797:39;-1:-1:-1;;;2852:12:45;;;2845:38;2913:31;2899:12;;;2892:53;2975:22;2961:12;;;2954:44;-1:-1:-1;;;3014:12:45;;;3007:42;-1:-1:-1;;;3065:13:45;;;3058:42;-1:-1:-1;;;3116:13:45;;;3109:26;;;5785:310:23;;;;;;;;;3151:13:45;;;5785:310:23;;;-1:-1:-1;;;6260:488:23;;;4854:31:45;-1:-1:-1;;;4901:12:45;;;4894:40;-1:-1:-1;;;4950:12:45;;;4943:37;-1:-1:-1;;;4996:12:45;;;4989:42;5061:34;5047:12;;;5040:56;-1:-1:-1;;;5112:12:45;;;5105:26;-1:-1:-1;;;5147:12:45;;;5140:40;-1:-1:-1;;;5196:13:45;;;5189:43;-1:-1:-1;;;5248:13:45;;;5241:41;-1:-1:-1;;;5298:13:45;;;5291:42;-1:-1:-1;;;5349:13:45;;;5342:38;3252:21;5481:13;;;3240:34;-1:-1:-1;;;3290:12:45;;;3373:28;3417:12;;;624:16;5384:264:23;-1:-1:-1;5785:310:23;-1:-1:-1;;656:11:45;;6260:488:23;;;-1:-1:-1;;6260:488:23;;;;;;;;;;-1:-1:-1;;;6260:488:23;6893:248;;6215:28:45;-1:-1:-1;;;6259:12:45;;;6252:36;-1:-1:-1;;;6304:12:45;;;6297:39;-1:-1:-1;;;6352:12:45;;;6345:40;6415:27;6401:12;;;6394:49;-1:-1:-1;;;6459:12:45;;;6452:25;6260:488:23;-1:-1:-1;6493:12:45;;6893:248:23;;;-1:-1:-1;;6893:248:23;;;;;;;;;;6870:281;;6893:248;6870:281;;;;7261:30;;;;;;7409:38;;;;;;6870:281;;-1:-1:-1;7261:30:23;-1:-1:-1;7409:38:23;-1:-1:-1;7577:162:23;;7611:32;;7419:27;;7271:19;;7577:162;;:::i;:::-;;;;;;;;;;;;;7554:195;;;;;;7538:211;;5051:2705;;;4735:3021;;;;;;:::o;14:290:45:-;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:45;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:45:o;309:245::-;388:6;396;449:2;437:9;428:7;424:23;420:32;417:52;;;465:1;462;455:12;417:52;-1:-1:-1;;488:16:45;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:45:o;6516:336::-;6557:3;6595:5;6589:12;6619:1;6629:128;6643:6;6640:1;6637:13;6629:128;;;6740:4;6725:13;;;6721:24;;6715:31;6702:11;;;6695:52;6658:12;6629:128;;;6775:6;6772:1;6769:13;6766:48;;;6810:1;6801:6;6796:3;6792:16;6785:27;6766:48;-1:-1:-1;6830:16:45;;;;;6516:336;-1:-1:-1;;6516:336:45:o;6857:333::-;7078:3;7103:81;7128:55;7153:29;7178:3;7170:6;7153:29;:::i;:::-;7145:6;7128:55;:::i;:::-;7120:6;7103:81;:::i;:::-;7096:88;6857:333;-1:-1:-1;;;;;6857:333:45:o;7195:489::-;778:43493:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea2646970667358221220cad97efea5bed9c21fb2061c3a32eb1a3c38109305c68bcd85dec520fefd506564736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCA 0xD9 PUSH31 0xFEA5BED9C21FB2061C3A32EB1A3C38109305C68BCD85DEC520FEFD50656473 PUSH16 0x6C634300080D00330000000000000000 ",
              "sourceMap": "778:43493:22:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"InvalidRestrictedOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"NonceIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fulfiller\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct SpentItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct ReceivedItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidRestrictedOrder(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that specifies      a restricted submitter as its order type when not submitted by      either the offerrer or the order's zone or approved as valid by the      zone in question via a staticcall to `isValidOrder`.\",\"params\":{\"orderHash\":\"The order hash for the invalid restricted order.\"}}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Derive and set hashes, reference chainId, and associated domain      separator during deployment.\",\"params\":{\"conduitController\":\"A contract that deploys conduits, or proxies                          that may optionally be used to transfer approved                          ERC20/721/1155 tokens.\"}}},\"title\":\"BasicOrderFulfiller\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"BasicOrderFulfiller contains functionality for fulfilling \\\"basic\\\"         orders with minimal overhead. See documentation for details on what         qualifies as a basic order.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/BasicOrderFulfiller.sol\":\"BasicOrderFulfiller\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/conduit/lib/ConduitEnums.sol\":{\"keccak256\":\"0x3a9ecf77688f97d1b595be27b49fca3eac93e3f91160d79f0f0063c250fd8aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d596c21d5c7c7b47ca14908cbd7add9c06898c500cf47988446f843c0b28cf96\",\"dweb:/ipfs/QmZf12Y7XHwEWvjd2ZbaUFz4NXsWPFGJF6vNg1HECvXV5m\"]},\"seaport/contracts/conduit/lib/ConduitStructs.sol\":{\"keccak256\":\"0xfd2cec45327e9a6ebc02d7efb9daa1cfdabb26eb803e4b2e9b5e82340d92cfed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea7fa97afdf70ab91449e54f9a4f40e9da16292ab87b86e7e975e6d92f573dc3\",\"dweb:/ipfs/QmaRvo6P8YYPYNgcuP4HVV2wqDuVSB1t6AwMe8jMbcQY3F\"]},\"seaport/contracts/interfaces/AbridgedTokenInterfaces.sol\":{\"keccak256\":\"0x6b4937a65838012d673de632665960836d9b81ce4d90142c02797e4d17361838\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe115b5e3b76cab664b07b242b37221adb36606b114a212798809106c1e0faab\",\"dweb:/ipfs/QmQvEoKtVyYQC5pPoJogvT5yMtumoCffH1Q8BCGLfGzVAM\"]},\"seaport/contracts/interfaces/ConduitControllerInterface.sol\":{\"keccak256\":\"0x86b7ceb6ff7ce653fa7d0d79eeb8b96ec57eedd35f8c87e9838dde6c23f317bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://453fa0365834a50956e513d306371bfb7019124150bf9afd1699599fe6f7852c\",\"dweb:/ipfs/QmXiqKzGdj2A4TsuHtFLTgdLPRFwasbWWibNBRP5cikJod\"]},\"seaport/contracts/interfaces/ConduitInterface.sol\":{\"keccak256\":\"0x6aec074141c2a66f0c06ff006b6b61f5ee3f988c1cee26a51f91e1616af194d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4cda8ec77a8261f3270087331f72443b5dcb686e93297fe9641b757dff108ae1\",\"dweb:/ipfs/QmPuWHXQWuhTUfbe3yB842nS1jRM2iLyJ16rVkDSyLCD2L\"]},\"seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"keccak256\":\"0xf0d0eda6b47217d0e7c2862fdd5d7857cb828f9e0fc52e2c37c6d2b454832a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://374d19e0d9e5ce76e10dce8bada5ee9d1adcd54898c0cba9099d0dd72a5bf996\",\"dweb:/ipfs/QmS49qk49jmkPuMzLbbop5s7eJxbfRzKokQXB2QJjfVPHT\"]},\"seaport/contracts/interfaces/EIP1271Interface.sol\":{\"keccak256\":\"0x3c60fdc09b2bc7cb3a615ca82ee1bd776813e75883515efd1e794fe8a3228f29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b17dda7065bffe0ba89c26d413e89c7e7e733f5e74cefba56799ebb57e60908\",\"dweb:/ipfs/QmT2DJBP4WvXYKyFusiSeJ7kbo4UVor4yKCkwEF237CqxZ\"]},\"seaport/contracts/interfaces/ReentrancyErrors.sol\":{\"keccak256\":\"0x9ab27fa5a68f55ad89072ea213c6f12979ae469041ca473d81f800dbdbe9bb48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0cc617da7254d981fd5970d16acc2a6f6fe2fe0bc3e2d0976f7c01a4893430ec\",\"dweb:/ipfs/QmbhqKxfhrfPAjp99LVspxopQG7Mb9L9xdSa38ujCxmvTJ\"]},\"seaport/contracts/interfaces/SignatureVerificationErrors.sol\":{\"keccak256\":\"0xb86f318b159c16087372e12b1e2c37c15fb745be1566bb03812e3814c15fb605\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff051f5cb44654096126c9ec72d1aaebf568e87a01da6200e969e673b8c3e4bf\",\"dweb:/ipfs/QmaPKx8ikPxRzYRubNraLhPdnGmXunZ6WGhzaed18oBi66\"]},\"seaport/contracts/interfaces/TokenTransferrerErrors.sol\":{\"keccak256\":\"0x128fbb0236de5e52c34876c61148e04c12289e92d6bce2270760905617a01b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ed114ea7bf9ce55065d853f0f705eb82cc840672e0c2ab899691ab5703d2e98\",\"dweb:/ipfs/QmXQsajetWBmU7tzjoFm5wyajRKrMMEGXFF7ZQxaH7ZceG\"]},\"seaport/contracts/interfaces/ZoneInteractionErrors.sol\":{\"keccak256\":\"0x7cc23125af35b317beac057bfbe34291f6b2f34f37f7d698f5bc7373b09b4480\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c56917ceed46a2e3029b7daf5331cd6e3a10e3174287c9d2a5cccb5fb6e1568\",\"dweb:/ipfs/QmRdPmvPm2F2hXq4QwXZyavjMis1RmY5XLMZLzM45Cv9hT\"]},\"seaport/contracts/interfaces/ZoneInterface.sol\":{\"keccak256\":\"0x5c5d749fd3de01bd89acf7cb08f11d041b3a600819e18b8a51cebd65285ced46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43788f6ae192a2063f185ccb87853576e4d90ea8f1df19d1334d2e9be62333f3\",\"dweb:/ipfs/QmXSXFPhSNsTv4kvBZbCHwzakoAxvvnvZPSmw7CXg2j1vu\"]},\"seaport/contracts/lib/Assertions.sol\":{\"keccak256\":\"0xb2ef1d902d0eefb7aaffc720354dd0352f95442178091f059d31ebe096894586\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6f121104190dd5e5a4e98fcbf024ad300c4b9704768fdb49d81f270c22a8067\",\"dweb:/ipfs/QmWKzhVq1itpqTfeiCELGb1jDcTnBdCwroHgGMzqDuYWN8\"]},\"seaport/contracts/lib/BasicOrderFulfiller.sol\":{\"keccak256\":\"0x6262ae2f6c6a9d6a0da8457160683db0d9868b2caf640b21a1896fece7ec677f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86d3aa0f9ef2940a1c0e12ebe9ae53e4945d488285b14ff930cf311fef4c2c69\",\"dweb:/ipfs/QmRugwrXvDJFXfoWNzSzk4EUQCve4hByRUnfJiusgQGLXb\"]},\"seaport/contracts/lib/ConsiderationBase.sol\":{\"keccak256\":\"0x1015a0bb6fff27278ceec2f76cbf0c775bfb3e8d03cafe8d3549e252e9563ba2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f7d3b48069268df59a77293a7cdc232df35c5b1c8b1974b422a850bedb875f6\",\"dweb:/ipfs/QmSMMnXqsUEWuC1u7BF6coTXK63BXaQYvWqX69doaatKw8\"]},\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]},\"seaport/contracts/lib/Executor.sol\":{\"keccak256\":\"0x72b4591bebbeb723ad41e9dabd931e4a969a8cff3e6a9b1a82dd2299391834e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3030a05a77aa4375961371f8508327d0a7f102c9b52319a0263a15a498155d70\",\"dweb:/ipfs/QmWr6WFUwJsszCBvMhLUPAz4tz3jTbJzABQwtfRUC5cKzv\"]},\"seaport/contracts/lib/GettersAndDerivers.sol\":{\"keccak256\":\"0xb9d0cf2a84567b6b70e1ddd9e3450dddf8139e5396bcac24c42f46db16228efa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99767431817fd6b157bc199784ca3f3bc2cf024a332ae8e2a5eb7e3db0f2b47d\",\"dweb:/ipfs/QmPWaJet2TPiWc7xEo7QqVpctaLvXPZFep8R8Vi4ZRzzCw\"]},\"seaport/contracts/lib/LowLevelHelpers.sol\":{\"keccak256\":\"0x83085de63b870cfb3940c68d96a40b2cf9afb7280c1afa3034d1c55c80444a94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9ba49a7318a517e836811dfc67989e9f14959a7cd55220853af6b6273309543\",\"dweb:/ipfs/QmUAQr4SReMunUvwBxKPdd8XLPy5GKMEEhPwpD32UYn3kx\"]},\"seaport/contracts/lib/NonceManager.sol\":{\"keccak256\":\"0xe8b6e40830e216912ce483e867151e84cc0b290404220e1ed5fbb69821161f8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4ef49cbc0b5385b64c1f8c9d5cf572dff35ec291970714ef11520de2c01ab9c\",\"dweb:/ipfs/QmfJoNCtAHUYsidmUaiMBP8wMzUYCtg33G8nUqyME5AftL\"]},\"seaport/contracts/lib/OrderValidator.sol\":{\"keccak256\":\"0xeb3e16175a6545c6f320eecc2c2d2e33cf27f30be2e12ae86ad67429b0e14061\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924da093b3d43f0603a8615b6ad2b575d4efe694f0381e3963461159c13fc1ba\",\"dweb:/ipfs/QmVwuoYmZU3BZx8LVfeDdd51geQyS745KLPKx7LuNQiPUz\"]},\"seaport/contracts/lib/ReentrancyGuard.sol\":{\"keccak256\":\"0xec219fb657ce8400835d8d1ff87716247c5fdde51bca31fddf19415abad773db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eca390f7b8fbccc703ad22edd4f35fa896de59912f21d9471d51ef83b961d3c5\",\"dweb:/ipfs/QmXyxcfzgD4SaTtgqGjUjxK4tb76NiPcooMkL9c11yhm2L\"]},\"seaport/contracts/lib/SignatureVerification.sol\":{\"keccak256\":\"0x5833c9bf1ab9c8fbfeb723ff500722e269a1c05b0fe14d8a837e40c88138f4fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0af100e71a40bc871019c7ebd5c786007deacbf58ee98bce204c43811c726dd\",\"dweb:/ipfs/QmSjdy3wSypHCxCdFGZxLFCCRJf7cfVn6MM75KUbj2y3jN\"]},\"seaport/contracts/lib/TokenTransferrer.sol\":{\"keccak256\":\"0xe392cea22226f1b55e35b0295d0cfa156c7764f2509fa416f3946ca748c9605a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddf9b20512bc36f5bbe25f56729aa31a139b1560dfc14beb42d5d09ae8d44b48\",\"dweb:/ipfs/QmSN9GdbtqBcobRSd8kSCxn2GScZhiiAbuxk5djmkatKRD\"]},\"seaport/contracts/lib/TokenTransferrerConstants.sol\":{\"keccak256\":\"0x5ecc368039fd81cc27788a664538ab63f1b5deb9caa8839d9499fadfd1d465cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0e821e5fd5a31cdcaaf334203dd58d80489c1aed2fd2a91a9683a9e342c9653\",\"dweb:/ipfs/QmRKkHF5aLKJ8KrMmMoV9UsCtgtrCQYgeptGK4jKVGM68j\"]},\"seaport/contracts/lib/Verifiers.sol\":{\"keccak256\":\"0x69755b486d816164270d1b37c187ea7a3ce262e9d31153a88279fe6d8cb76cd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://16dc060d4321a17cdcbf1125b076bb9bbf75086a57d7c6eeca7e9845fcd6d76e\",\"dweb:/ipfs/QmSnF21ffxHnfiYRVVRopn2EcJagghQZTTcdDvMoiR9fsM\"]},\"seaport/contracts/lib/ZoneInteraction.sol\":{\"keccak256\":\"0xbabb8f6c0659327e9ae9711d63c0d81f49789c32d1987170d772dac5bd9c0b48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ee495283ba0709d674062d80a6bcba9f54eed8d132283e500980fa63ac5dc217\",\"dweb:/ipfs/QmWQegpmWwk6dNxBpmXpVmPAq6LtQhDKUja9ewHeMsA1rM\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/ConsiderationBase.sol": {
        "ConsiderationBase": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduitController",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "BadFraction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "orderIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "considerationIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "shortfallAmount",
                  "type": "uint256"
                }
              ],
              "name": "ConsiderationNotMet",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "EtherTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InsufficientEtherSupplied",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidBasicOrderParameterEncoding",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidCallToConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidCanceller",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidConduit",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "InvalidMsgValue",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidTime",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingOriginalConsiderationItems",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoSpecifiedOrdersAvailable",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderAlreadyFilled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderIsCancelled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderPartiallyFilled",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "PartialFillsNotEnabledForOrder",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                }
              ],
              "name": "NonceIncremented",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderCancelled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fulfiller",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct SpentItem[]",
                  "name": "offer",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address payable",
                      "name": "recipient",
                      "type": "address"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct ReceivedItem[]",
                  "name": "consideration",
                  "type": "tuple[]"
                }
              ],
              "name": "OrderFulfilled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderValidated",
              "type": "event"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_3225": {
                  "entryPoint": null,
                  "id": 3225,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_deriveDomainSeparator_3247": {
                  "entryPoint": null,
                  "id": 3247,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_deriveTypehashes_3383": {
                  "entryPoint": 269,
                  "id": 3383,
                  "parameterSlots": 0,
                  "returnSlots": 6
                },
                "@_nameString_3264": {
                  "entryPoint": null,
                  "id": 3264,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1439,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_bytes32_fromMemory": {
                  "entryPoint": 1487,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_bytes": {
                  "entryPoint": 1523,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_59d7": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_cfcd": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1582,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7686:45",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:45",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:45",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:45",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:45"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:45",
                            "type": ""
                          }
                        ],
                        "src": "14:290:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "407:147:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "453:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "462:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "465:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "455:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "455:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "455:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "428:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "437:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "424:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "424:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "449:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "420:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "420:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "417:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "478:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "494:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "488:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "488:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "478:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "513:35:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "533:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "544:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "529:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "529:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:25:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "365:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "376:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "388:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "396:6:45",
                            "type": ""
                          }
                        ],
                        "src": "309:245:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "614:59:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "631:3:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "636:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "624:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "624:16:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "624:16:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "649:18:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "660:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "665:1:45",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "656:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "656:11:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "649:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_59d7",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "598:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "606:3:45",
                            "type": ""
                          }
                        ],
                        "src": "559:114:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1476:365:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1493:3:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1498:12:45",
                                    "type": "",
                                    "value": "OfferItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1486:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1486:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1486:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1531:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1536:2:45",
                                        "type": "",
                                        "value": "10"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1527:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1527:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1541:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1520:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1520:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1520:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1579:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1584:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1575:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1575:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1589:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1568:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1568:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1568:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1626:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1631:2:45",
                                        "type": "",
                                        "value": "39"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1622:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1622:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1636:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1615:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1615:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1615:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1688:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1693:2:45",
                                        "type": "",
                                        "value": "68"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1684:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1684:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1698:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1677:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1677:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1677:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1741:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1746:2:45",
                                        "type": "",
                                        "value": "88"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1737:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1737:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1751:19:45",
                                    "type": "",
                                    "value": "uint256 endAmount"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1730:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1730:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1730:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1791:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1796:3:45",
                                        "type": "",
                                        "value": "105"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1787:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1787:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1802:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1780:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1780:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1780:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1815:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1826:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1831:3:45",
                                    "type": "",
                                    "value": "106"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1822:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1822:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1815:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1460:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1468:3:45",
                            "type": ""
                          }
                        ],
                        "src": "678:1163:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2745:425:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2762:3:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2767:20:45",
                                    "type": "",
                                    "value": "ConsiderationItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2755:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2755:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2755:33:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2808:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2813:2:45",
                                        "type": "",
                                        "value": "18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2804:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2804:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2818:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2797:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2797:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2797:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2856:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2861:2:45",
                                        "type": "",
                                        "value": "33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2852:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2852:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2866:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2845:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2845:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2845:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2903:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2908:2:45",
                                        "type": "",
                                        "value": "47"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2899:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2899:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2913:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2892:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2892:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2892:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2965:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2970:2:45",
                                        "type": "",
                                        "value": "76"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2961:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2961:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2975:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2954:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2954:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2954:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3018:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3023:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3014:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3014:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3028:20:45",
                                    "type": "",
                                    "value": "uint256 endAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3007:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3007:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3007:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3069:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3074:3:45",
                                        "type": "",
                                        "value": "114"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3065:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3065:13:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320726563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3080:19:45",
                                    "type": "",
                                    "value": "address recipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3058:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3058:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3058:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3120:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3125:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3116:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3116:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3131:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3109:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3109:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3109:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3144:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3155:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3160:3:45",
                                    "type": "",
                                    "value": "132"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3151:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3151:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3144:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2729:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2737:3:45",
                            "type": ""
                          }
                        ],
                        "src": "1846:1324:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3230:78:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3247:3:45"
                                  },
                                  {
                                    "hexValue": "6279746573333220636f6e647569744b65792c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3252:21:45",
                                    "type": "",
                                    "value": "bytes32 conduitKey,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3240:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3240:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3240:34:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3283:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3294:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3299:2:45",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3290:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3290:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_cfcd",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3214:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3222:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3175:133:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3363:72:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3380:3:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206e6f6e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3385:15:45",
                                    "type": "",
                                    "value": "uint256 nonce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3373:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3373:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3373:28:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3410:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3421:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3426:2:45",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3417:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3417:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3410:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3347:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3355:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3313:122:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4844:659:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4861:3:45"
                                  },
                                  {
                                    "hexValue": "4f72646572436f6d706f6e656e747328",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4866:18:45",
                                    "type": "",
                                    "value": "OrderComponents("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4854:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4854:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4854:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4905:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4910:2:45",
                                        "type": "",
                                        "value": "16"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4901:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4901:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373206f6666657265722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4915:18:45",
                                    "type": "",
                                    "value": "address offerer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4894:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4894:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4894:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4954:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4959:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4950:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4950:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373207a6f6e652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4964:15:45",
                                    "type": "",
                                    "value": "address zone,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4943:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4943:37:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4943:37:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5000:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5005:2:45",
                                        "type": "",
                                        "value": "45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4996:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4996:12:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d5b5d206f666665722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5010:20:45",
                                    "type": "",
                                    "value": "OfferItem[] offer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4989:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4989:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4989:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5051:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5056:2:45",
                                        "type": "",
                                        "value": "63"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5047:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5047:12:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5061:34:45",
                                    "type": "",
                                    "value": "ConsiderationItem[] consideratio"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5040:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5040:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5040:56:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5116:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5121:2:45",
                                        "type": "",
                                        "value": "95"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5112:12:45"
                                  },
                                  {
                                    "hexValue": "6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5126:4:45",
                                    "type": "",
                                    "value": "n,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5105:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5105:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5105:26:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5151:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5156:2:45",
                                        "type": "",
                                        "value": "97"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5147:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5147:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206f72646572547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5161:18:45",
                                    "type": "",
                                    "value": "uint8 orderType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5140:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5140:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5140:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5200:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5205:3:45",
                                        "type": "",
                                        "value": "113"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5196:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5196:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620737461727454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5211:20:45",
                                    "type": "",
                                    "value": "uint256 startTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5189:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5189:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5189:43:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5252:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5257:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5248:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5248:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e6454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5263:18:45",
                                    "type": "",
                                    "value": "uint256 endTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5241:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5241:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5241:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5302:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5307:3:45",
                                        "type": "",
                                        "value": "147"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5298:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5298:13:45"
                                  },
                                  {
                                    "hexValue": "62797465733332207a6f6e65486173682c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5313:19:45",
                                    "type": "",
                                    "value": "bytes32 zoneHash,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5291:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5291:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5291:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5353:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5358:3:45",
                                        "type": "",
                                        "value": "164"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5349:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5349:13:45"
                                  },
                                  {
                                    "hexValue": "75696e743235362073616c742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5364:15:45",
                                    "type": "",
                                    "value": "uint256 salt,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5342:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5342:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5342:38:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5389:108:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "5485:3:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5490:3:45",
                                                "type": "",
                                                "value": "177"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5481:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5481:13:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_stringliteral_cfcd",
                                          "nodeType": "YulIdentifier",
                                          "src": "5451:29:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5451:44:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_stringliteral",
                                      "nodeType": "YulIdentifier",
                                      "src": "5426:24:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5426:70:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_stringliteral_59d7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5396:29:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5396:101:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5389:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4828:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4836:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3440:2063:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6205:306:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6222:3:45"
                                  },
                                  {
                                    "hexValue": "454950373132446f6d61696e28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6227:15:45",
                                    "type": "",
                                    "value": "EIP712Domain("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6215:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6215:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6215:28:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6263:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6268:2:45",
                                        "type": "",
                                        "value": "13"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6259:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6259:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e67206e616d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6273:14:45",
                                    "type": "",
                                    "value": "string name,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6252:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6252:36:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6252:36:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6308:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6313:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6304:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6304:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e672076657273696f6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6318:17:45",
                                    "type": "",
                                    "value": "string version,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6297:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6297:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6297:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6356:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6361:2:45",
                                        "type": "",
                                        "value": "40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6352:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6352:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620636861696e49642c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6366:18:45",
                                    "type": "",
                                    "value": "uint256 chainId,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6345:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6345:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6345:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6405:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6410:2:45",
                                        "type": "",
                                        "value": "56"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6401:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6401:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320766572696679696e67436f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6415:27:45",
                                    "type": "",
                                    "value": "address verifyingContract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6394:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6394:49:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6394:49:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6463:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6468:2:45",
                                        "type": "",
                                        "value": "81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6459:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6459:12:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6473:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6452:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6452:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6452:25:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6486:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6497:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6502:2:45",
                                    "type": "",
                                    "value": "82"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6493:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6493:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6486:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6189:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6197:3:45",
                            "type": ""
                          }
                        ],
                        "src": "5508:1003:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6565:287:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6575:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6595:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6589:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6589:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6579:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6610:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6619:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6614:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6681:76:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6706:3:45"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "6711:1:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6702:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6702:11:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6729:5:45"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6736:1:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6725:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6725:13:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "6740:4:45",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6721:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6721:24:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6715:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6715:31:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6695:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6695:52:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6695:52:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6640:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6643:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6637:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6637:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6651:21:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6653:17:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6662:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6665:4:45",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6658:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6658:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6653:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6633:3:45",
                                "statements": []
                              },
                              "src": "6629:128:45"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6783:31:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6796:3:45"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "6801:6:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6792:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6792:16:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6810:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6785:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6785:27:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6785:27:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6772:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6775:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6769:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6769:13:45"
                              },
                              "nodeType": "YulIf",
                              "src": "6766:48:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6823:23:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6834:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6839:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6830:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6830:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6823:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6542:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6549:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6557:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6516:336:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7086:104:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7096:88:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7120:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7145:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "7170:6:45"
                                          },
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "7178:3:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_bytes",
                                          "nodeType": "YulIdentifier",
                                          "src": "7153:16:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7153:29:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "7128:16:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7128:55:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "7103:16:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7103:81:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7096:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7046:3:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7051:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7059:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7067:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7078:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6857:333:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7408:276:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7418:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7430:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7441:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7426:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7426:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7418:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7461:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7472:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7454:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7454:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7454:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7499:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7510:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7495:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7495:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7515:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7488:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7488:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7488:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7542:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7553:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7538:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7538:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7558:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7531:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7531:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7531:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7585:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7596:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7581:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7581:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7601:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7574:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7574:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7574:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7628:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7639:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7624:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7624:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7649:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7665:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7670:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "7661:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7661:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7674:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "7657:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7657:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7645:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7645:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7617:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7617:61:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7617:61:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7345:9:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7356:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7364:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7372:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7380:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7388:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7399:4:45",
                            "type": ""
                          }
                        ],
                        "src": "7195:489:45"
                      }
                    ]
                  },
                  "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 abi_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OfferItem(\")\n        mstore(add(pos, 10), \"uint8 itemType,\")\n        mstore(add(pos, 25), \"address token,\")\n        mstore(add(pos, 39), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 68), \"uint256 startAmount,\")\n        mstore(add(pos, 88), \"uint256 endAmount\")\n        mstore(add(pos, 105), \")\")\n        end := add(pos, 106)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"ConsiderationItem(\")\n        mstore(add(pos, 18), \"uint8 itemType,\")\n        mstore(add(pos, 33), \"address token,\")\n        mstore(add(pos, 47), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 76), \"uint256 startAmount,\")\n        mstore(add(pos, 96), \"uint256 endAmount,\")\n        mstore(add(pos, 114), \"address recipient\")\n        mstore(add(pos, 131), \")\")\n        end := add(pos, 132)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral(pos) -> end\n    {\n        mstore(pos, \"uint256 nonce\")\n        end := add(pos, 13)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address zone,\")\n        mstore(add(pos, 45), \"OfferItem[] offer,\")\n        mstore(add(pos, 63), \"ConsiderationItem[] consideratio\")\n        mstore(add(pos, 95), \"n,\")\n        mstore(add(pos, 97), \"uint8 orderType,\")\n        mstore(add(pos, 113), \"uint256 startTime,\")\n        mstore(add(pos, 131), \"uint256 endTime,\")\n        mstore(add(pos, 147), \"bytes32 zoneHash,\")\n        mstore(add(pos, 164), \"uint256 salt,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral(abi_encode_stringliteral_cfcd(add(pos, 177))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value, i), 0x20)))\n        }\n        if gt(i, length) { mstore(add(pos, length), 0) }\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        end := abi_encode_bytes(value2, abi_encode_bytes(value1, abi_encode_bytes(value0, pos)))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}",
                  "id": 45,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101c060405234801561001157600080fd5b506040516106ef3803806106ef8339810160408190526100309161059f565b61003861010d565b610120526101005260e05260c081815260a0838152608085815246610140819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610160526001600160a01b03811661018081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010291906105cf565b506101a05250610655565b6000808080808061013e60408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260018152603160f81b90840152519097507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6965060009161024091016909ecccccae492e8cada560b31b81526e1d5a5b9d0e081a5d195b551e5c194b608a1b600a8201526d1859191c995cdcc81d1bdad95b8b60921b60198201527f75696e74323536206964656e7469666965724f7243726974657269612c00000060278201527f75696e74323536207374617274416d6f756e742c0000000000000000000000006044820152701d5a5b9d0c8d4d88195b99105b5bdd5b9d607a1b6058820152602960f81b6069820152606a0190565b60408051601f1981840301815282825271086dedce6d2c8cae4c2e8d2dedc92e8cada560731b60208401526e1d5a5b9d0e081a5d195b551e5c194b608a1b60328401526d1859191c995cdcc81d1bdad95b8b60921b60418401527f75696e74323536206964656e7469666965724f7243726974657269612c000000604f8401527f75696e74323536207374617274416d6f756e742c000000000000000000000000606c840152711d5a5b9d0c8d4d88195b99105b5bdd5b9d0b60721b6080840152701859191c995cdcc81c9958da5c1a595b9d607a1b6092840152602960f81b60a384018190528251808503608401815260a485019093526f09ee4c8cae486dedae0dedccadce8e6560831b60c48501526f1859191c995cdcc81bd999995c995c8b60821b60d48501526c1859191c995cdcc81e9bdb994b609a1b60e48501527113d999995c925d195b56d7481bd999995c8b60721b60f18501527f436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f610103850152611b8b60f21b6101238501526f1d5a5b9d0e081bdc99195c951e5c194b60821b610125850152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b6101358501526f1d5a5b9d0c8d4d88195b99151a5b594b60821b61014785015270189e5d195ccccc881e9bdb9952185cda0b607a1b6101578501526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101688501527f6279746573333220636f6e647569744b65792c000000000000000000000000006101758501526c75696e74323536206e6f6e636560981b6101888501526101958401529250906000906101960160408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b6071830152915060720160408051601f19818403018152908290528051602091820120855186830120855186840120919a509850965061057c918391859187910161062e565b604051602081830303815290604052805190602001209350505050909192939495565b6000602082840312156105b157600080fd5b81516001600160a01b03811681146105c857600080fd5b9392505050565b600080604083850312156105e257600080fd5b505080516020909101519092909150565b6000815160005b8181101561061457602081850181015186830152016105fa565b81811115610623576000828601525b509290920192915050565b600061064c61064661064084886105f3565b866105f3565b846105f3565b95945050505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051603f6106b060003960005050600050506000505060005050600050506000505060005050600050506000505060005050603f6000f3fe6080604052600080fdfea2646970667358221220a591fd9b7c081dc38bcbd38d9dbb939262334751b3f469e229b3d74e72c126b664736f6c634300080d0033",
              "opcodes": "PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x6EF CODESIZE SUB DUP1 PUSH2 0x6EF DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0x59F JUMP JUMPDEST PUSH2 0x38 PUSH2 0x10D JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH2 0x100 MSTORE PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x160 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x180 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDE 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 0x102 SWAP2 SWAP1 PUSH2 0x5CF JUMP JUMPDEST POP PUSH2 0x1A0 MSTORE POP PUSH2 0x655 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x13E PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP8 POP PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP7 POP PUSH1 0x0 SWAP2 PUSH2 0x240 SWAP2 ADD PUSH10 0x9ECCCCCAE492E8CADA5 PUSH1 0xB3 SHL DUP2 MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0xA DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x19 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x27 DUP3 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D PUSH1 0x7A SHL PUSH1 0x58 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x69 DUP3 ADD MSTORE PUSH1 0x6A ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE PUSH18 0x86DEDCE6D2C8CAE4C2E8D2DEDC92E8CADA5 PUSH1 0x73 SHL PUSH1 0x20 DUP5 ADD MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0x32 DUP5 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x41 DUP5 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x4F DUP5 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x6C DUP5 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D0B PUSH1 0x72 SHL PUSH1 0x80 DUP5 ADD MSTORE PUSH17 0x1859191C995CDCC81C9958DA5C1A595B9D PUSH1 0x7A SHL PUSH1 0x92 DUP5 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0xA3 DUP5 ADD DUP2 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB PUSH1 0x84 ADD DUP2 MSTORE PUSH1 0xA4 DUP6 ADD SWAP1 SWAP4 MSTORE PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL PUSH1 0xC4 DUP6 ADD MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0xD4 DUP6 ADD MSTORE PUSH13 0x1859191C995CDCC81E9BDB994B PUSH1 0x9A SHL PUSH1 0xE4 DUP6 ADD MSTORE PUSH18 0x13D999995C925D195B56D7481BD999995C8B PUSH1 0x72 SHL PUSH1 0xF1 DUP6 ADD MSTORE PUSH32 0x436F6E73696465726174696F6E4974656D5B5D20636F6E73696465726174696F PUSH2 0x103 DUP6 ADD MSTORE PUSH2 0x1B8B PUSH1 0xF2 SHL PUSH2 0x123 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0E081BDC99195C951E5C194B PUSH1 0x82 SHL PUSH2 0x125 DUP6 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH2 0x135 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH2 0x147 DUP6 ADD MSTORE PUSH17 0x189E5D195CCCCC881E9BDB9952185CDA0B PUSH1 0x7A SHL PUSH2 0x157 DUP6 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x168 DUP6 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x175 DUP6 ADD MSTORE PUSH13 0x75696E74323536206E6F6E6365 PUSH1 0x98 SHL PUSH2 0x188 DUP6 ADD MSTORE PUSH2 0x195 DUP5 ADD MSTORE SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x196 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 DUP6 MLOAD DUP7 DUP4 ADD KECCAK256 DUP6 MLOAD DUP7 DUP5 ADD KECCAK256 SWAP2 SWAP11 POP SWAP9 POP SWAP7 POP PUSH2 0x57C SWAP2 DUP4 SWAP2 DUP6 SWAP2 DUP8 SWAP2 ADD PUSH2 0x62E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP POP POP POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x614 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0x5FA JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x623 JUMPI PUSH1 0x0 DUP3 DUP7 ADD MSTORE JUMPDEST POP SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64C PUSH2 0x646 PUSH2 0x640 DUP5 DUP9 PUSH2 0x5F3 JUMP JUMPDEST DUP7 PUSH2 0x5F3 JUMP JUMPDEST DUP5 PUSH2 0x5F3 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH1 0x3F PUSH2 0x6B0 PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x3F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 SWAP2 REVERT SWAP12 PUSH29 0x81DC38BCBD38D9DBB939262334751B3F469E229B3D74E72C126B66473 PUSH16 0x6C634300080D00330000000000000000 ",
              "sourceMap": "464:7294:23:-:0;;;1630:849;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1967:19;:17;:19::i;:::-;1760:226;;;;;;;;;;;;;;-1:-1:-1;1760:226:23;;;2087:13;2075:25;;;;-1:-1:-1;2761:187:23;;-1:-1:-1;2761:187:23;;;7454:25:45;;;;7495:18;;;7488:34;;;;-1:-1:-1;7538:18:45;;7531:34;;;;7581:18;;;7574:34;2929:4:23;7624:19:45;;;7617:61;2761:187:23;;;;;;;;;;7426:19:45;;2761:187:23;;;2738:220;;;;;2110:44;;-1:-1:-1;;;;;2213:67:23;;;;;;2420:42;;;-1:-1:-1;;;2420:42:23;;;;:40;;:42;;;;;;;;;;;;;2213:67;2420:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2372:100:23;;-1:-1:-1;464:7294:23;;4735:3021;4824:16;;;;;;5140:13;3927:22;;;;;;;;;;;;-1:-1:-1;;;3927:22:23;;;;;3804:152;5140:13;5124:31;;;;;;;5252:10;;;;;;;;;;;-1:-1:-1;;;5252:10:23;;;;5384:264;5124:31;;-1:-1:-1;5242:21:23;;-1:-1:-1;;;5384:264:23;;;-1:-1:-1;;;1486:25:45;;-1:-1:-1;;;1536:2:45;1527:12;;1520:39;-1:-1:-1;;;1584:2:45;1575:12;;1568:38;1636:31;1631:2;1622:12;;1615:53;1698:22;1693:2;1684:12;;1677:44;-1:-1:-1;;;1746:2:45;1737:12;;1730:41;-1:-1:-1;;;1796:3:45;1787:13;;1780:26;1831:3;1822:13;;678:1163;5384:264:23;;;;-1:-1:-1;;5384:264:23;;;;;;;;;-1:-1:-1;;;5384:264:23;5785:310;;2755:33:45;-1:-1:-1;;;2804:12:45;;;2797:39;-1:-1:-1;;;2852:12:45;;;2845:38;2913:31;2899:12;;;2892:53;2975:22;2961:12;;;2954:44;-1:-1:-1;;;3014:12:45;;;3007:42;-1:-1:-1;;;3065:13:45;;;3058:42;-1:-1:-1;;;3116:13:45;;;3109:26;;;5785:310:23;;;;;;;;;3151:13:45;;;5785:310:23;;;-1:-1:-1;;;6260:488:23;;;4854:31:45;-1:-1:-1;;;4901:12:45;;;4894:40;-1:-1:-1;;;4950:12:45;;;4943:37;-1:-1:-1;;;4996:12:45;;;4989:42;5061:34;5047:12;;;5040:56;-1:-1:-1;;;5112:12:45;;;5105:26;-1:-1:-1;;;5147:12:45;;;5140:40;-1:-1:-1;;;5196:13:45;;;5189:43;-1:-1:-1;;;5248:13:45;;;5241:41;-1:-1:-1;;;5298:13:45;;;5291:42;-1:-1:-1;;;5349:13:45;;;5342:38;3252:21;5481:13;;;3240:34;-1:-1:-1;;;3290:12:45;;;3373:28;3417:12;;;624:16;5384:264:23;-1:-1:-1;5785:310:23;-1:-1:-1;;656:11:45;;6260:488:23;;;-1:-1:-1;;6260:488:23;;;;;;;;;;-1:-1:-1;;;6260:488:23;6893:248;;6215:28:45;-1:-1:-1;;;6259:12:45;;;6252:36;-1:-1:-1;;;6304:12:45;;;6297:39;-1:-1:-1;;;6352:12:45;;;6345:40;6415:27;6401:12;;;6394:49;-1:-1:-1;;;6459:12:45;;;6452:25;6260:488:23;-1:-1:-1;6493:12:45;;6893:248:23;;;-1:-1:-1;;6893:248:23;;;;;;;;;;6870:281;;6893:248;6870:281;;;;7261:30;;;;;;7409:38;;;;;;6870:281;;-1:-1:-1;7261:30:23;-1:-1:-1;7409:38:23;-1:-1:-1;7577:162:23;;7611:32;;7419:27;;7271:19;;7577:162;;:::i;:::-;;;;;;;;;;;;;7554:195;;;;;;7538:211;;5051:2705;;;4735:3021;;;;;;:::o;14:290:45:-;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:45;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:45:o;309:245::-;388:6;396;449:2;437:9;428:7;424:23;420:32;417:52;;;465:1;462;455:12;417:52;-1:-1:-1;;488:16:45;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:45:o;6516:336::-;6557:3;6595:5;6589:12;6619:1;6629:128;6643:6;6640:1;6637:13;6629:128;;;6740:4;6725:13;;;6721:24;;6715:31;6702:11;;;6695:52;6658:12;6629:128;;;6775:6;6772:1;6769:13;6766:48;;;6810:1;6801:6;6796:3;6792:16;6785:27;6766:48;-1:-1:-1;6830:16:45;;;;;6516:336;-1:-1:-1;;6516:336:45:o;6857:333::-;7078:3;7103:81;7128:55;7153:29;7178:3;7170:6;7153:29;:::i;:::-;7145:6;7128:55;:::i;:::-;7120:6;7103:81;:::i;:::-;7096:88;6857:333;-1:-1:-1;;;;;6857:333:45:o;7195:489::-;464:7294:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea2646970667358221220a591fd9b7c081dc38bcbd38d9dbb939262334751b3f469e229b3d74e72c126b664736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 SWAP2 REVERT SWAP12 PUSH29 0x81DC38BCBD38D9DBB939262334751B3F469E229B3D74E72C126B66473 PUSH16 0x6C634300080D00330000000000000000 ",
              "sourceMap": "464:7294:23:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"NonceIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fulfiller\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct SpentItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct ReceivedItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Derive and set hashes, reference chainId, and associated domain      separator during deployment.\",\"params\":{\"conduitController\":\"A contract that deploys conduits, or proxies                          that may optionally be used to transfer approved                          ERC20/721/1155 tokens.\"}}},\"title\":\"ConsiderationBase\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"ConsiderationBase contains immutable constants and constructor logic.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/ConsiderationBase.sol\":\"ConsiderationBase\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/ConduitControllerInterface.sol\":{\"keccak256\":\"0x86b7ceb6ff7ce653fa7d0d79eeb8b96ec57eedd35f8c87e9838dde6c23f317bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://453fa0365834a50956e513d306371bfb7019124150bf9afd1699599fe6f7852c\",\"dweb:/ipfs/QmXiqKzGdj2A4TsuHtFLTgdLPRFwasbWWibNBRP5cikJod\"]},\"seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"keccak256\":\"0xf0d0eda6b47217d0e7c2862fdd5d7857cb828f9e0fc52e2c37c6d2b454832a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://374d19e0d9e5ce76e10dce8bada5ee9d1adcd54898c0cba9099d0dd72a5bf996\",\"dweb:/ipfs/QmS49qk49jmkPuMzLbbop5s7eJxbfRzKokQXB2QJjfVPHT\"]},\"seaport/contracts/lib/ConsiderationBase.sol\":{\"keccak256\":\"0x1015a0bb6fff27278ceec2f76cbf0c775bfb3e8d03cafe8d3549e252e9563ba2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f7d3b48069268df59a77293a7cdc232df35c5b1c8b1974b422a850bedb875f6\",\"dweb:/ipfs/QmSMMnXqsUEWuC1u7BF6coTXK63BXaQYvWqX69doaatKw8\"]},\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/CriteriaResolution.sol": {
        "CriteriaResolution": {
          "abi": [
            {
              "inputs": [],
              "name": "ConsiderationCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "CriteriaNotEnabledForItem",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidProof",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OfferCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OrderCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnresolvedConsiderationCriteria",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnresolvedOfferCriteria",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220ef57b3ac41eda2f66f4fa36cca94012b069663094eaab8b019aea05260fa1d4764736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF JUMPI 0xB3 0xAC COINBASE 0xED LOG2 0xF6 PUSH16 0x4FA36CCA94012B069663094EAAB8B019 0xAE LOG0 MSTORE PUSH1 0xFA SAR SELFBALANCE PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "610:10746:27:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea2646970667358221220ef57b3ac41eda2f66f4fa36cca94012b069663094eaab8b019aea05260fa1d4764736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF JUMPI 0xB3 0xAC COINBASE 0xED LOG2 0xF6 PUSH16 0x4FA36CCA94012B069663094EAAB8B019 0xAE LOG0 MSTORE PUSH1 0xFA SAR SELFBALANCE PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "610:10746:27:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ConsiderationCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CriteriaNotEnabledForItem\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnresolvedConsiderationCriteria\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnresolvedOfferCriteria\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"ConsiderationCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with a consideration item that has not been supplied.\"}],\"CriteriaNotEnabledForItem()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with an item that does not expect a criteria to be      resolved.\"}],\"InvalidProof()\":[{\"details\":\"Revert with an error when providing a criteria resolver that      contains an invalid proof with respect to the given item and      chosen identifier.\"}],\"OfferCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with an offer item that has not been supplied.\"}],\"OrderCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order that has not been supplied.\"}],\"UnresolvedConsiderationCriteria()\":[{\"details\":\"Revert with an error if a consideration item still has unresolved      criteria after applying all criteria resolvers.\"}],\"UnresolvedOfferCriteria()\":[{\"details\":\"Revert with an error if an offer item still has unresolved criteria      after applying all criteria resolvers.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"CriteriaResolution\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"CriteriaResolution contains a collection of pure functions related to         resolving criteria-based items.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/CriteriaResolution.sol\":\"CriteriaResolution\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/CriteriaResolutionErrors.sol\":{\"keccak256\":\"0x3c63de591ecf89478714308c38953d72b88c7034f9b4ae4605f356a121df969e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a538b46b3ae2bb4331fed4f2936caece352db92694c69255e0a27dcf69243f79\",\"dweb:/ipfs/QmNr2LKznf9kCHL4di5GrjYto1RTD9JgKJv13WT6yqrgNn\"]},\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]},\"seaport/contracts/lib/CriteriaResolution.sol\":{\"keccak256\":\"0xf65cfc83ff0764d82039c959a9b3bbd09069228882467ab491de64fbcb318a89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5d8cc2ab576be995caf53711b41872f07a8e80d86402380053db8d886924ea06\",\"dweb:/ipfs/QmWi4cS9b1UHX6PJvu59kLEdhp3Gi43crujzfgHNFCc831\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/Executor.sol": {
        "Executor": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduitController",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "BadContractSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "BadFraction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BadReturnValueFromERC20OnTransfer",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                }
              ],
              "name": "BadSignatureV",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "orderIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "considerationIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "shortfallAmount",
                  "type": "uint256"
                }
              ],
              "name": "ConsiderationNotMet",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "identifiers",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "ERC1155BatchTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "EtherTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InsufficientEtherSupplied",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidBasicOrderParameterEncoding",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidCallToConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidCanceller",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidERC721TransferAmount",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "InvalidMsgValue",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSigner",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidTime",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingItemAmount",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingOriginalConsiderationItems",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "NoContract",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoReentrantCalls",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoSpecifiedOrdersAvailable",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderAlreadyFilled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderIsCancelled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderPartiallyFilled",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "PartialFillsNotEnabledForOrder",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "identifier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenTransferGenericFailure",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                }
              ],
              "name": "NonceIncremented",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderCancelled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fulfiller",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct SpentItem[]",
                  "name": "offer",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address payable",
                      "name": "recipient",
                      "type": "address"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct ReceivedItem[]",
                  "name": "consideration",
                  "type": "tuple[]"
                }
              ],
              "name": "OrderFulfilled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderValidated",
              "type": "event"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_2519": {
                  "entryPoint": null,
                  "id": 2519,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_3225": {
                  "entryPoint": null,
                  "id": 3225,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_4482": {
                  "entryPoint": null,
                  "id": 4482,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_5345": {
                  "entryPoint": null,
                  "id": 5345,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_7733": {
                  "entryPoint": null,
                  "id": 7733,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_8248": {
                  "entryPoint": null,
                  "id": 8248,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_deriveDomainSeparator_3247": {
                  "entryPoint": null,
                  "id": 3247,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_deriveTypehashes_3383": {
                  "entryPoint": 283,
                  "id": 3383,
                  "parameterSlots": 0,
                  "returnSlots": 6
                },
                "@_nameString_3264": {
                  "entryPoint": null,
                  "id": 3264,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1453,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_bytes32_fromMemory": {
                  "entryPoint": 1501,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_bytes": {
                  "entryPoint": 1537,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_59d7": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_cfcd": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1596,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7686:45",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:45",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:45",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:45",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:45"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:45",
                            "type": ""
                          }
                        ],
                        "src": "14:290:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "407:147:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "453:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "462:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "465:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "455:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "455:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "455:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "428:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "437:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "424:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "424:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "449:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "420:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "420:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "417:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "478:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "494:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "488:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "488:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "478:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "513:35:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "533:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "544:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "529:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "529:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:25:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "365:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "376:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "388:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "396:6:45",
                            "type": ""
                          }
                        ],
                        "src": "309:245:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "614:59:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "631:3:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "636:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "624:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "624:16:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "624:16:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "649:18:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "660:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "665:1:45",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "656:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "656:11:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "649:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_59d7",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "598:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "606:3:45",
                            "type": ""
                          }
                        ],
                        "src": "559:114:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1476:365:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1493:3:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1498:12:45",
                                    "type": "",
                                    "value": "OfferItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1486:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1486:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1486:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1531:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1536:2:45",
                                        "type": "",
                                        "value": "10"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1527:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1527:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1541:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1520:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1520:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1520:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1579:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1584:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1575:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1575:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1589:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1568:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1568:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1568:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1626:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1631:2:45",
                                        "type": "",
                                        "value": "39"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1622:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1622:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1636:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1615:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1615:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1615:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1688:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1693:2:45",
                                        "type": "",
                                        "value": "68"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1684:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1684:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1698:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1677:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1677:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1677:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1741:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1746:2:45",
                                        "type": "",
                                        "value": "88"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1737:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1737:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1751:19:45",
                                    "type": "",
                                    "value": "uint256 endAmount"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1730:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1730:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1730:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1791:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1796:3:45",
                                        "type": "",
                                        "value": "105"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1787:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1787:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1802:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1780:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1780:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1780:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1815:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1826:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1831:3:45",
                                    "type": "",
                                    "value": "106"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1822:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1822:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1815:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1460:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1468:3:45",
                            "type": ""
                          }
                        ],
                        "src": "678:1163:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2745:425:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2762:3:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2767:20:45",
                                    "type": "",
                                    "value": "ConsiderationItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2755:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2755:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2755:33:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2808:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2813:2:45",
                                        "type": "",
                                        "value": "18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2804:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2804:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2818:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2797:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2797:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2797:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2856:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2861:2:45",
                                        "type": "",
                                        "value": "33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2852:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2852:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2866:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2845:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2845:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2845:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2903:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2908:2:45",
                                        "type": "",
                                        "value": "47"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2899:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2899:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2913:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2892:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2892:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2892:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2965:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2970:2:45",
                                        "type": "",
                                        "value": "76"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2961:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2961:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2975:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2954:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2954:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2954:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3018:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3023:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3014:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3014:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3028:20:45",
                                    "type": "",
                                    "value": "uint256 endAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3007:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3007:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3007:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3069:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3074:3:45",
                                        "type": "",
                                        "value": "114"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3065:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3065:13:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320726563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3080:19:45",
                                    "type": "",
                                    "value": "address recipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3058:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3058:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3058:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3120:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3125:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3116:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3116:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3131:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3109:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3109:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3109:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3144:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3155:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3160:3:45",
                                    "type": "",
                                    "value": "132"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3151:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3151:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3144:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2729:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2737:3:45",
                            "type": ""
                          }
                        ],
                        "src": "1846:1324:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3230:78:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3247:3:45"
                                  },
                                  {
                                    "hexValue": "6279746573333220636f6e647569744b65792c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3252:21:45",
                                    "type": "",
                                    "value": "bytes32 conduitKey,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3240:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3240:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3240:34:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3283:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3294:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3299:2:45",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3290:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3290:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_cfcd",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3214:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3222:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3175:133:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3363:72:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3380:3:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206e6f6e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3385:15:45",
                                    "type": "",
                                    "value": "uint256 nonce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3373:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3373:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3373:28:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3410:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3421:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3426:2:45",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3417:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3417:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3410:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3347:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3355:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3313:122:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4844:659:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4861:3:45"
                                  },
                                  {
                                    "hexValue": "4f72646572436f6d706f6e656e747328",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4866:18:45",
                                    "type": "",
                                    "value": "OrderComponents("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4854:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4854:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4854:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4905:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4910:2:45",
                                        "type": "",
                                        "value": "16"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4901:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4901:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373206f6666657265722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4915:18:45",
                                    "type": "",
                                    "value": "address offerer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4894:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4894:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4894:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4954:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4959:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4950:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4950:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373207a6f6e652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4964:15:45",
                                    "type": "",
                                    "value": "address zone,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4943:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4943:37:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4943:37:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5000:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5005:2:45",
                                        "type": "",
                                        "value": "45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4996:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4996:12:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d5b5d206f666665722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5010:20:45",
                                    "type": "",
                                    "value": "OfferItem[] offer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4989:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4989:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4989:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5051:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5056:2:45",
                                        "type": "",
                                        "value": "63"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5047:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5047:12:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5061:34:45",
                                    "type": "",
                                    "value": "ConsiderationItem[] consideratio"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5040:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5040:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5040:56:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5116:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5121:2:45",
                                        "type": "",
                                        "value": "95"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5112:12:45"
                                  },
                                  {
                                    "hexValue": "6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5126:4:45",
                                    "type": "",
                                    "value": "n,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5105:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5105:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5105:26:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5151:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5156:2:45",
                                        "type": "",
                                        "value": "97"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5147:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5147:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206f72646572547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5161:18:45",
                                    "type": "",
                                    "value": "uint8 orderType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5140:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5140:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5140:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5200:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5205:3:45",
                                        "type": "",
                                        "value": "113"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5196:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5196:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620737461727454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5211:20:45",
                                    "type": "",
                                    "value": "uint256 startTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5189:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5189:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5189:43:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5252:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5257:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5248:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5248:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e6454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5263:18:45",
                                    "type": "",
                                    "value": "uint256 endTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5241:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5241:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5241:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5302:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5307:3:45",
                                        "type": "",
                                        "value": "147"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5298:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5298:13:45"
                                  },
                                  {
                                    "hexValue": "62797465733332207a6f6e65486173682c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5313:19:45",
                                    "type": "",
                                    "value": "bytes32 zoneHash,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5291:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5291:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5291:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5353:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5358:3:45",
                                        "type": "",
                                        "value": "164"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5349:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5349:13:45"
                                  },
                                  {
                                    "hexValue": "75696e743235362073616c742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5364:15:45",
                                    "type": "",
                                    "value": "uint256 salt,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5342:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5342:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5342:38:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5389:108:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "5485:3:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5490:3:45",
                                                "type": "",
                                                "value": "177"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5481:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5481:13:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_stringliteral_cfcd",
                                          "nodeType": "YulIdentifier",
                                          "src": "5451:29:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5451:44:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_stringliteral",
                                      "nodeType": "YulIdentifier",
                                      "src": "5426:24:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5426:70:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_stringliteral_59d7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5396:29:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5396:101:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5389:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4828:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4836:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3440:2063:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6205:306:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6222:3:45"
                                  },
                                  {
                                    "hexValue": "454950373132446f6d61696e28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6227:15:45",
                                    "type": "",
                                    "value": "EIP712Domain("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6215:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6215:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6215:28:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6263:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6268:2:45",
                                        "type": "",
                                        "value": "13"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6259:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6259:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e67206e616d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6273:14:45",
                                    "type": "",
                                    "value": "string name,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6252:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6252:36:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6252:36:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6308:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6313:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6304:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6304:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e672076657273696f6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6318:17:45",
                                    "type": "",
                                    "value": "string version,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6297:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6297:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6297:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6356:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6361:2:45",
                                        "type": "",
                                        "value": "40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6352:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6352:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620636861696e49642c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6366:18:45",
                                    "type": "",
                                    "value": "uint256 chainId,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6345:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6345:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6345:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6405:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6410:2:45",
                                        "type": "",
                                        "value": "56"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6401:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6401:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320766572696679696e67436f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6415:27:45",
                                    "type": "",
                                    "value": "address verifyingContract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6394:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6394:49:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6394:49:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6463:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6468:2:45",
                                        "type": "",
                                        "value": "81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6459:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6459:12:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6473:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6452:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6452:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6452:25:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6486:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6497:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6502:2:45",
                                    "type": "",
                                    "value": "82"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6493:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6493:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6486:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6189:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6197:3:45",
                            "type": ""
                          }
                        ],
                        "src": "5508:1003:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6565:287:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6575:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6595:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6589:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6589:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6579:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6610:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6619:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6614:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6681:76:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6706:3:45"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "6711:1:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6702:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6702:11:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6729:5:45"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6736:1:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6725:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6725:13:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "6740:4:45",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6721:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6721:24:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6715:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6715:31:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6695:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6695:52:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6695:52:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6640:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6643:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6637:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6637:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6651:21:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6653:17:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6662:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6665:4:45",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6658:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6658:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6653:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6633:3:45",
                                "statements": []
                              },
                              "src": "6629:128:45"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6783:31:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6796:3:45"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "6801:6:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6792:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6792:16:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6810:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6785:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6785:27:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6785:27:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6772:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6775:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6769:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6769:13:45"
                              },
                              "nodeType": "YulIf",
                              "src": "6766:48:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6823:23:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6834:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6839:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6830:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6830:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6823:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6542:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6549:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6557:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6516:336:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7086:104:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7096:88:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7120:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7145:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "7170:6:45"
                                          },
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "7178:3:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_bytes",
                                          "nodeType": "YulIdentifier",
                                          "src": "7153:16:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7153:29:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "7128:16:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7128:55:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "7103:16:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7103:81:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7096:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7046:3:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7051:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7059:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7067:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7078:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6857:333:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7408:276:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7418:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7430:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7441:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7426:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7426:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7418:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7461:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7472:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7454:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7454:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7454:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7499:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7510:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7495:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7495:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7515:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7488:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7488:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7488:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7542:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7553:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7538:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7538:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7558:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7531:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7531:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7531:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7585:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7596:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7581:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7581:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7601:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7574:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7574:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7574:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7628:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7639:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7624:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7624:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7649:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7665:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7670:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "7661:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7661:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7674:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "7657:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7657:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7645:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7645:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7617:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7617:61:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7617:61:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7345:9:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7356:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7364:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7372:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7380:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7388:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7399:4:45",
                            "type": ""
                          }
                        ],
                        "src": "7195:489:45"
                      }
                    ]
                  },
                  "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 abi_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OfferItem(\")\n        mstore(add(pos, 10), \"uint8 itemType,\")\n        mstore(add(pos, 25), \"address token,\")\n        mstore(add(pos, 39), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 68), \"uint256 startAmount,\")\n        mstore(add(pos, 88), \"uint256 endAmount\")\n        mstore(add(pos, 105), \")\")\n        end := add(pos, 106)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"ConsiderationItem(\")\n        mstore(add(pos, 18), \"uint8 itemType,\")\n        mstore(add(pos, 33), \"address token,\")\n        mstore(add(pos, 47), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 76), \"uint256 startAmount,\")\n        mstore(add(pos, 96), \"uint256 endAmount,\")\n        mstore(add(pos, 114), \"address recipient\")\n        mstore(add(pos, 131), \")\")\n        end := add(pos, 132)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral(pos) -> end\n    {\n        mstore(pos, \"uint256 nonce\")\n        end := add(pos, 13)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address zone,\")\n        mstore(add(pos, 45), \"OfferItem[] offer,\")\n        mstore(add(pos, 63), \"ConsiderationItem[] consideratio\")\n        mstore(add(pos, 95), \"n,\")\n        mstore(add(pos, 97), \"uint8 orderType,\")\n        mstore(add(pos, 113), \"uint256 startTime,\")\n        mstore(add(pos, 131), \"uint256 endTime,\")\n        mstore(add(pos, 147), \"bytes32 zoneHash,\")\n        mstore(add(pos, 164), \"uint256 salt,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral(abi_encode_stringliteral_cfcd(add(pos, 177))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value, i), 0x20)))\n        }\n        if gt(i, length) { mstore(add(pos, length), 0) }\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        end := abi_encode_bytes(value2, abi_encode_bytes(value1, abi_encode_bytes(value0, pos)))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}",
                  "id": 45,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101c060405234801561001157600080fd5b506040516106fd3803806106fd833981016040819052610030916105ad565b8080808061003c61011b565b610120526101005260e05260c081815260a0838152608085815246610140819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610160526001600160a01b03811661018081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010691906105dd565b506101a0525050600160005550610663915050565b6000808080808061014c60408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260018152603160f81b90840152519097507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6965060009161024e91016909ecccccae492e8cada560b31b81526e1d5a5b9d0e081a5d195b551e5c194b608a1b600a8201526d1859191c995cdcc81d1bdad95b8b60921b60198201527f75696e74323536206964656e7469666965724f7243726974657269612c00000060278201527f75696e74323536207374617274416d6f756e742c0000000000000000000000006044820152701d5a5b9d0c8d4d88195b99105b5bdd5b9d607a1b6058820152602960f81b6069820152606a0190565b60408051601f1981840301815282825271086dedce6d2c8cae4c2e8d2dedc92e8cada560731b60208401526e1d5a5b9d0e081a5d195b551e5c194b608a1b60328401526d1859191c995cdcc81d1bdad95b8b60921b60418401527f75696e74323536206964656e7469666965724f7243726974657269612c000000604f8401527f75696e74323536207374617274416d6f756e742c000000000000000000000000606c840152711d5a5b9d0c8d4d88195b99105b5bdd5b9d0b60721b6080840152701859191c995cdcc81c9958da5c1a595b9d607a1b6092840152602960f81b60a384018190528251808503608401815260a485019093526f09ee4c8cae486dedae0dedccadce8e6560831b60c48501526f1859191c995cdcc81bd999995c995c8b60821b60d48501526c1859191c995cdcc81e9bdb994b609a1b60e48501527113d999995c925d195b56d7481bd999995c8b60721b60f18501527f436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f610103850152611b8b60f21b6101238501526f1d5a5b9d0e081bdc99195c951e5c194b60821b610125850152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b6101358501526f1d5a5b9d0c8d4d88195b99151a5b594b60821b61014785015270189e5d195ccccc881e9bdb9952185cda0b607a1b6101578501526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101688501527f6279746573333220636f6e647569744b65792c000000000000000000000000006101758501526c75696e74323536206e6f6e636560981b6101888501526101958401529250906000906101960160408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b6071830152915060720160408051601f19818403018152908290528051602091820120855186830120855186840120919a509850965061058a918391859187910161063c565b604051602081830303815290604052805190602001209350505050909192939495565b6000602082840312156105bf57600080fd5b81516001600160a01b03811681146105d657600080fd5b9392505050565b600080604083850312156105f057600080fd5b505080516020909101519092909150565b6000815160005b818110156106225760208185018101518683015201610608565b81811115610631576000828601525b509290920192915050565b600061065a61065461064e8488610601565b86610601565b84610601565b95945050505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051603f6106be60003960005050600050506000505060005050600050506000505060005050600050506000505060005050603f6000f3fe6080604052600080fdfea2646970667358221220b25ff46520cf5f5208435a727dda45f6c50c9da52c99f25b77d7bf0a5b2e9a9e64736f6c634300080d0033",
              "opcodes": "PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x6FD CODESIZE SUB DUP1 PUSH2 0x6FD DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0x5AD JUMP JUMPDEST DUP1 DUP1 DUP1 DUP1 PUSH2 0x3C PUSH2 0x11B JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH2 0x100 MSTORE PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x160 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x180 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE2 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 0x106 SWAP2 SWAP1 PUSH2 0x5DD JUMP JUMPDEST POP PUSH2 0x1A0 MSTORE POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP PUSH2 0x663 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x14C PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP8 POP PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP7 POP PUSH1 0x0 SWAP2 PUSH2 0x24E SWAP2 ADD PUSH10 0x9ECCCCCAE492E8CADA5 PUSH1 0xB3 SHL DUP2 MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0xA DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x19 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x27 DUP3 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D PUSH1 0x7A SHL PUSH1 0x58 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x69 DUP3 ADD MSTORE PUSH1 0x6A ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE PUSH18 0x86DEDCE6D2C8CAE4C2E8D2DEDC92E8CADA5 PUSH1 0x73 SHL PUSH1 0x20 DUP5 ADD MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0x32 DUP5 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x41 DUP5 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x4F DUP5 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x6C DUP5 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D0B PUSH1 0x72 SHL PUSH1 0x80 DUP5 ADD MSTORE PUSH17 0x1859191C995CDCC81C9958DA5C1A595B9D PUSH1 0x7A SHL PUSH1 0x92 DUP5 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0xA3 DUP5 ADD DUP2 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB PUSH1 0x84 ADD DUP2 MSTORE PUSH1 0xA4 DUP6 ADD SWAP1 SWAP4 MSTORE PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL PUSH1 0xC4 DUP6 ADD MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0xD4 DUP6 ADD MSTORE PUSH13 0x1859191C995CDCC81E9BDB994B PUSH1 0x9A SHL PUSH1 0xE4 DUP6 ADD MSTORE PUSH18 0x13D999995C925D195B56D7481BD999995C8B PUSH1 0x72 SHL PUSH1 0xF1 DUP6 ADD MSTORE PUSH32 0x436F6E73696465726174696F6E4974656D5B5D20636F6E73696465726174696F PUSH2 0x103 DUP6 ADD MSTORE PUSH2 0x1B8B PUSH1 0xF2 SHL PUSH2 0x123 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0E081BDC99195C951E5C194B PUSH1 0x82 SHL PUSH2 0x125 DUP6 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH2 0x135 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH2 0x147 DUP6 ADD MSTORE PUSH17 0x189E5D195CCCCC881E9BDB9952185CDA0B PUSH1 0x7A SHL PUSH2 0x157 DUP6 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x168 DUP6 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x175 DUP6 ADD MSTORE PUSH13 0x75696E74323536206E6F6E6365 PUSH1 0x98 SHL PUSH2 0x188 DUP6 ADD MSTORE PUSH2 0x195 DUP5 ADD MSTORE SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x196 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 DUP6 MLOAD DUP7 DUP4 ADD KECCAK256 DUP6 MLOAD DUP7 DUP5 ADD KECCAK256 SWAP2 SWAP11 POP SWAP9 POP SWAP7 POP PUSH2 0x58A SWAP2 DUP4 SWAP2 DUP6 SWAP2 DUP8 SWAP2 ADD PUSH2 0x63C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP POP POP POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x622 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0x608 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x631 JUMPI PUSH1 0x0 DUP3 DUP7 ADD MSTORE JUMPDEST POP SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x65A PUSH2 0x654 PUSH2 0x64E DUP5 DUP9 PUSH2 0x601 JUMP JUMPDEST DUP7 PUSH2 0x601 JUMP JUMPDEST DUP5 PUSH2 0x601 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH1 0x3F PUSH2 0x6BE PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x3F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB2 0x5F DELEGATECALL PUSH6 0x20CF5F520843 GAS PUSH19 0x7DDA45F6C50C9DA52C99F25B77D7BF0A5B2E9A SWAP15 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "718:24097:28:-:0;;;1126:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1175:17;;;;1967:19:23;:17;:19::i;:::-;1760:226;;;;;;;;;;;;;;-1:-1:-1;1760:226:23;;;2087:13;2075:25;;;;-1:-1:-1;2761:187:23;;-1:-1:-1;2761:187:23;;;7454:25:45;;;;7495:18;;;7488:34;;;;-1:-1:-1;7538:18:45;;7531:34;;;;7581:18;;;7574:34;2929:4:23;7624:19:45;;;7617:61;2761:187:23;;;;;;;;;;7426:19:45;;2761:187:23;;;2738:220;;;;;2110:44;;-1:-1:-1;;;;;2213:67:23;;;;;;2420:42;;;-1:-1:-1;;;2420:42:23;;;;:40;;:42;;;;;;;;;;;;;2213:67;2420:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2372:100:23;;-1:-1:-1;;2287:1:24;657:16:36;:31;-1:-1:-1;718:24097:28;;-1:-1:-1;;718:24097:28;4735:3021:23;4824:16;;;;;;5140:13;3927:22;;;;;;;;;;;;-1:-1:-1;;;3927:22:23;;;;;3804:152;5140:13;5124:31;;;;;;;5252:10;;;;;;;;;;;-1:-1:-1;;;5252:10:23;;;;5384:264;5124:31;;-1:-1:-1;5242:21:23;;-1:-1:-1;;;5384:264:23;;;-1:-1:-1;;;1486:25:45;;-1:-1:-1;;;1536:2:45;1527:12;;1520:39;-1:-1:-1;;;1584:2:45;1575:12;;1568:38;1636:31;1631:2;1622:12;;1615:53;1698:22;1693:2;1684:12;;1677:44;-1:-1:-1;;;1746:2:45;1737:12;;1730:41;-1:-1:-1;;;1796:3:45;1787:13;;1780:26;1831:3;1822:13;;678:1163;5384:264:23;;;;-1:-1:-1;;5384:264:23;;;;;;;;;-1:-1:-1;;;5384:264:23;5785:310;;2755:33:45;-1:-1:-1;;;2804:12:45;;;2797:39;-1:-1:-1;;;2852:12:45;;;2845:38;2913:31;2899:12;;;2892:53;2975:22;2961:12;;;2954:44;-1:-1:-1;;;3014:12:45;;;3007:42;-1:-1:-1;;;3065:13:45;;;3058:42;-1:-1:-1;;;3116:13:45;;;3109:26;;;5785:310:23;;;;;;;;;3151:13:45;;;5785:310:23;;;-1:-1:-1;;;6260:488:23;;;4854:31:45;-1:-1:-1;;;4901:12:45;;;4894:40;-1:-1:-1;;;4950:12:45;;;4943:37;-1:-1:-1;;;4996:12:45;;;4989:42;5061:34;5047:12;;;5040:56;-1:-1:-1;;;5112:12:45;;;5105:26;-1:-1:-1;;;5147:12:45;;;5140:40;-1:-1:-1;;;5196:13:45;;;5189:43;-1:-1:-1;;;5248:13:45;;;5241:41;-1:-1:-1;;;5298:13:45;;;5291:42;-1:-1:-1;;;5349:13:45;;;5342:38;3252:21;5481:13;;;3240:34;-1:-1:-1;;;3290:12:45;;;3373:28;3417:12;;;624:16;5384:264:23;-1:-1:-1;5785:310:23;-1:-1:-1;;656:11:45;;6260:488:23;;;-1:-1:-1;;6260:488:23;;;;;;;;;;-1:-1:-1;;;6260:488:23;6893:248;;6215:28:45;-1:-1:-1;;;6259:12:45;;;6252:36;-1:-1:-1;;;6304:12:45;;;6297:39;-1:-1:-1;;;6352:12:45;;;6345:40;6415:27;6401:12;;;6394:49;-1:-1:-1;;;6459:12:45;;;6452:25;6260:488:23;-1:-1:-1;6493:12:45;;6893:248:23;;;-1:-1:-1;;6893:248:23;;;;;;;;;;6870:281;;6893:248;6870:281;;;;7261:30;;;;;;7409:38;;;;;;6870:281;;-1:-1:-1;7261:30:23;-1:-1:-1;7409:38:23;-1:-1:-1;7577:162:23;;7611:32;;7419:27;;7271:19;;7577:162;;:::i;:::-;;;;;;;;;;;;;7554:195;;;;;;7538:211;;5051:2705;;;4735:3021;;;;;;:::o;14:290:45:-;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:45;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:45:o;309:245::-;388:6;396;449:2;437:9;428:7;424:23;420:32;417:52;;;465:1;462;455:12;417:52;-1:-1:-1;;488:16:45;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:45:o;6516:336::-;6557:3;6595:5;6589:12;6619:1;6629:128;6643:6;6640:1;6637:13;6629:128;;;6740:4;6725:13;;;6721:24;;6715:31;6702:11;;;6695:52;6658:12;6629:128;;;6775:6;6772:1;6769:13;6766:48;;;6810:1;6801:6;6796:3;6792:16;6785:27;6766:48;-1:-1:-1;6830:16:45;;;;;6516:336;-1:-1:-1;;6516:336:45:o;6857:333::-;7078:3;7103:81;7128:55;7153:29;7178:3;7170:6;7153:29;:::i;:::-;7145:6;7128:55;:::i;:::-;7120:6;7103:81;:::i;:::-;7096:88;6857:333;-1:-1:-1;;;;;6857:333:45:o;7195:489::-;718:24097:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea2646970667358221220b25ff46520cf5f5208435a727dda45f6c50c9da52c99f25b77d7bf0a5b2e9a9e64736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB2 0x5F DELEGATECALL PUSH6 0x20CF5F520843 GAS PUSH19 0x7DDA45F6C50C9DA52C99F25B77D7BF0A5B2E9A SWAP15 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "718:24097:28:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"NonceIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fulfiller\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct SpentItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct ReceivedItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Derive and set hashes, reference chainId, and associated domain      separator during deployment.\",\"params\":{\"conduitController\":\"A contract that deploys conduits, or proxies                          that may optionally be used to transfer approved                          ERC20/721/1155 tokens.\"}}},\"title\":\"Executor\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Executor contains functions related to processing executions (i.e.         transferring items, either directly or via conduits).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/Executor.sol\":\"Executor\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/conduit/lib/ConduitEnums.sol\":{\"keccak256\":\"0x3a9ecf77688f97d1b595be27b49fca3eac93e3f91160d79f0f0063c250fd8aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d596c21d5c7c7b47ca14908cbd7add9c06898c500cf47988446f843c0b28cf96\",\"dweb:/ipfs/QmZf12Y7XHwEWvjd2ZbaUFz4NXsWPFGJF6vNg1HECvXV5m\"]},\"seaport/contracts/conduit/lib/ConduitStructs.sol\":{\"keccak256\":\"0xfd2cec45327e9a6ebc02d7efb9daa1cfdabb26eb803e4b2e9b5e82340d92cfed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea7fa97afdf70ab91449e54f9a4f40e9da16292ab87b86e7e975e6d92f573dc3\",\"dweb:/ipfs/QmaRvo6P8YYPYNgcuP4HVV2wqDuVSB1t6AwMe8jMbcQY3F\"]},\"seaport/contracts/interfaces/AbridgedTokenInterfaces.sol\":{\"keccak256\":\"0x6b4937a65838012d673de632665960836d9b81ce4d90142c02797e4d17361838\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe115b5e3b76cab664b07b242b37221adb36606b114a212798809106c1e0faab\",\"dweb:/ipfs/QmQvEoKtVyYQC5pPoJogvT5yMtumoCffH1Q8BCGLfGzVAM\"]},\"seaport/contracts/interfaces/ConduitControllerInterface.sol\":{\"keccak256\":\"0x86b7ceb6ff7ce653fa7d0d79eeb8b96ec57eedd35f8c87e9838dde6c23f317bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://453fa0365834a50956e513d306371bfb7019124150bf9afd1699599fe6f7852c\",\"dweb:/ipfs/QmXiqKzGdj2A4TsuHtFLTgdLPRFwasbWWibNBRP5cikJod\"]},\"seaport/contracts/interfaces/ConduitInterface.sol\":{\"keccak256\":\"0x6aec074141c2a66f0c06ff006b6b61f5ee3f988c1cee26a51f91e1616af194d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4cda8ec77a8261f3270087331f72443b5dcb686e93297fe9641b757dff108ae1\",\"dweb:/ipfs/QmPuWHXQWuhTUfbe3yB842nS1jRM2iLyJ16rVkDSyLCD2L\"]},\"seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"keccak256\":\"0xf0d0eda6b47217d0e7c2862fdd5d7857cb828f9e0fc52e2c37c6d2b454832a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://374d19e0d9e5ce76e10dce8bada5ee9d1adcd54898c0cba9099d0dd72a5bf996\",\"dweb:/ipfs/QmS49qk49jmkPuMzLbbop5s7eJxbfRzKokQXB2QJjfVPHT\"]},\"seaport/contracts/interfaces/EIP1271Interface.sol\":{\"keccak256\":\"0x3c60fdc09b2bc7cb3a615ca82ee1bd776813e75883515efd1e794fe8a3228f29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b17dda7065bffe0ba89c26d413e89c7e7e733f5e74cefba56799ebb57e60908\",\"dweb:/ipfs/QmT2DJBP4WvXYKyFusiSeJ7kbo4UVor4yKCkwEF237CqxZ\"]},\"seaport/contracts/interfaces/ReentrancyErrors.sol\":{\"keccak256\":\"0x9ab27fa5a68f55ad89072ea213c6f12979ae469041ca473d81f800dbdbe9bb48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0cc617da7254d981fd5970d16acc2a6f6fe2fe0bc3e2d0976f7c01a4893430ec\",\"dweb:/ipfs/QmbhqKxfhrfPAjp99LVspxopQG7Mb9L9xdSa38ujCxmvTJ\"]},\"seaport/contracts/interfaces/SignatureVerificationErrors.sol\":{\"keccak256\":\"0xb86f318b159c16087372e12b1e2c37c15fb745be1566bb03812e3814c15fb605\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff051f5cb44654096126c9ec72d1aaebf568e87a01da6200e969e673b8c3e4bf\",\"dweb:/ipfs/QmaPKx8ikPxRzYRubNraLhPdnGmXunZ6WGhzaed18oBi66\"]},\"seaport/contracts/interfaces/TokenTransferrerErrors.sol\":{\"keccak256\":\"0x128fbb0236de5e52c34876c61148e04c12289e92d6bce2270760905617a01b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ed114ea7bf9ce55065d853f0f705eb82cc840672e0c2ab899691ab5703d2e98\",\"dweb:/ipfs/QmXQsajetWBmU7tzjoFm5wyajRKrMMEGXFF7ZQxaH7ZceG\"]},\"seaport/contracts/lib/Assertions.sol\":{\"keccak256\":\"0xb2ef1d902d0eefb7aaffc720354dd0352f95442178091f059d31ebe096894586\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6f121104190dd5e5a4e98fcbf024ad300c4b9704768fdb49d81f270c22a8067\",\"dweb:/ipfs/QmWKzhVq1itpqTfeiCELGb1jDcTnBdCwroHgGMzqDuYWN8\"]},\"seaport/contracts/lib/ConsiderationBase.sol\":{\"keccak256\":\"0x1015a0bb6fff27278ceec2f76cbf0c775bfb3e8d03cafe8d3549e252e9563ba2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f7d3b48069268df59a77293a7cdc232df35c5b1c8b1974b422a850bedb875f6\",\"dweb:/ipfs/QmSMMnXqsUEWuC1u7BF6coTXK63BXaQYvWqX69doaatKw8\"]},\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]},\"seaport/contracts/lib/Executor.sol\":{\"keccak256\":\"0x72b4591bebbeb723ad41e9dabd931e4a969a8cff3e6a9b1a82dd2299391834e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3030a05a77aa4375961371f8508327d0a7f102c9b52319a0263a15a498155d70\",\"dweb:/ipfs/QmWr6WFUwJsszCBvMhLUPAz4tz3jTbJzABQwtfRUC5cKzv\"]},\"seaport/contracts/lib/GettersAndDerivers.sol\":{\"keccak256\":\"0xb9d0cf2a84567b6b70e1ddd9e3450dddf8139e5396bcac24c42f46db16228efa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99767431817fd6b157bc199784ca3f3bc2cf024a332ae8e2a5eb7e3db0f2b47d\",\"dweb:/ipfs/QmPWaJet2TPiWc7xEo7QqVpctaLvXPZFep8R8Vi4ZRzzCw\"]},\"seaport/contracts/lib/LowLevelHelpers.sol\":{\"keccak256\":\"0x83085de63b870cfb3940c68d96a40b2cf9afb7280c1afa3034d1c55c80444a94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9ba49a7318a517e836811dfc67989e9f14959a7cd55220853af6b6273309543\",\"dweb:/ipfs/QmUAQr4SReMunUvwBxKPdd8XLPy5GKMEEhPwpD32UYn3kx\"]},\"seaport/contracts/lib/NonceManager.sol\":{\"keccak256\":\"0xe8b6e40830e216912ce483e867151e84cc0b290404220e1ed5fbb69821161f8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4ef49cbc0b5385b64c1f8c9d5cf572dff35ec291970714ef11520de2c01ab9c\",\"dweb:/ipfs/QmfJoNCtAHUYsidmUaiMBP8wMzUYCtg33G8nUqyME5AftL\"]},\"seaport/contracts/lib/ReentrancyGuard.sol\":{\"keccak256\":\"0xec219fb657ce8400835d8d1ff87716247c5fdde51bca31fddf19415abad773db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eca390f7b8fbccc703ad22edd4f35fa896de59912f21d9471d51ef83b961d3c5\",\"dweb:/ipfs/QmXyxcfzgD4SaTtgqGjUjxK4tb76NiPcooMkL9c11yhm2L\"]},\"seaport/contracts/lib/SignatureVerification.sol\":{\"keccak256\":\"0x5833c9bf1ab9c8fbfeb723ff500722e269a1c05b0fe14d8a837e40c88138f4fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0af100e71a40bc871019c7ebd5c786007deacbf58ee98bce204c43811c726dd\",\"dweb:/ipfs/QmSjdy3wSypHCxCdFGZxLFCCRJf7cfVn6MM75KUbj2y3jN\"]},\"seaport/contracts/lib/TokenTransferrer.sol\":{\"keccak256\":\"0xe392cea22226f1b55e35b0295d0cfa156c7764f2509fa416f3946ca748c9605a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddf9b20512bc36f5bbe25f56729aa31a139b1560dfc14beb42d5d09ae8d44b48\",\"dweb:/ipfs/QmSN9GdbtqBcobRSd8kSCxn2GScZhiiAbuxk5djmkatKRD\"]},\"seaport/contracts/lib/TokenTransferrerConstants.sol\":{\"keccak256\":\"0x5ecc368039fd81cc27788a664538ab63f1b5deb9caa8839d9499fadfd1d465cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0e821e5fd5a31cdcaaf334203dd58d80489c1aed2fd2a91a9683a9e342c9653\",\"dweb:/ipfs/QmRKkHF5aLKJ8KrMmMoV9UsCtgtrCQYgeptGK4jKVGM68j\"]},\"seaport/contracts/lib/Verifiers.sol\":{\"keccak256\":\"0x69755b486d816164270d1b37c187ea7a3ce262e9d31153a88279fe6d8cb76cd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://16dc060d4321a17cdcbf1125b076bb9bbf75086a57d7c6eeca7e9845fcd6d76e\",\"dweb:/ipfs/QmSnF21ffxHnfiYRVVRopn2EcJagghQZTTcdDvMoiR9fsM\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/FulfillmentApplier.sol": {
        "FulfillmentApplier": {
          "abi": [
            {
              "inputs": [],
              "name": "InvalidFulfillmentComponentData",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MismatchedFulfillmentOfferAndConsiderationComponents",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "enum Side",
                  "name": "side",
                  "type": "uint8"
                }
              ],
              "name": "MissingFulfillmentComponentOnAggregation",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OfferAndConsiderationRequiredOnFulfillment",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220d771f1a56fa49542d5624864d42701933bffcf40b7d4bfd4a6266ab1f170499164736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD7 PUSH18 0xF1A56FA49542D5624864D42701933BFFCF40 0xB7 0xD4 0xBF 0xD4 0xA6 0x26 PUSH11 0xB1F170499164736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "842:29815:29:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea2646970667358221220d771f1a56fa49542d5624864d42701933bffcf40b7d4bfd4a6266ab1f170499164736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD7 PUSH18 0xF1A56FA49542D5624864D42701933BFFCF40 0xB7 0xD4 0xBF 0xD4 0xA6 0x26 PUSH11 0xB1F170499164736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "842:29815:29:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidFulfillmentComponentData\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MismatchedFulfillmentOfferAndConsiderationComponents\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum Side\",\"name\":\"side\",\"type\":\"uint8\"}],\"name\":\"MissingFulfillmentComponentOnAggregation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferAndConsiderationRequiredOnFulfillment\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"InvalidFulfillmentComponentData()\":[{\"details\":\"Revert with an error when an order or item index are out of range      or a fulfillment component does not match the type, token,      identifier, or conduit preference of the initial consideration item.\"}],\"MismatchedFulfillmentOfferAndConsiderationComponents()\":[{\"details\":\"Revert with an error when the initial offer item named by a      fulfillment component does not match the type, token, identifier,      or conduit preference of the initial consideration item.\"}],\"MissingFulfillmentComponentOnAggregation(uint8)\":[{\"details\":\"Revert with an error when a fulfillment is provided as part of an      call to fulfill available orders that does not declare at least one      component.\"}],\"OfferAndConsiderationRequiredOnFulfillment()\":[{\"details\":\"Revert with an error when a fulfillment is provided that does not      declare at least one offer component and at least one consideration      component.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"FulfillmentApplier\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"FulfillmentApplier contains logic related to applying fulfillments,         both as part of order matching (where offer items are matched to         consideration items) as well as fulfilling available orders (where         order items and consideration items are independently aggregated).\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/FulfillmentApplier.sol\":\"FulfillmentApplier\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/FulfillmentApplicationErrors.sol\":{\"keccak256\":\"0x85d34353dec017698bffe508a2cd37970ac35684e9319ca5ce1ec41228313cde\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://304c4f89b90b212a7fed6e29c7f11575c20992845981074e42b6890f86a42808\",\"dweb:/ipfs/QmP1g5tEi8YLbAbFDXGc6Rp37zuQXousunm38bvQbdanu5\"]},\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]},\"seaport/contracts/lib/FulfillmentApplier.sol\":{\"keccak256\":\"0x8caa24084d5ee58e8d858bef5cf933cf41d4c94b31b74d3220af0fa73f4ac888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45bdb2fd064cd05b99a980011898bf07c38c847bb2e0d723363d5552a5ccbc87\",\"dweb:/ipfs/QmccTMHU8oe9NdWkJdiEkrRxbL2dw87swZLYT7Tdfr6M8B\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/GettersAndDerivers.sol": {
        "GettersAndDerivers": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduitController",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "BadFraction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "orderIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "considerationIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "shortfallAmount",
                  "type": "uint256"
                }
              ],
              "name": "ConsiderationNotMet",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "EtherTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InsufficientEtherSupplied",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidBasicOrderParameterEncoding",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidCallToConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidCanceller",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidConduit",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "InvalidMsgValue",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidTime",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingOriginalConsiderationItems",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoSpecifiedOrdersAvailable",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderAlreadyFilled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderIsCancelled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderPartiallyFilled",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "PartialFillsNotEnabledForOrder",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                }
              ],
              "name": "NonceIncremented",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderCancelled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fulfiller",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct SpentItem[]",
                  "name": "offer",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address payable",
                      "name": "recipient",
                      "type": "address"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct ReceivedItem[]",
                  "name": "consideration",
                  "type": "tuple[]"
                }
              ],
              "name": "OrderFulfilled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderValidated",
              "type": "event"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_3225": {
                  "entryPoint": null,
                  "id": 3225,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_5345": {
                  "entryPoint": null,
                  "id": 5345,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_deriveDomainSeparator_3247": {
                  "entryPoint": null,
                  "id": 3247,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_deriveTypehashes_3383": {
                  "entryPoint": 272,
                  "id": 3383,
                  "parameterSlots": 0,
                  "returnSlots": 6
                },
                "@_nameString_3264": {
                  "entryPoint": null,
                  "id": 3264,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1442,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_bytes32_fromMemory": {
                  "entryPoint": 1490,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_bytes": {
                  "entryPoint": 1526,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_59d7": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_cfcd": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1585,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7686:45",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:45",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:45",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:45",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:45"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:45",
                            "type": ""
                          }
                        ],
                        "src": "14:290:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "407:147:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "453:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "462:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "465:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "455:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "455:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "455:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "428:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "437:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "424:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "424:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "449:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "420:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "420:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "417:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "478:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "494:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "488:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "488:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "478:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "513:35:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "533:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "544:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "529:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "529:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:25:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "365:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "376:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "388:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "396:6:45",
                            "type": ""
                          }
                        ],
                        "src": "309:245:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "614:59:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "631:3:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "636:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "624:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "624:16:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "624:16:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "649:18:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "660:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "665:1:45",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "656:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "656:11:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "649:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_59d7",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "598:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "606:3:45",
                            "type": ""
                          }
                        ],
                        "src": "559:114:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1476:365:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1493:3:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1498:12:45",
                                    "type": "",
                                    "value": "OfferItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1486:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1486:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1486:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1531:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1536:2:45",
                                        "type": "",
                                        "value": "10"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1527:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1527:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1541:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1520:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1520:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1520:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1579:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1584:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1575:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1575:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1589:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1568:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1568:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1568:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1626:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1631:2:45",
                                        "type": "",
                                        "value": "39"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1622:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1622:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1636:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1615:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1615:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1615:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1688:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1693:2:45",
                                        "type": "",
                                        "value": "68"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1684:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1684:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1698:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1677:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1677:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1677:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1741:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1746:2:45",
                                        "type": "",
                                        "value": "88"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1737:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1737:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1751:19:45",
                                    "type": "",
                                    "value": "uint256 endAmount"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1730:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1730:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1730:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1791:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1796:3:45",
                                        "type": "",
                                        "value": "105"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1787:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1787:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1802:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1780:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1780:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1780:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1815:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1826:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1831:3:45",
                                    "type": "",
                                    "value": "106"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1822:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1822:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1815:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1460:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1468:3:45",
                            "type": ""
                          }
                        ],
                        "src": "678:1163:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2745:425:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2762:3:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2767:20:45",
                                    "type": "",
                                    "value": "ConsiderationItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2755:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2755:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2755:33:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2808:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2813:2:45",
                                        "type": "",
                                        "value": "18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2804:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2804:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2818:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2797:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2797:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2797:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2856:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2861:2:45",
                                        "type": "",
                                        "value": "33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2852:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2852:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2866:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2845:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2845:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2845:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2903:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2908:2:45",
                                        "type": "",
                                        "value": "47"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2899:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2899:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2913:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2892:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2892:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2892:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2965:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2970:2:45",
                                        "type": "",
                                        "value": "76"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2961:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2961:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2975:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2954:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2954:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2954:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3018:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3023:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3014:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3014:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3028:20:45",
                                    "type": "",
                                    "value": "uint256 endAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3007:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3007:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3007:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3069:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3074:3:45",
                                        "type": "",
                                        "value": "114"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3065:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3065:13:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320726563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3080:19:45",
                                    "type": "",
                                    "value": "address recipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3058:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3058:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3058:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3120:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3125:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3116:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3116:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3131:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3109:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3109:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3109:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3144:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3155:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3160:3:45",
                                    "type": "",
                                    "value": "132"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3151:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3151:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3144:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2729:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2737:3:45",
                            "type": ""
                          }
                        ],
                        "src": "1846:1324:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3230:78:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3247:3:45"
                                  },
                                  {
                                    "hexValue": "6279746573333220636f6e647569744b65792c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3252:21:45",
                                    "type": "",
                                    "value": "bytes32 conduitKey,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3240:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3240:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3240:34:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3283:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3294:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3299:2:45",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3290:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3290:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_cfcd",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3214:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3222:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3175:133:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3363:72:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3380:3:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206e6f6e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3385:15:45",
                                    "type": "",
                                    "value": "uint256 nonce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3373:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3373:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3373:28:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3410:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3421:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3426:2:45",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3417:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3417:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3410:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3347:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3355:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3313:122:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4844:659:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4861:3:45"
                                  },
                                  {
                                    "hexValue": "4f72646572436f6d706f6e656e747328",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4866:18:45",
                                    "type": "",
                                    "value": "OrderComponents("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4854:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4854:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4854:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4905:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4910:2:45",
                                        "type": "",
                                        "value": "16"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4901:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4901:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373206f6666657265722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4915:18:45",
                                    "type": "",
                                    "value": "address offerer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4894:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4894:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4894:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4954:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4959:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4950:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4950:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373207a6f6e652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4964:15:45",
                                    "type": "",
                                    "value": "address zone,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4943:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4943:37:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4943:37:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5000:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5005:2:45",
                                        "type": "",
                                        "value": "45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4996:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4996:12:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d5b5d206f666665722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5010:20:45",
                                    "type": "",
                                    "value": "OfferItem[] offer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4989:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4989:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4989:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5051:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5056:2:45",
                                        "type": "",
                                        "value": "63"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5047:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5047:12:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5061:34:45",
                                    "type": "",
                                    "value": "ConsiderationItem[] consideratio"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5040:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5040:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5040:56:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5116:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5121:2:45",
                                        "type": "",
                                        "value": "95"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5112:12:45"
                                  },
                                  {
                                    "hexValue": "6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5126:4:45",
                                    "type": "",
                                    "value": "n,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5105:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5105:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5105:26:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5151:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5156:2:45",
                                        "type": "",
                                        "value": "97"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5147:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5147:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206f72646572547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5161:18:45",
                                    "type": "",
                                    "value": "uint8 orderType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5140:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5140:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5140:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5200:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5205:3:45",
                                        "type": "",
                                        "value": "113"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5196:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5196:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620737461727454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5211:20:45",
                                    "type": "",
                                    "value": "uint256 startTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5189:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5189:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5189:43:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5252:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5257:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5248:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5248:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e6454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5263:18:45",
                                    "type": "",
                                    "value": "uint256 endTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5241:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5241:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5241:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5302:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5307:3:45",
                                        "type": "",
                                        "value": "147"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5298:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5298:13:45"
                                  },
                                  {
                                    "hexValue": "62797465733332207a6f6e65486173682c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5313:19:45",
                                    "type": "",
                                    "value": "bytes32 zoneHash,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5291:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5291:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5291:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5353:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5358:3:45",
                                        "type": "",
                                        "value": "164"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5349:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5349:13:45"
                                  },
                                  {
                                    "hexValue": "75696e743235362073616c742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5364:15:45",
                                    "type": "",
                                    "value": "uint256 salt,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5342:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5342:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5342:38:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5389:108:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "5485:3:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5490:3:45",
                                                "type": "",
                                                "value": "177"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5481:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5481:13:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_stringliteral_cfcd",
                                          "nodeType": "YulIdentifier",
                                          "src": "5451:29:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5451:44:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_stringliteral",
                                      "nodeType": "YulIdentifier",
                                      "src": "5426:24:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5426:70:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_stringliteral_59d7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5396:29:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5396:101:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5389:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4828:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4836:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3440:2063:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6205:306:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6222:3:45"
                                  },
                                  {
                                    "hexValue": "454950373132446f6d61696e28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6227:15:45",
                                    "type": "",
                                    "value": "EIP712Domain("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6215:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6215:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6215:28:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6263:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6268:2:45",
                                        "type": "",
                                        "value": "13"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6259:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6259:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e67206e616d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6273:14:45",
                                    "type": "",
                                    "value": "string name,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6252:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6252:36:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6252:36:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6308:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6313:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6304:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6304:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e672076657273696f6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6318:17:45",
                                    "type": "",
                                    "value": "string version,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6297:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6297:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6297:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6356:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6361:2:45",
                                        "type": "",
                                        "value": "40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6352:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6352:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620636861696e49642c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6366:18:45",
                                    "type": "",
                                    "value": "uint256 chainId,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6345:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6345:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6345:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6405:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6410:2:45",
                                        "type": "",
                                        "value": "56"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6401:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6401:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320766572696679696e67436f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6415:27:45",
                                    "type": "",
                                    "value": "address verifyingContract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6394:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6394:49:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6394:49:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6463:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6468:2:45",
                                        "type": "",
                                        "value": "81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6459:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6459:12:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6473:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6452:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6452:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6452:25:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6486:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6497:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6502:2:45",
                                    "type": "",
                                    "value": "82"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6493:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6493:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6486:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6189:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6197:3:45",
                            "type": ""
                          }
                        ],
                        "src": "5508:1003:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6565:287:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6575:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6595:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6589:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6589:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6579:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6610:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6619:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6614:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6681:76:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6706:3:45"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "6711:1:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6702:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6702:11:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6729:5:45"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6736:1:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6725:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6725:13:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "6740:4:45",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6721:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6721:24:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6715:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6715:31:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6695:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6695:52:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6695:52:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6640:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6643:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6637:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6637:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6651:21:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6653:17:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6662:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6665:4:45",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6658:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6658:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6653:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6633:3:45",
                                "statements": []
                              },
                              "src": "6629:128:45"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6783:31:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6796:3:45"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "6801:6:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6792:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6792:16:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6810:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6785:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6785:27:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6785:27:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6772:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6775:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6769:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6769:13:45"
                              },
                              "nodeType": "YulIf",
                              "src": "6766:48:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6823:23:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6834:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6839:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6830:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6830:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6823:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6542:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6549:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6557:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6516:336:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7086:104:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7096:88:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7120:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7145:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "7170:6:45"
                                          },
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "7178:3:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_bytes",
                                          "nodeType": "YulIdentifier",
                                          "src": "7153:16:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7153:29:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "7128:16:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7128:55:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "7103:16:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7103:81:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7096:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7046:3:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7051:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7059:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7067:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7078:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6857:333:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7408:276:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7418:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7430:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7441:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7426:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7426:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7418:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7461:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7472:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7454:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7454:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7454:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7499:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7510:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7495:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7495:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7515:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7488:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7488:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7488:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7542:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7553:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7538:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7538:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7558:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7531:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7531:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7531:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7585:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7596:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7581:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7581:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7601:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7574:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7574:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7574:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7628:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7639:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7624:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7624:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7649:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7665:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7670:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "7661:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7661:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7674:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "7657:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7657:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7645:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7645:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7617:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7617:61:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7617:61:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7345:9:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7356:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7364:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7372:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7380:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7388:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7399:4:45",
                            "type": ""
                          }
                        ],
                        "src": "7195:489:45"
                      }
                    ]
                  },
                  "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 abi_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OfferItem(\")\n        mstore(add(pos, 10), \"uint8 itemType,\")\n        mstore(add(pos, 25), \"address token,\")\n        mstore(add(pos, 39), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 68), \"uint256 startAmount,\")\n        mstore(add(pos, 88), \"uint256 endAmount\")\n        mstore(add(pos, 105), \")\")\n        end := add(pos, 106)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"ConsiderationItem(\")\n        mstore(add(pos, 18), \"uint8 itemType,\")\n        mstore(add(pos, 33), \"address token,\")\n        mstore(add(pos, 47), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 76), \"uint256 startAmount,\")\n        mstore(add(pos, 96), \"uint256 endAmount,\")\n        mstore(add(pos, 114), \"address recipient\")\n        mstore(add(pos, 131), \")\")\n        end := add(pos, 132)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral(pos) -> end\n    {\n        mstore(pos, \"uint256 nonce\")\n        end := add(pos, 13)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address zone,\")\n        mstore(add(pos, 45), \"OfferItem[] offer,\")\n        mstore(add(pos, 63), \"ConsiderationItem[] consideratio\")\n        mstore(add(pos, 95), \"n,\")\n        mstore(add(pos, 97), \"uint8 orderType,\")\n        mstore(add(pos, 113), \"uint256 startTime,\")\n        mstore(add(pos, 131), \"uint256 endTime,\")\n        mstore(add(pos, 147), \"bytes32 zoneHash,\")\n        mstore(add(pos, 164), \"uint256 salt,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral(abi_encode_stringliteral_cfcd(add(pos, 177))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value, i), 0x20)))\n        }\n        if gt(i, length) { mstore(add(pos, length), 0) }\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        end := abi_encode_bytes(value2, abi_encode_bytes(value1, abi_encode_bytes(value0, pos)))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}",
                  "id": 45,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101c060405234801561001157600080fd5b506040516106f23803806106f2833981016040819052610030916105a2565b80610039610110565b610120526101005260e05260c081815260a0838152608085815246610140819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610160526001600160a01b03811661018081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010391906105d2565b506101a052506106589050565b6000808080808061014160408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260018152603160f81b90840152519097507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6965060009161024391016909ecccccae492e8cada560b31b81526e1d5a5b9d0e081a5d195b551e5c194b608a1b600a8201526d1859191c995cdcc81d1bdad95b8b60921b60198201527f75696e74323536206964656e7469666965724f7243726974657269612c00000060278201527f75696e74323536207374617274416d6f756e742c0000000000000000000000006044820152701d5a5b9d0c8d4d88195b99105b5bdd5b9d607a1b6058820152602960f81b6069820152606a0190565b60408051601f1981840301815282825271086dedce6d2c8cae4c2e8d2dedc92e8cada560731b60208401526e1d5a5b9d0e081a5d195b551e5c194b608a1b60328401526d1859191c995cdcc81d1bdad95b8b60921b60418401527f75696e74323536206964656e7469666965724f7243726974657269612c000000604f8401527f75696e74323536207374617274416d6f756e742c000000000000000000000000606c840152711d5a5b9d0c8d4d88195b99105b5bdd5b9d0b60721b6080840152701859191c995cdcc81c9958da5c1a595b9d607a1b6092840152602960f81b60a384018190528251808503608401815260a485019093526f09ee4c8cae486dedae0dedccadce8e6560831b60c48501526f1859191c995cdcc81bd999995c995c8b60821b60d48501526c1859191c995cdcc81e9bdb994b609a1b60e48501527113d999995c925d195b56d7481bd999995c8b60721b60f18501527f436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f610103850152611b8b60f21b6101238501526f1d5a5b9d0e081bdc99195c951e5c194b60821b610125850152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b6101358501526f1d5a5b9d0c8d4d88195b99151a5b594b60821b61014785015270189e5d195ccccc881e9bdb9952185cda0b607a1b6101578501526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101688501527f6279746573333220636f6e647569744b65792c000000000000000000000000006101758501526c75696e74323536206e6f6e636560981b6101888501526101958401529250906000906101960160408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b6071830152915060720160408051601f19818403018152908290528051602091820120855186830120855186840120919a509850965061057f9183918591879101610631565b604051602081830303815290604052805190602001209350505050909192939495565b6000602082840312156105b457600080fd5b81516001600160a01b03811681146105cb57600080fd5b9392505050565b600080604083850312156105e557600080fd5b505080516020909101519092909150565b6000815160005b8181101561061757602081850181015186830152016105fd565b81811115610626576000828601525b509290920192915050565b600061064f61064961064384886105f6565b866105f6565b846105f6565b95945050505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051603f6106b360003960005050600050506000505060005050600050506000505060005050600050506000505060005050603f6000f3fe6080604052600080fdfea26469706673582212200b70ca0861f1a9533898b02a92d5f7f4bb869821b149660798fee12576d5d6e964736f6c634300080d0033",
              "opcodes": "PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x6F2 CODESIZE SUB DUP1 PUSH2 0x6F2 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0x5A2 JUMP JUMPDEST DUP1 PUSH2 0x39 PUSH2 0x110 JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH2 0x100 MSTORE PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x160 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x180 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xDF 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 0x103 SWAP2 SWAP1 PUSH2 0x5D2 JUMP JUMPDEST POP PUSH2 0x1A0 MSTORE POP PUSH2 0x658 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x141 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP8 POP PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP7 POP PUSH1 0x0 SWAP2 PUSH2 0x243 SWAP2 ADD PUSH10 0x9ECCCCCAE492E8CADA5 PUSH1 0xB3 SHL DUP2 MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0xA DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x19 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x27 DUP3 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D PUSH1 0x7A SHL PUSH1 0x58 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x69 DUP3 ADD MSTORE PUSH1 0x6A ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE PUSH18 0x86DEDCE6D2C8CAE4C2E8D2DEDC92E8CADA5 PUSH1 0x73 SHL PUSH1 0x20 DUP5 ADD MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0x32 DUP5 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x41 DUP5 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x4F DUP5 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x6C DUP5 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D0B PUSH1 0x72 SHL PUSH1 0x80 DUP5 ADD MSTORE PUSH17 0x1859191C995CDCC81C9958DA5C1A595B9D PUSH1 0x7A SHL PUSH1 0x92 DUP5 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0xA3 DUP5 ADD DUP2 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB PUSH1 0x84 ADD DUP2 MSTORE PUSH1 0xA4 DUP6 ADD SWAP1 SWAP4 MSTORE PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL PUSH1 0xC4 DUP6 ADD MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0xD4 DUP6 ADD MSTORE PUSH13 0x1859191C995CDCC81E9BDB994B PUSH1 0x9A SHL PUSH1 0xE4 DUP6 ADD MSTORE PUSH18 0x13D999995C925D195B56D7481BD999995C8B PUSH1 0x72 SHL PUSH1 0xF1 DUP6 ADD MSTORE PUSH32 0x436F6E73696465726174696F6E4974656D5B5D20636F6E73696465726174696F PUSH2 0x103 DUP6 ADD MSTORE PUSH2 0x1B8B PUSH1 0xF2 SHL PUSH2 0x123 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0E081BDC99195C951E5C194B PUSH1 0x82 SHL PUSH2 0x125 DUP6 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH2 0x135 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH2 0x147 DUP6 ADD MSTORE PUSH17 0x189E5D195CCCCC881E9BDB9952185CDA0B PUSH1 0x7A SHL PUSH2 0x157 DUP6 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x168 DUP6 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x175 DUP6 ADD MSTORE PUSH13 0x75696E74323536206E6F6E6365 PUSH1 0x98 SHL PUSH2 0x188 DUP6 ADD MSTORE PUSH2 0x195 DUP5 ADD MSTORE SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x196 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 DUP6 MLOAD DUP7 DUP4 ADD KECCAK256 DUP6 MLOAD DUP7 DUP5 ADD KECCAK256 SWAP2 SWAP11 POP SWAP9 POP SWAP7 POP PUSH2 0x57F SWAP2 DUP4 SWAP2 DUP6 SWAP2 DUP8 SWAP2 ADD PUSH2 0x631 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP POP POP POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x617 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0x5FD JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x626 JUMPI PUSH1 0x0 DUP3 DUP7 ADD MSTORE JUMPDEST POP SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x64F PUSH2 0x649 PUSH2 0x643 DUP5 DUP9 PUSH2 0x5F6 JUMP JUMPDEST DUP7 PUSH2 0x5F6 JUMP JUMPDEST DUP5 PUSH2 0x5F6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH1 0x3F PUSH2 0x6B3 PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x3F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND PUSH17 0xCA0861F1A9533898B02A92D5F7F4BB8698 0x21 0xB1 0x49 PUSH7 0x798FEE12576D5 0xD6 0xE9 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "408:13461:30:-:0;;;816:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;881:17;1967:19:23;:17;:19::i;:::-;1760:226;;;;;;;;;;;;;;-1:-1:-1;1760:226:23;;;2087:13;2075:25;;;;-1:-1:-1;2761:187:23;;-1:-1:-1;2761:187:23;;;7454:25:45;;;;7495:18;;;7488:34;;;;-1:-1:-1;7538:18:45;;7531:34;;;;7581:18;;;7574:34;2929:4:23;7624:19:45;;;7617:61;2761:187:23;;;;;;;;;;7426:19:45;;2761:187:23;;;2738:220;;;;;2110:44;;-1:-1:-1;;;;;2213:67:23;;;;;;2420:42;;;-1:-1:-1;;;2420:42:23;;;;:40;;:42;;;;;;;;;;;;;2213:67;2420:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2372:100:23;;-1:-1:-1;408:13461:30;;-1:-1:-1;408:13461:30;4735:3021:23;4824:16;;;;;;5140:13;3927:22;;;;;;;;;;;;-1:-1:-1;;;3927:22:23;;;;;3804:152;5140:13;5124:31;;;;;;;5252:10;;;;;;;;;;;-1:-1:-1;;;5252:10:23;;;;5384:264;5124:31;;-1:-1:-1;5242:21:23;;-1:-1:-1;;;5384:264:23;;;-1:-1:-1;;;1486:25:45;;-1:-1:-1;;;1536:2:45;1527:12;;1520:39;-1:-1:-1;;;1584:2:45;1575:12;;1568:38;1636:31;1631:2;1622:12;;1615:53;1698:22;1693:2;1684:12;;1677:44;-1:-1:-1;;;1746:2:45;1737:12;;1730:41;-1:-1:-1;;;1796:3:45;1787:13;;1780:26;1831:3;1822:13;;678:1163;5384:264:23;;;;-1:-1:-1;;5384:264:23;;;;;;;;;-1:-1:-1;;;5384:264:23;5785:310;;2755:33:45;-1:-1:-1;;;2804:12:45;;;2797:39;-1:-1:-1;;;2852:12:45;;;2845:38;2913:31;2899:12;;;2892:53;2975:22;2961:12;;;2954:44;-1:-1:-1;;;3014:12:45;;;3007:42;-1:-1:-1;;;3065:13:45;;;3058:42;-1:-1:-1;;;3116:13:45;;;3109:26;;;5785:310:23;;;;;;;;;3151:13:45;;;5785:310:23;;;-1:-1:-1;;;6260:488:23;;;4854:31:45;-1:-1:-1;;;4901:12:45;;;4894:40;-1:-1:-1;;;4950:12:45;;;4943:37;-1:-1:-1;;;4996:12:45;;;4989:42;5061:34;5047:12;;;5040:56;-1:-1:-1;;;5112:12:45;;;5105:26;-1:-1:-1;;;5147:12:45;;;5140:40;-1:-1:-1;;;5196:13:45;;;5189:43;-1:-1:-1;;;5248:13:45;;;5241:41;-1:-1:-1;;;5298:13:45;;;5291:42;-1:-1:-1;;;5349:13:45;;;5342:38;3252:21;5481:13;;;3240:34;-1:-1:-1;;;3290:12:45;;;3373:28;3417:12;;;624:16;5384:264:23;-1:-1:-1;5785:310:23;-1:-1:-1;;656:11:45;;6260:488:23;;;-1:-1:-1;;6260:488:23;;;;;;;;;;-1:-1:-1;;;6260:488:23;6893:248;;6215:28:45;-1:-1:-1;;;6259:12:45;;;6252:36;-1:-1:-1;;;6304:12:45;;;6297:39;-1:-1:-1;;;6352:12:45;;;6345:40;6415:27;6401:12;;;6394:49;-1:-1:-1;;;6459:12:45;;;6452:25;6260:488:23;-1:-1:-1;6493:12:45;;6893:248:23;;;-1:-1:-1;;6893:248:23;;;;;;;;;;6870:281;;6893:248;6870:281;;;;7261:30;;;;;;7409:38;;;;;;6870:281;;-1:-1:-1;7261:30:23;-1:-1:-1;7409:38:23;-1:-1:-1;7577:162:23;;7611:32;;7419:27;;7271:19;;7577:162;;:::i;:::-;;;;;;;;;;;;;7554:195;;;;;;7538:211;;5051:2705;;;4735:3021;;;;;;:::o;14:290:45:-;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:45;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:45:o;309:245::-;388:6;396;449:2;437:9;428:7;424:23;420:32;417:52;;;465:1;462;455:12;417:52;-1:-1:-1;;488:16:45;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:45:o;6516:336::-;6557:3;6595:5;6589:12;6619:1;6629:128;6643:6;6640:1;6637:13;6629:128;;;6740:4;6725:13;;;6721:24;;6715:31;6702:11;;;6695:52;6658:12;6629:128;;;6775:6;6772:1;6769:13;6766:48;;;6810:1;6801:6;6796:3;6792:16;6785:27;6766:48;-1:-1:-1;6830:16:45;;;;;6516:336;-1:-1:-1;;6516:336:45:o;6857:333::-;7078:3;7103:81;7128:55;7153:29;7178:3;7170:6;7153:29;:::i;:::-;7145:6;7128:55;:::i;:::-;7120:6;7103:81;:::i;:::-;7096:88;6857:333;-1:-1:-1;;;;;6857:333:45:o;7195:489::-;408:13461:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea26469706673582212200b70ca0861f1a9533898b02a92d5f7f4bb869821b149660798fee12576d5d6e964736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SIGNEXTEND PUSH17 0xCA0861F1A9533898B02A92D5F7F4BB8698 0x21 0xB1 0x49 PUSH7 0x798FEE12576D5 0xD6 0xE9 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "408:13461:30:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"NonceIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fulfiller\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct SpentItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct ReceivedItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Derive and set hashes, reference chainId, and associated domain      separator during deployment.\",\"params\":{\"conduitController\":\"A contract that deploys conduits, or proxies                          that may optionally be used to transfer approved                          ERC20/721/1155 tokens.\"}}},\"title\":\"GettersAndDerivers\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"ConsiderationInternal contains pure and internal view functions         related to getting or deriving various values.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/GettersAndDerivers.sol\":\"GettersAndDerivers\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/ConduitControllerInterface.sol\":{\"keccak256\":\"0x86b7ceb6ff7ce653fa7d0d79eeb8b96ec57eedd35f8c87e9838dde6c23f317bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://453fa0365834a50956e513d306371bfb7019124150bf9afd1699599fe6f7852c\",\"dweb:/ipfs/QmXiqKzGdj2A4TsuHtFLTgdLPRFwasbWWibNBRP5cikJod\"]},\"seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"keccak256\":\"0xf0d0eda6b47217d0e7c2862fdd5d7857cb828f9e0fc52e2c37c6d2b454832a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://374d19e0d9e5ce76e10dce8bada5ee9d1adcd54898c0cba9099d0dd72a5bf996\",\"dweb:/ipfs/QmS49qk49jmkPuMzLbbop5s7eJxbfRzKokQXB2QJjfVPHT\"]},\"seaport/contracts/lib/ConsiderationBase.sol\":{\"keccak256\":\"0x1015a0bb6fff27278ceec2f76cbf0c775bfb3e8d03cafe8d3549e252e9563ba2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f7d3b48069268df59a77293a7cdc232df35c5b1c8b1974b422a850bedb875f6\",\"dweb:/ipfs/QmSMMnXqsUEWuC1u7BF6coTXK63BXaQYvWqX69doaatKw8\"]},\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]},\"seaport/contracts/lib/GettersAndDerivers.sol\":{\"keccak256\":\"0xb9d0cf2a84567b6b70e1ddd9e3450dddf8139e5396bcac24c42f46db16228efa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99767431817fd6b157bc199784ca3f3bc2cf024a332ae8e2a5eb7e3db0f2b47d\",\"dweb:/ipfs/QmPWaJet2TPiWc7xEo7QqVpctaLvXPZFep8R8Vi4ZRzzCw\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/LowLevelHelpers.sol": {
        "LowLevelHelpers": {
          "abi": [],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220ef6e1d8ba10ac8f9d45298564fbd3af9a237fdd7fa48f8c3217ee38b5552184564736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF PUSH15 0x1D8BA10AC8F9D45298564FBD3AF9A2 CALLDATACOPY REVERT 0xD7 STATICCALL BASEFEE 0xF8 0xC3 0x21 PUSH31 0xE38B5552184564736F6C634300080D00330000000000000000000000000000 ",
              "sourceMap": "245:4386:31:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea2646970667358221220ef6e1d8ba10ac8f9d45298564fbd3af9a237fdd7fa48f8c3217ee38b5552184564736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xEF PUSH15 0x1D8BA10AC8F9D45298564FBD3AF9A2 CALLDATACOPY REVERT 0xD7 STATICCALL BASEFEE 0xF8 0xC3 0x21 PUSH31 0xE38B5552184564736F6C634300080D00330000000000000000000000000000 ",
              "sourceMap": "245:4386:31:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"author\":\"0age\",\"kind\":\"dev\",\"methods\":{},\"title\":\"LowLevelHelpers\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"LowLevelHelpers contains logic for performing various low-level         operations.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/LowLevelHelpers.sol\":\"LowLevelHelpers\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/LowLevelHelpers.sol\":{\"keccak256\":\"0x83085de63b870cfb3940c68d96a40b2cf9afb7280c1afa3034d1c55c80444a94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9ba49a7318a517e836811dfc67989e9f14959a7cd55220853af6b6273309543\",\"dweb:/ipfs/QmUAQr4SReMunUvwBxKPdd8XLPy5GKMEEhPwpD32UYn3kx\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/NonceManager.sol": {
        "NonceManager": {
          "abi": [
            {
              "inputs": [],
              "name": "BadFraction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "orderIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "considerationIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "shortfallAmount",
                  "type": "uint256"
                }
              ],
              "name": "ConsiderationNotMet",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "EtherTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InsufficientEtherSupplied",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidBasicOrderParameterEncoding",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidCallToConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidCanceller",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidConduit",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "InvalidMsgValue",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidTime",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingOriginalConsiderationItems",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoReentrantCalls",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoSpecifiedOrdersAvailable",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderAlreadyFilled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderIsCancelled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderPartiallyFilled",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "PartialFillsNotEnabledForOrder",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                }
              ],
              "name": "NonceIncremented",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderCancelled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fulfiller",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct SpentItem[]",
                  "name": "offer",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address payable",
                      "name": "recipient",
                      "type": "address"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct ReceivedItem[]",
                  "name": "consideration",
                  "type": "tuple[]"
                }
              ],
              "name": "OrderFulfilled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderValidated",
              "type": "event"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_7733": {
                  "entryPoint": null,
                  "id": 7733,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b506001600055603f8060226000396000f3fe6080604052600080fdfea2646970667358221220f2aa71f3592812fde20853df7a1ed9bbbc6eac869718d0768cffdce5ccbafaca64736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x3F DUP1 PUSH1 0x22 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLCODE 0xAA PUSH18 0xF3592812FDE20853DF7A1ED9BBBC6EAC8697 XOR 0xD0 PUSH23 0x8CFFDCE5CCBAFACA64736F6C634300080D003300000000 ",
              "sourceMap": "422:1399:32:-:0;;;;;;;;;;;;-1:-1:-1;2287:1:24;657:16:36;:31;422:1399:32;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea2646970667358221220f2aa71f3592812fde20853df7a1ed9bbbc6eac869718d0768cffdce5ccbafaca64736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLCODE 0xAA PUSH18 0xF3592812FDE20853DF7A1ED9BBBC6EAC8697 XOR 0xD0 PUSH23 0x8CFFDCE5CCBAFACA64736F6C634300080D003300000000 ",
              "sourceMap": "422:1399:32:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"NonceIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fulfiller\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct SpentItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct ReceivedItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"NonceManager\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"NonceManager contains a storage mapping and related functionality         for retrieving and incrementing a per-offerer nonce.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/NonceManager.sol\":\"NonceManager\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"keccak256\":\"0xf0d0eda6b47217d0e7c2862fdd5d7857cb828f9e0fc52e2c37c6d2b454832a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://374d19e0d9e5ce76e10dce8bada5ee9d1adcd54898c0cba9099d0dd72a5bf996\",\"dweb:/ipfs/QmS49qk49jmkPuMzLbbop5s7eJxbfRzKokQXB2QJjfVPHT\"]},\"seaport/contracts/interfaces/ReentrancyErrors.sol\":{\"keccak256\":\"0x9ab27fa5a68f55ad89072ea213c6f12979ae469041ca473d81f800dbdbe9bb48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0cc617da7254d981fd5970d16acc2a6f6fe2fe0bc3e2d0976f7c01a4893430ec\",\"dweb:/ipfs/QmbhqKxfhrfPAjp99LVspxopQG7Mb9L9xdSa38ujCxmvTJ\"]},\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]},\"seaport/contracts/lib/NonceManager.sol\":{\"keccak256\":\"0xe8b6e40830e216912ce483e867151e84cc0b290404220e1ed5fbb69821161f8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4ef49cbc0b5385b64c1f8c9d5cf572dff35ec291970714ef11520de2c01ab9c\",\"dweb:/ipfs/QmfJoNCtAHUYsidmUaiMBP8wMzUYCtg33G8nUqyME5AftL\"]},\"seaport/contracts/lib/ReentrancyGuard.sol\":{\"keccak256\":\"0xec219fb657ce8400835d8d1ff87716247c5fdde51bca31fddf19415abad773db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eca390f7b8fbccc703ad22edd4f35fa896de59912f21d9471d51ef83b961d3c5\",\"dweb:/ipfs/QmXyxcfzgD4SaTtgqGjUjxK4tb76NiPcooMkL9c11yhm2L\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/OrderCombiner.sol": {
        "OrderCombiner": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduitController",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "BadContractSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "BadFraction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BadReturnValueFromERC20OnTransfer",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                }
              ],
              "name": "BadSignatureV",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ConsiderationCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "orderIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "considerationIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "shortfallAmount",
                  "type": "uint256"
                }
              ],
              "name": "ConsiderationNotMet",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "CriteriaNotEnabledForItem",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "identifiers",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "ERC1155BatchTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "EtherTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InexactFraction",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InsufficientEtherSupplied",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidBasicOrderParameterEncoding",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidCallToConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidCanceller",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidERC721TransferAmount",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidFulfillmentComponentData",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "InvalidMsgValue",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidProof",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "InvalidRestrictedOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSigner",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidTime",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MismatchedFulfillmentOfferAndConsiderationComponents",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "enum Side",
                  "name": "side",
                  "type": "uint8"
                }
              ],
              "name": "MissingFulfillmentComponentOnAggregation",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingItemAmount",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingOriginalConsiderationItems",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "NoContract",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoReentrantCalls",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoSpecifiedOrdersAvailable",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OfferAndConsiderationRequiredOnFulfillment",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OfferCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderAlreadyFilled",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OrderCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderIsCancelled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderPartiallyFilled",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "PartialFillsNotEnabledForOrder",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "identifier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnresolvedConsiderationCriteria",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnresolvedOfferCriteria",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                }
              ],
              "name": "NonceIncremented",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderCancelled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fulfiller",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct SpentItem[]",
                  "name": "offer",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address payable",
                      "name": "recipient",
                      "type": "address"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct ReceivedItem[]",
                  "name": "consideration",
                  "type": "tuple[]"
                }
              ],
              "name": "OrderFulfilled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderValidated",
              "type": "event"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_2519": {
                  "entryPoint": null,
                  "id": 2519,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_2625": {
                  "entryPoint": null,
                  "id": 2625,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_3225": {
                  "entryPoint": null,
                  "id": 3225,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_4482": {
                  "entryPoint": null,
                  "id": 4482,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_5345": {
                  "entryPoint": null,
                  "id": 5345,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_5599": {
                  "entryPoint": null,
                  "id": 5599,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_6579": {
                  "entryPoint": null,
                  "id": 6579,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_7098": {
                  "entryPoint": null,
                  "id": 7098,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_7733": {
                  "entryPoint": null,
                  "id": 7733,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_8248": {
                  "entryPoint": null,
                  "id": 8248,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_deriveDomainSeparator_3247": {
                  "entryPoint": null,
                  "id": 3247,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_deriveTypehashes_3383": {
                  "entryPoint": 291,
                  "id": 3383,
                  "parameterSlots": 0,
                  "returnSlots": 6
                },
                "@_nameString_3264": {
                  "entryPoint": null,
                  "id": 3264,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1461,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_bytes32_fromMemory": {
                  "entryPoint": 1509,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_bytes": {
                  "entryPoint": 1545,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_59d7": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_cfcd": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1604,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7686:45",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:45",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:45",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:45",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:45"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:45",
                            "type": ""
                          }
                        ],
                        "src": "14:290:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "407:147:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "453:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "462:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "465:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "455:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "455:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "455:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "428:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "437:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "424:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "424:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "449:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "420:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "420:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "417:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "478:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "494:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "488:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "488:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "478:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "513:35:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "533:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "544:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "529:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "529:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:25:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "365:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "376:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "388:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "396:6:45",
                            "type": ""
                          }
                        ],
                        "src": "309:245:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "614:59:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "631:3:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "636:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "624:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "624:16:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "624:16:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "649:18:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "660:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "665:1:45",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "656:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "656:11:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "649:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_59d7",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "598:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "606:3:45",
                            "type": ""
                          }
                        ],
                        "src": "559:114:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1476:365:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1493:3:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1498:12:45",
                                    "type": "",
                                    "value": "OfferItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1486:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1486:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1486:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1531:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1536:2:45",
                                        "type": "",
                                        "value": "10"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1527:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1527:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1541:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1520:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1520:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1520:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1579:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1584:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1575:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1575:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1589:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1568:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1568:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1568:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1626:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1631:2:45",
                                        "type": "",
                                        "value": "39"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1622:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1622:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1636:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1615:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1615:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1615:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1688:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1693:2:45",
                                        "type": "",
                                        "value": "68"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1684:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1684:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1698:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1677:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1677:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1677:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1741:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1746:2:45",
                                        "type": "",
                                        "value": "88"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1737:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1737:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1751:19:45",
                                    "type": "",
                                    "value": "uint256 endAmount"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1730:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1730:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1730:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1791:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1796:3:45",
                                        "type": "",
                                        "value": "105"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1787:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1787:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1802:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1780:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1780:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1780:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1815:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1826:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1831:3:45",
                                    "type": "",
                                    "value": "106"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1822:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1822:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1815:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1460:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1468:3:45",
                            "type": ""
                          }
                        ],
                        "src": "678:1163:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2745:425:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2762:3:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2767:20:45",
                                    "type": "",
                                    "value": "ConsiderationItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2755:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2755:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2755:33:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2808:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2813:2:45",
                                        "type": "",
                                        "value": "18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2804:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2804:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2818:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2797:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2797:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2797:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2856:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2861:2:45",
                                        "type": "",
                                        "value": "33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2852:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2852:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2866:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2845:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2845:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2845:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2903:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2908:2:45",
                                        "type": "",
                                        "value": "47"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2899:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2899:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2913:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2892:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2892:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2892:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2965:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2970:2:45",
                                        "type": "",
                                        "value": "76"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2961:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2961:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2975:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2954:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2954:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2954:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3018:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3023:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3014:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3014:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3028:20:45",
                                    "type": "",
                                    "value": "uint256 endAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3007:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3007:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3007:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3069:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3074:3:45",
                                        "type": "",
                                        "value": "114"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3065:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3065:13:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320726563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3080:19:45",
                                    "type": "",
                                    "value": "address recipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3058:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3058:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3058:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3120:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3125:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3116:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3116:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3131:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3109:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3109:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3109:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3144:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3155:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3160:3:45",
                                    "type": "",
                                    "value": "132"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3151:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3151:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3144:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2729:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2737:3:45",
                            "type": ""
                          }
                        ],
                        "src": "1846:1324:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3230:78:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3247:3:45"
                                  },
                                  {
                                    "hexValue": "6279746573333220636f6e647569744b65792c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3252:21:45",
                                    "type": "",
                                    "value": "bytes32 conduitKey,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3240:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3240:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3240:34:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3283:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3294:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3299:2:45",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3290:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3290:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_cfcd",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3214:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3222:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3175:133:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3363:72:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3380:3:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206e6f6e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3385:15:45",
                                    "type": "",
                                    "value": "uint256 nonce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3373:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3373:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3373:28:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3410:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3421:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3426:2:45",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3417:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3417:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3410:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3347:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3355:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3313:122:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4844:659:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4861:3:45"
                                  },
                                  {
                                    "hexValue": "4f72646572436f6d706f6e656e747328",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4866:18:45",
                                    "type": "",
                                    "value": "OrderComponents("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4854:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4854:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4854:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4905:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4910:2:45",
                                        "type": "",
                                        "value": "16"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4901:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4901:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373206f6666657265722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4915:18:45",
                                    "type": "",
                                    "value": "address offerer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4894:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4894:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4894:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4954:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4959:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4950:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4950:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373207a6f6e652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4964:15:45",
                                    "type": "",
                                    "value": "address zone,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4943:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4943:37:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4943:37:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5000:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5005:2:45",
                                        "type": "",
                                        "value": "45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4996:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4996:12:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d5b5d206f666665722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5010:20:45",
                                    "type": "",
                                    "value": "OfferItem[] offer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4989:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4989:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4989:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5051:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5056:2:45",
                                        "type": "",
                                        "value": "63"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5047:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5047:12:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5061:34:45",
                                    "type": "",
                                    "value": "ConsiderationItem[] consideratio"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5040:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5040:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5040:56:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5116:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5121:2:45",
                                        "type": "",
                                        "value": "95"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5112:12:45"
                                  },
                                  {
                                    "hexValue": "6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5126:4:45",
                                    "type": "",
                                    "value": "n,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5105:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5105:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5105:26:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5151:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5156:2:45",
                                        "type": "",
                                        "value": "97"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5147:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5147:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206f72646572547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5161:18:45",
                                    "type": "",
                                    "value": "uint8 orderType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5140:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5140:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5140:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5200:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5205:3:45",
                                        "type": "",
                                        "value": "113"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5196:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5196:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620737461727454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5211:20:45",
                                    "type": "",
                                    "value": "uint256 startTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5189:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5189:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5189:43:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5252:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5257:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5248:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5248:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e6454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5263:18:45",
                                    "type": "",
                                    "value": "uint256 endTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5241:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5241:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5241:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5302:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5307:3:45",
                                        "type": "",
                                        "value": "147"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5298:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5298:13:45"
                                  },
                                  {
                                    "hexValue": "62797465733332207a6f6e65486173682c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5313:19:45",
                                    "type": "",
                                    "value": "bytes32 zoneHash,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5291:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5291:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5291:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5353:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5358:3:45",
                                        "type": "",
                                        "value": "164"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5349:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5349:13:45"
                                  },
                                  {
                                    "hexValue": "75696e743235362073616c742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5364:15:45",
                                    "type": "",
                                    "value": "uint256 salt,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5342:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5342:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5342:38:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5389:108:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "5485:3:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5490:3:45",
                                                "type": "",
                                                "value": "177"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5481:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5481:13:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_stringliteral_cfcd",
                                          "nodeType": "YulIdentifier",
                                          "src": "5451:29:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5451:44:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_stringliteral",
                                      "nodeType": "YulIdentifier",
                                      "src": "5426:24:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5426:70:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_stringliteral_59d7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5396:29:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5396:101:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5389:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4828:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4836:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3440:2063:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6205:306:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6222:3:45"
                                  },
                                  {
                                    "hexValue": "454950373132446f6d61696e28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6227:15:45",
                                    "type": "",
                                    "value": "EIP712Domain("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6215:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6215:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6215:28:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6263:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6268:2:45",
                                        "type": "",
                                        "value": "13"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6259:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6259:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e67206e616d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6273:14:45",
                                    "type": "",
                                    "value": "string name,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6252:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6252:36:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6252:36:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6308:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6313:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6304:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6304:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e672076657273696f6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6318:17:45",
                                    "type": "",
                                    "value": "string version,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6297:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6297:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6297:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6356:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6361:2:45",
                                        "type": "",
                                        "value": "40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6352:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6352:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620636861696e49642c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6366:18:45",
                                    "type": "",
                                    "value": "uint256 chainId,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6345:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6345:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6345:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6405:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6410:2:45",
                                        "type": "",
                                        "value": "56"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6401:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6401:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320766572696679696e67436f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6415:27:45",
                                    "type": "",
                                    "value": "address verifyingContract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6394:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6394:49:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6394:49:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6463:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6468:2:45",
                                        "type": "",
                                        "value": "81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6459:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6459:12:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6473:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6452:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6452:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6452:25:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6486:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6497:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6502:2:45",
                                    "type": "",
                                    "value": "82"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6493:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6493:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6486:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6189:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6197:3:45",
                            "type": ""
                          }
                        ],
                        "src": "5508:1003:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6565:287:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6575:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6595:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6589:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6589:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6579:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6610:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6619:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6614:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6681:76:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6706:3:45"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "6711:1:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6702:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6702:11:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6729:5:45"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6736:1:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6725:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6725:13:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "6740:4:45",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6721:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6721:24:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6715:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6715:31:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6695:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6695:52:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6695:52:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6640:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6643:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6637:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6637:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6651:21:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6653:17:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6662:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6665:4:45",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6658:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6658:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6653:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6633:3:45",
                                "statements": []
                              },
                              "src": "6629:128:45"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6783:31:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6796:3:45"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "6801:6:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6792:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6792:16:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6810:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6785:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6785:27:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6785:27:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6772:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6775:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6769:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6769:13:45"
                              },
                              "nodeType": "YulIf",
                              "src": "6766:48:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6823:23:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6834:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6839:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6830:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6830:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6823:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6542:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6549:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6557:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6516:336:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7086:104:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7096:88:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7120:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7145:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "7170:6:45"
                                          },
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "7178:3:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_bytes",
                                          "nodeType": "YulIdentifier",
                                          "src": "7153:16:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7153:29:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "7128:16:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7128:55:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "7103:16:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7103:81:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7096:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7046:3:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7051:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7059:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7067:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7078:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6857:333:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7408:276:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7418:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7430:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7441:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7426:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7426:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7418:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7461:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7472:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7454:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7454:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7454:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7499:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7510:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7495:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7495:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7515:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7488:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7488:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7488:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7542:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7553:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7538:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7538:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7558:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7531:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7531:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7531:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7585:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7596:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7581:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7581:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7601:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7574:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7574:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7574:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7628:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7639:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7624:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7624:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7649:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7665:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7670:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "7661:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7661:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7674:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "7657:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7657:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7645:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7645:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7617:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7617:61:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7617:61:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7345:9:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7356:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7364:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7372:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7380:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7388:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7399:4:45",
                            "type": ""
                          }
                        ],
                        "src": "7195:489:45"
                      }
                    ]
                  },
                  "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 abi_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OfferItem(\")\n        mstore(add(pos, 10), \"uint8 itemType,\")\n        mstore(add(pos, 25), \"address token,\")\n        mstore(add(pos, 39), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 68), \"uint256 startAmount,\")\n        mstore(add(pos, 88), \"uint256 endAmount\")\n        mstore(add(pos, 105), \")\")\n        end := add(pos, 106)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"ConsiderationItem(\")\n        mstore(add(pos, 18), \"uint8 itemType,\")\n        mstore(add(pos, 33), \"address token,\")\n        mstore(add(pos, 47), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 76), \"uint256 startAmount,\")\n        mstore(add(pos, 96), \"uint256 endAmount,\")\n        mstore(add(pos, 114), \"address recipient\")\n        mstore(add(pos, 131), \")\")\n        end := add(pos, 132)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral(pos) -> end\n    {\n        mstore(pos, \"uint256 nonce\")\n        end := add(pos, 13)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address zone,\")\n        mstore(add(pos, 45), \"OfferItem[] offer,\")\n        mstore(add(pos, 63), \"ConsiderationItem[] consideratio\")\n        mstore(add(pos, 95), \"n,\")\n        mstore(add(pos, 97), \"uint8 orderType,\")\n        mstore(add(pos, 113), \"uint256 startTime,\")\n        mstore(add(pos, 131), \"uint256 endTime,\")\n        mstore(add(pos, 147), \"bytes32 zoneHash,\")\n        mstore(add(pos, 164), \"uint256 salt,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral(abi_encode_stringliteral_cfcd(add(pos, 177))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value, i), 0x20)))\n        }\n        if gt(i, length) { mstore(add(pos, length), 0) }\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        end := abi_encode_bytes(value2, abi_encode_bytes(value1, abi_encode_bytes(value0, pos)))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}",
                  "id": 45,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101c060405234801561001157600080fd5b50604051610705380380610705833981016040819052610030916105b5565b8080808080808080610040610123565b610120526101005260e05260c081815260a0838152608085815246610140819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610160526001600160a01b03811661018081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010a91906105e5565b506101a052505060016000555061066b95505050505050565b6000808080808061015460408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260018152603160f81b90840152519097507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6965060009161025691016909ecccccae492e8cada560b31b81526e1d5a5b9d0e081a5d195b551e5c194b608a1b600a8201526d1859191c995cdcc81d1bdad95b8b60921b60198201527f75696e74323536206964656e7469666965724f7243726974657269612c00000060278201527f75696e74323536207374617274416d6f756e742c0000000000000000000000006044820152701d5a5b9d0c8d4d88195b99105b5bdd5b9d607a1b6058820152602960f81b6069820152606a0190565b60408051601f1981840301815282825271086dedce6d2c8cae4c2e8d2dedc92e8cada560731b60208401526e1d5a5b9d0e081a5d195b551e5c194b608a1b60328401526d1859191c995cdcc81d1bdad95b8b60921b60418401527f75696e74323536206964656e7469666965724f7243726974657269612c000000604f8401527f75696e74323536207374617274416d6f756e742c000000000000000000000000606c840152711d5a5b9d0c8d4d88195b99105b5bdd5b9d0b60721b6080840152701859191c995cdcc81c9958da5c1a595b9d607a1b6092840152602960f81b60a384018190528251808503608401815260a485019093526f09ee4c8cae486dedae0dedccadce8e6560831b60c48501526f1859191c995cdcc81bd999995c995c8b60821b60d48501526c1859191c995cdcc81e9bdb994b609a1b60e48501527113d999995c925d195b56d7481bd999995c8b60721b60f18501527f436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f610103850152611b8b60f21b6101238501526f1d5a5b9d0e081bdc99195c951e5c194b60821b610125850152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b6101358501526f1d5a5b9d0c8d4d88195b99151a5b594b60821b61014785015270189e5d195ccccc881e9bdb9952185cda0b607a1b6101578501526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101688501527f6279746573333220636f6e647569744b65792c000000000000000000000000006101758501526c75696e74323536206e6f6e636560981b6101888501526101958401529250906000906101960160408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b6071830152915060720160408051601f19818403018152908290528051602091820120855186830120855186840120919a50985096506105929183918591879101610644565b604051602081830303815290604052805190602001209350505050909192939495565b6000602082840312156105c757600080fd5b81516001600160a01b03811681146105de57600080fd5b9392505050565b600080604083850312156105f857600080fd5b505080516020909101519092909150565b6000815160005b8181101561062a5760208185018101518683015201610610565b81811115610639576000828601525b509290920192915050565b600061066261065c6106568488610609565b86610609565b84610609565b95945050505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051603f6106c660003960005050600050506000505060005050600050506000505060005050600050506000505060005050603f6000f3fe6080604052600080fdfea264697066735822122065e983a77a0aa340f62c539241362638992c45283101b473e03887a2bcb0eca264736f6c634300080d0033",
              "opcodes": "PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x705 CODESIZE SUB DUP1 PUSH2 0x705 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0x5B5 JUMP JUMPDEST DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x40 PUSH2 0x123 JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH2 0x100 MSTORE PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x160 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x180 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE6 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 0x10A SWAP2 SWAP1 PUSH2 0x5E5 JUMP JUMPDEST POP PUSH2 0x1A0 MSTORE POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP PUSH2 0x66B SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x154 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP8 POP PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP7 POP PUSH1 0x0 SWAP2 PUSH2 0x256 SWAP2 ADD PUSH10 0x9ECCCCCAE492E8CADA5 PUSH1 0xB3 SHL DUP2 MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0xA DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x19 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x27 DUP3 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D PUSH1 0x7A SHL PUSH1 0x58 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x69 DUP3 ADD MSTORE PUSH1 0x6A ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE PUSH18 0x86DEDCE6D2C8CAE4C2E8D2DEDC92E8CADA5 PUSH1 0x73 SHL PUSH1 0x20 DUP5 ADD MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0x32 DUP5 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x41 DUP5 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x4F DUP5 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x6C DUP5 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D0B PUSH1 0x72 SHL PUSH1 0x80 DUP5 ADD MSTORE PUSH17 0x1859191C995CDCC81C9958DA5C1A595B9D PUSH1 0x7A SHL PUSH1 0x92 DUP5 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0xA3 DUP5 ADD DUP2 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB PUSH1 0x84 ADD DUP2 MSTORE PUSH1 0xA4 DUP6 ADD SWAP1 SWAP4 MSTORE PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL PUSH1 0xC4 DUP6 ADD MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0xD4 DUP6 ADD MSTORE PUSH13 0x1859191C995CDCC81E9BDB994B PUSH1 0x9A SHL PUSH1 0xE4 DUP6 ADD MSTORE PUSH18 0x13D999995C925D195B56D7481BD999995C8B PUSH1 0x72 SHL PUSH1 0xF1 DUP6 ADD MSTORE PUSH32 0x436F6E73696465726174696F6E4974656D5B5D20636F6E73696465726174696F PUSH2 0x103 DUP6 ADD MSTORE PUSH2 0x1B8B PUSH1 0xF2 SHL PUSH2 0x123 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0E081BDC99195C951E5C194B PUSH1 0x82 SHL PUSH2 0x125 DUP6 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH2 0x135 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH2 0x147 DUP6 ADD MSTORE PUSH17 0x189E5D195CCCCC881E9BDB9952185CDA0B PUSH1 0x7A SHL PUSH2 0x157 DUP6 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x168 DUP6 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x175 DUP6 ADD MSTORE PUSH13 0x75696E74323536206E6F6E6365 PUSH1 0x98 SHL PUSH2 0x188 DUP6 ADD MSTORE PUSH2 0x195 DUP5 ADD MSTORE SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x196 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 DUP6 MLOAD DUP7 DUP4 ADD KECCAK256 DUP6 MLOAD DUP7 DUP5 ADD KECCAK256 SWAP2 SWAP11 POP SWAP9 POP SWAP7 POP PUSH2 0x592 SWAP2 DUP4 SWAP2 DUP6 SWAP2 DUP8 SWAP2 ADD PUSH2 0x644 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP POP POP POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x62A JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0x610 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x639 JUMPI PUSH1 0x0 DUP3 DUP7 ADD MSTORE JUMPDEST POP SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x662 PUSH2 0x65C PUSH2 0x656 DUP5 DUP9 PUSH2 0x609 JUMP JUMPDEST DUP7 PUSH2 0x609 JUMP JUMPDEST DUP5 PUSH2 0x609 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH1 0x3F PUSH2 0x6C6 PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x3F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH6 0xE983A77A0AA3 BLOCKHASH 0xF6 0x2C MSTORE8 SWAP3 COINBASE CALLDATASIZE 0x26 CODESIZE SWAP10 0x2C GASLIMIT 0x28 BALANCE ADD 0xB4 PUSH20 0xE03887A2BCB0ECA264736F6C634300080D003300 ",
              "sourceMap": "813:35985:33:-:0;;;1233:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1287:17;;;;;;;;1967:19:23;:17;:19::i;:::-;1760:226;;;;;;;;;;;;;;-1:-1:-1;1760:226:23;;;2087:13;2075:25;;;;-1:-1:-1;2761:187:23;;-1:-1:-1;2761:187:23;;;7454:25:45;;;;7495:18;;;7488:34;;;;-1:-1:-1;7538:18:45;;7531:34;;;;7581:18;;;7574:34;2929:4:23;7624:19:45;;;7617:61;2761:187:23;;;;;;;;;;7426:19:45;;2761:187:23;;;2738:220;;;;;2110:44;;-1:-1:-1;;;;;2213:67:23;;;;;;2420:42;;;-1:-1:-1;;;2420:42:23;;;;:40;;:42;;;;;;;;;;;;;2213:67;2420:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2372:100:23;;-1:-1:-1;;2287:1:24;657:16:36;:31;-1:-1:-1;813:35985:33;;-1:-1:-1;;;;;;813:35985:33;4735:3021:23;4824:16;;;;;;5140:13;3927:22;;;;;;;;;;;;-1:-1:-1;;;3927:22:23;;;;;3804:152;5140:13;5124:31;;;;;;;5252:10;;;;;;;;;;;-1:-1:-1;;;5252:10:23;;;;5384:264;5124:31;;-1:-1:-1;5242:21:23;;-1:-1:-1;;;5384:264:23;;;-1:-1:-1;;;1486:25:45;;-1:-1:-1;;;1536:2:45;1527:12;;1520:39;-1:-1:-1;;;1584:2:45;1575:12;;1568:38;1636:31;1631:2;1622:12;;1615:53;1698:22;1693:2;1684:12;;1677:44;-1:-1:-1;;;1746:2:45;1737:12;;1730:41;-1:-1:-1;;;1796:3:45;1787:13;;1780:26;1831:3;1822:13;;678:1163;5384:264:23;;;;-1:-1:-1;;5384:264:23;;;;;;;;;-1:-1:-1;;;5384:264:23;5785:310;;2755:33:45;-1:-1:-1;;;2804:12:45;;;2797:39;-1:-1:-1;;;2852:12:45;;;2845:38;2913:31;2899:12;;;2892:53;2975:22;2961:12;;;2954:44;-1:-1:-1;;;3014:12:45;;;3007:42;-1:-1:-1;;;3065:13:45;;;3058:42;-1:-1:-1;;;3116:13:45;;;3109:26;;;5785:310:23;;;;;;;;;3151:13:45;;;5785:310:23;;;-1:-1:-1;;;6260:488:23;;;4854:31:45;-1:-1:-1;;;4901:12:45;;;4894:40;-1:-1:-1;;;4950:12:45;;;4943:37;-1:-1:-1;;;4996:12:45;;;4989:42;5061:34;5047:12;;;5040:56;-1:-1:-1;;;5112:12:45;;;5105:26;-1:-1:-1;;;5147:12:45;;;5140:40;-1:-1:-1;;;5196:13:45;;;5189:43;-1:-1:-1;;;5248:13:45;;;5241:41;-1:-1:-1;;;5298:13:45;;;5291:42;-1:-1:-1;;;5349:13:45;;;5342:38;3252:21;5481:13;;;3240:34;-1:-1:-1;;;3290:12:45;;;3373:28;3417:12;;;624:16;5384:264:23;-1:-1:-1;5785:310:23;-1:-1:-1;;656:11:45;;6260:488:23;;;-1:-1:-1;;6260:488:23;;;;;;;;;;-1:-1:-1;;;6260:488:23;6893:248;;6215:28:45;-1:-1:-1;;;6259:12:45;;;6252:36;-1:-1:-1;;;6304:12:45;;;6297:39;-1:-1:-1;;;6352:12:45;;;6345:40;6415:27;6401:12;;;6394:49;-1:-1:-1;;;6459:12:45;;;6452:25;6260:488:23;-1:-1:-1;6493:12:45;;6893:248:23;;;-1:-1:-1;;6893:248:23;;;;;;;;;;6870:281;;6893:248;6870:281;;;;7261:30;;;;;;7409:38;;;;;;6870:281;;-1:-1:-1;7261:30:23;-1:-1:-1;7409:38:23;-1:-1:-1;7577:162:23;;7611:32;;7419:27;;7271:19;;7577:162;;:::i;:::-;;;;;;;;;;;;;7554:195;;;;;;7538:211;;5051:2705;;;4735:3021;;;;;;:::o;14:290:45:-;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:45;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:45:o;309:245::-;388:6;396;449:2;437:9;428:7;424:23;420:32;417:52;;;465:1;462;455:12;417:52;-1:-1:-1;;488:16:45;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:45:o;6516:336::-;6557:3;6595:5;6589:12;6619:1;6629:128;6643:6;6640:1;6637:13;6629:128;;;6740:4;6725:13;;;6721:24;;6715:31;6702:11;;;6695:52;6658:12;6629:128;;;6775:6;6772:1;6769:13;6766:48;;;6810:1;6801:6;6796:3;6792:16;6785:27;6766:48;-1:-1:-1;6830:16:45;;;;;6516:336;-1:-1:-1;;6516:336:45:o;6857:333::-;7078:3;7103:81;7128:55;7153:29;7178:3;7170:6;7153:29;:::i;:::-;7145:6;7128:55;:::i;:::-;7120:6;7103:81;:::i;:::-;7096:88;6857:333;-1:-1:-1;;;;;6857:333:45:o;7195:489::-;813:35985:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea264697066735822122065e983a77a0aa340f62c539241362638992c45283101b473e03887a2bcb0eca264736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH6 0xE983A77A0AA3 BLOCKHASH 0xF6 0x2C MSTORE8 SWAP3 COINBASE CALLDATASIZE 0x26 CODESIZE SWAP10 0x2C GASLIMIT 0x28 BALANCE ADD 0xB4 PUSH20 0xE03887A2BCB0ECA264736F6C634300080D003300 ",
              "sourceMap": "813:35985:33:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConsiderationCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CriteriaNotEnabledForItem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InexactFraction\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidFulfillmentComponentData\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProof\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"InvalidRestrictedOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MismatchedFulfillmentOfferAndConsiderationComponents\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"enum Side\",\"name\":\"side\",\"type\":\"uint8\"}],\"name\":\"MissingFulfillmentComponentOnAggregation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferAndConsiderationRequiredOnFulfillment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnresolvedConsiderationCriteria\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnresolvedOfferCriteria\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"NonceIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fulfiller\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct SpentItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct ReceivedItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"ConsiderationCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with a consideration item that has not been supplied.\"}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"CriteriaNotEnabledForItem()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with an item that does not expect a criteria to be      resolved.\"}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InexactFraction()\":[{\"details\":\"Revert with an error when attempting to apply a fraction as part of      a partial fill that does not divide the target amount cleanly.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidFulfillmentComponentData()\":[{\"details\":\"Revert with an error when an order or item index are out of range      or a fulfillment component does not match the type, token,      identifier, or conduit preference of the initial consideration item.\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidProof()\":[{\"details\":\"Revert with an error when providing a criteria resolver that      contains an invalid proof with respect to the given item and      chosen identifier.\"}],\"InvalidRestrictedOrder(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that specifies      a restricted submitter as its order type when not submitted by      either the offerrer or the order's zone or approved as valid by the      zone in question via a staticcall to `isValidOrder`.\",\"params\":{\"orderHash\":\"The order hash for the invalid restricted order.\"}}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MismatchedFulfillmentOfferAndConsiderationComponents()\":[{\"details\":\"Revert with an error when the initial offer item named by a      fulfillment component does not match the type, token, identifier,      or conduit preference of the initial consideration item.\"}],\"MissingFulfillmentComponentOnAggregation(uint8)\":[{\"details\":\"Revert with an error when a fulfillment is provided as part of an      call to fulfill available orders that does not declare at least one      component.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OfferAndConsiderationRequiredOnFulfillment()\":[{\"details\":\"Revert with an error when a fulfillment is provided that does not      declare at least one offer component and at least one consideration      component.\"}],\"OfferCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with an offer item that has not been supplied.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order that has not been supplied.\"}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"UnresolvedConsiderationCriteria()\":[{\"details\":\"Revert with an error if a consideration item still has unresolved      criteria after applying all criteria resolvers.\"}],\"UnresolvedOfferCriteria()\":[{\"details\":\"Revert with an error if an offer item still has unresolved criteria      after applying all criteria resolvers.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Derive and set hashes, reference chainId, and associated domain      separator during deployment.\",\"params\":{\"conduitController\":\"A contract that deploys conduits, or proxies                          that may optionally be used to transfer approved                          ERC20/721/1155 tokens.\"}}},\"title\":\"OrderCombiner\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"OrderCombiner contains logic for fulfilling combinations of orders,         either by matching offer items to consideration items or by         fulfilling orders where available.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/OrderCombiner.sol\":\"OrderCombiner\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/conduit/lib/ConduitEnums.sol\":{\"keccak256\":\"0x3a9ecf77688f97d1b595be27b49fca3eac93e3f91160d79f0f0063c250fd8aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d596c21d5c7c7b47ca14908cbd7add9c06898c500cf47988446f843c0b28cf96\",\"dweb:/ipfs/QmZf12Y7XHwEWvjd2ZbaUFz4NXsWPFGJF6vNg1HECvXV5m\"]},\"seaport/contracts/conduit/lib/ConduitStructs.sol\":{\"keccak256\":\"0xfd2cec45327e9a6ebc02d7efb9daa1cfdabb26eb803e4b2e9b5e82340d92cfed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea7fa97afdf70ab91449e54f9a4f40e9da16292ab87b86e7e975e6d92f573dc3\",\"dweb:/ipfs/QmaRvo6P8YYPYNgcuP4HVV2wqDuVSB1t6AwMe8jMbcQY3F\"]},\"seaport/contracts/interfaces/AbridgedTokenInterfaces.sol\":{\"keccak256\":\"0x6b4937a65838012d673de632665960836d9b81ce4d90142c02797e4d17361838\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe115b5e3b76cab664b07b242b37221adb36606b114a212798809106c1e0faab\",\"dweb:/ipfs/QmQvEoKtVyYQC5pPoJogvT5yMtumoCffH1Q8BCGLfGzVAM\"]},\"seaport/contracts/interfaces/AmountDerivationErrors.sol\":{\"keccak256\":\"0x1cba27c1c5510ec735e47d5b8f98b50bcf5f96884f8b1a6367987fff7cdc2735\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3394e76c89cd4e558a5a25a8b71e31372ad690f62c45512be98b01cd40948d1b\",\"dweb:/ipfs/QmW2KQeNm7dRXHxYY5SzBVpZxFQ59CkNJqW2LXPdJx3hZX\"]},\"seaport/contracts/interfaces/ConduitControllerInterface.sol\":{\"keccak256\":\"0x86b7ceb6ff7ce653fa7d0d79eeb8b96ec57eedd35f8c87e9838dde6c23f317bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://453fa0365834a50956e513d306371bfb7019124150bf9afd1699599fe6f7852c\",\"dweb:/ipfs/QmXiqKzGdj2A4TsuHtFLTgdLPRFwasbWWibNBRP5cikJod\"]},\"seaport/contracts/interfaces/ConduitInterface.sol\":{\"keccak256\":\"0x6aec074141c2a66f0c06ff006b6b61f5ee3f988c1cee26a51f91e1616af194d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4cda8ec77a8261f3270087331f72443b5dcb686e93297fe9641b757dff108ae1\",\"dweb:/ipfs/QmPuWHXQWuhTUfbe3yB842nS1jRM2iLyJ16rVkDSyLCD2L\"]},\"seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"keccak256\":\"0xf0d0eda6b47217d0e7c2862fdd5d7857cb828f9e0fc52e2c37c6d2b454832a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://374d19e0d9e5ce76e10dce8bada5ee9d1adcd54898c0cba9099d0dd72a5bf996\",\"dweb:/ipfs/QmS49qk49jmkPuMzLbbop5s7eJxbfRzKokQXB2QJjfVPHT\"]},\"seaport/contracts/interfaces/CriteriaResolutionErrors.sol\":{\"keccak256\":\"0x3c63de591ecf89478714308c38953d72b88c7034f9b4ae4605f356a121df969e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a538b46b3ae2bb4331fed4f2936caece352db92694c69255e0a27dcf69243f79\",\"dweb:/ipfs/QmNr2LKznf9kCHL4di5GrjYto1RTD9JgKJv13WT6yqrgNn\"]},\"seaport/contracts/interfaces/EIP1271Interface.sol\":{\"keccak256\":\"0x3c60fdc09b2bc7cb3a615ca82ee1bd776813e75883515efd1e794fe8a3228f29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b17dda7065bffe0ba89c26d413e89c7e7e733f5e74cefba56799ebb57e60908\",\"dweb:/ipfs/QmT2DJBP4WvXYKyFusiSeJ7kbo4UVor4yKCkwEF237CqxZ\"]},\"seaport/contracts/interfaces/FulfillmentApplicationErrors.sol\":{\"keccak256\":\"0x85d34353dec017698bffe508a2cd37970ac35684e9319ca5ce1ec41228313cde\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://304c4f89b90b212a7fed6e29c7f11575c20992845981074e42b6890f86a42808\",\"dweb:/ipfs/QmP1g5tEi8YLbAbFDXGc6Rp37zuQXousunm38bvQbdanu5\"]},\"seaport/contracts/interfaces/ReentrancyErrors.sol\":{\"keccak256\":\"0x9ab27fa5a68f55ad89072ea213c6f12979ae469041ca473d81f800dbdbe9bb48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0cc617da7254d981fd5970d16acc2a6f6fe2fe0bc3e2d0976f7c01a4893430ec\",\"dweb:/ipfs/QmbhqKxfhrfPAjp99LVspxopQG7Mb9L9xdSa38ujCxmvTJ\"]},\"seaport/contracts/interfaces/SignatureVerificationErrors.sol\":{\"keccak256\":\"0xb86f318b159c16087372e12b1e2c37c15fb745be1566bb03812e3814c15fb605\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff051f5cb44654096126c9ec72d1aaebf568e87a01da6200e969e673b8c3e4bf\",\"dweb:/ipfs/QmaPKx8ikPxRzYRubNraLhPdnGmXunZ6WGhzaed18oBi66\"]},\"seaport/contracts/interfaces/TokenTransferrerErrors.sol\":{\"keccak256\":\"0x128fbb0236de5e52c34876c61148e04c12289e92d6bce2270760905617a01b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ed114ea7bf9ce55065d853f0f705eb82cc840672e0c2ab899691ab5703d2e98\",\"dweb:/ipfs/QmXQsajetWBmU7tzjoFm5wyajRKrMMEGXFF7ZQxaH7ZceG\"]},\"seaport/contracts/interfaces/ZoneInteractionErrors.sol\":{\"keccak256\":\"0x7cc23125af35b317beac057bfbe34291f6b2f34f37f7d698f5bc7373b09b4480\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c56917ceed46a2e3029b7daf5331cd6e3a10e3174287c9d2a5cccb5fb6e1568\",\"dweb:/ipfs/QmRdPmvPm2F2hXq4QwXZyavjMis1RmY5XLMZLzM45Cv9hT\"]},\"seaport/contracts/interfaces/ZoneInterface.sol\":{\"keccak256\":\"0x5c5d749fd3de01bd89acf7cb08f11d041b3a600819e18b8a51cebd65285ced46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43788f6ae192a2063f185ccb87853576e4d90ea8f1df19d1334d2e9be62333f3\",\"dweb:/ipfs/QmXSXFPhSNsTv4kvBZbCHwzakoAxvvnvZPSmw7CXg2j1vu\"]},\"seaport/contracts/lib/AmountDeriver.sol\":{\"keccak256\":\"0x2f02fe1e7b22f5ca600416d37f6d3829b10dae8b752ea497ffc2a6a5420ad920\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://978d3a8d7aa0de2d32fde5d25b16f0d43d78d68e8ecefb2d1a80853a10eea806\",\"dweb:/ipfs/Qmam1XT3P6RPYH5tMfNyfm5i5jDrMWYqCArMar9FpDW6ji\"]},\"seaport/contracts/lib/Assertions.sol\":{\"keccak256\":\"0xb2ef1d902d0eefb7aaffc720354dd0352f95442178091f059d31ebe096894586\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6f121104190dd5e5a4e98fcbf024ad300c4b9704768fdb49d81f270c22a8067\",\"dweb:/ipfs/QmWKzhVq1itpqTfeiCELGb1jDcTnBdCwroHgGMzqDuYWN8\"]},\"seaport/contracts/lib/BasicOrderFulfiller.sol\":{\"keccak256\":\"0x6262ae2f6c6a9d6a0da8457160683db0d9868b2caf640b21a1896fece7ec677f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86d3aa0f9ef2940a1c0e12ebe9ae53e4945d488285b14ff930cf311fef4c2c69\",\"dweb:/ipfs/QmRugwrXvDJFXfoWNzSzk4EUQCve4hByRUnfJiusgQGLXb\"]},\"seaport/contracts/lib/ConsiderationBase.sol\":{\"keccak256\":\"0x1015a0bb6fff27278ceec2f76cbf0c775bfb3e8d03cafe8d3549e252e9563ba2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f7d3b48069268df59a77293a7cdc232df35c5b1c8b1974b422a850bedb875f6\",\"dweb:/ipfs/QmSMMnXqsUEWuC1u7BF6coTXK63BXaQYvWqX69doaatKw8\"]},\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]},\"seaport/contracts/lib/CriteriaResolution.sol\":{\"keccak256\":\"0xf65cfc83ff0764d82039c959a9b3bbd09069228882467ab491de64fbcb318a89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5d8cc2ab576be995caf53711b41872f07a8e80d86402380053db8d886924ea06\",\"dweb:/ipfs/QmWi4cS9b1UHX6PJvu59kLEdhp3Gi43crujzfgHNFCc831\"]},\"seaport/contracts/lib/Executor.sol\":{\"keccak256\":\"0x72b4591bebbeb723ad41e9dabd931e4a969a8cff3e6a9b1a82dd2299391834e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3030a05a77aa4375961371f8508327d0a7f102c9b52319a0263a15a498155d70\",\"dweb:/ipfs/QmWr6WFUwJsszCBvMhLUPAz4tz3jTbJzABQwtfRUC5cKzv\"]},\"seaport/contracts/lib/FulfillmentApplier.sol\":{\"keccak256\":\"0x8caa24084d5ee58e8d858bef5cf933cf41d4c94b31b74d3220af0fa73f4ac888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45bdb2fd064cd05b99a980011898bf07c38c847bb2e0d723363d5552a5ccbc87\",\"dweb:/ipfs/QmccTMHU8oe9NdWkJdiEkrRxbL2dw87swZLYT7Tdfr6M8B\"]},\"seaport/contracts/lib/GettersAndDerivers.sol\":{\"keccak256\":\"0xb9d0cf2a84567b6b70e1ddd9e3450dddf8139e5396bcac24c42f46db16228efa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99767431817fd6b157bc199784ca3f3bc2cf024a332ae8e2a5eb7e3db0f2b47d\",\"dweb:/ipfs/QmPWaJet2TPiWc7xEo7QqVpctaLvXPZFep8R8Vi4ZRzzCw\"]},\"seaport/contracts/lib/LowLevelHelpers.sol\":{\"keccak256\":\"0x83085de63b870cfb3940c68d96a40b2cf9afb7280c1afa3034d1c55c80444a94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9ba49a7318a517e836811dfc67989e9f14959a7cd55220853af6b6273309543\",\"dweb:/ipfs/QmUAQr4SReMunUvwBxKPdd8XLPy5GKMEEhPwpD32UYn3kx\"]},\"seaport/contracts/lib/NonceManager.sol\":{\"keccak256\":\"0xe8b6e40830e216912ce483e867151e84cc0b290404220e1ed5fbb69821161f8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4ef49cbc0b5385b64c1f8c9d5cf572dff35ec291970714ef11520de2c01ab9c\",\"dweb:/ipfs/QmfJoNCtAHUYsidmUaiMBP8wMzUYCtg33G8nUqyME5AftL\"]},\"seaport/contracts/lib/OrderCombiner.sol\":{\"keccak256\":\"0x323df1b76c038a4101c9e1627a773ccf85f886678ac486a99b0f64336b5b6023\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28395f3ff6f8cf7419e2050edfaf10996062a500b9942ad49eb0fe3bee3e4ca2\",\"dweb:/ipfs/QmRwwjsTRAhhvpaXJGt98pHghRZbCgzWPbUT29esmcU86h\"]},\"seaport/contracts/lib/OrderFulfiller.sol\":{\"keccak256\":\"0x6710eeff2b52320a330b7b2fbc38d18f58ef1ab8509d818ed8469e8859ef1969\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6991481f10696e4f381c95adc510cfba3d5c973c65eb15b49643282d4059972\",\"dweb:/ipfs/QmPuVVnTxkaY9opZmxsdJpPEogpQccZXG378NFZ6tcJjVm\"]},\"seaport/contracts/lib/OrderValidator.sol\":{\"keccak256\":\"0xeb3e16175a6545c6f320eecc2c2d2e33cf27f30be2e12ae86ad67429b0e14061\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924da093b3d43f0603a8615b6ad2b575d4efe694f0381e3963461159c13fc1ba\",\"dweb:/ipfs/QmVwuoYmZU3BZx8LVfeDdd51geQyS745KLPKx7LuNQiPUz\"]},\"seaport/contracts/lib/ReentrancyGuard.sol\":{\"keccak256\":\"0xec219fb657ce8400835d8d1ff87716247c5fdde51bca31fddf19415abad773db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eca390f7b8fbccc703ad22edd4f35fa896de59912f21d9471d51ef83b961d3c5\",\"dweb:/ipfs/QmXyxcfzgD4SaTtgqGjUjxK4tb76NiPcooMkL9c11yhm2L\"]},\"seaport/contracts/lib/SignatureVerification.sol\":{\"keccak256\":\"0x5833c9bf1ab9c8fbfeb723ff500722e269a1c05b0fe14d8a837e40c88138f4fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0af100e71a40bc871019c7ebd5c786007deacbf58ee98bce204c43811c726dd\",\"dweb:/ipfs/QmSjdy3wSypHCxCdFGZxLFCCRJf7cfVn6MM75KUbj2y3jN\"]},\"seaport/contracts/lib/TokenTransferrer.sol\":{\"keccak256\":\"0xe392cea22226f1b55e35b0295d0cfa156c7764f2509fa416f3946ca748c9605a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddf9b20512bc36f5bbe25f56729aa31a139b1560dfc14beb42d5d09ae8d44b48\",\"dweb:/ipfs/QmSN9GdbtqBcobRSd8kSCxn2GScZhiiAbuxk5djmkatKRD\"]},\"seaport/contracts/lib/TokenTransferrerConstants.sol\":{\"keccak256\":\"0x5ecc368039fd81cc27788a664538ab63f1b5deb9caa8839d9499fadfd1d465cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0e821e5fd5a31cdcaaf334203dd58d80489c1aed2fd2a91a9683a9e342c9653\",\"dweb:/ipfs/QmRKkHF5aLKJ8KrMmMoV9UsCtgtrCQYgeptGK4jKVGM68j\"]},\"seaport/contracts/lib/Verifiers.sol\":{\"keccak256\":\"0x69755b486d816164270d1b37c187ea7a3ce262e9d31153a88279fe6d8cb76cd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://16dc060d4321a17cdcbf1125b076bb9bbf75086a57d7c6eeca7e9845fcd6d76e\",\"dweb:/ipfs/QmSnF21ffxHnfiYRVVRopn2EcJagghQZTTcdDvMoiR9fsM\"]},\"seaport/contracts/lib/ZoneInteraction.sol\":{\"keccak256\":\"0xbabb8f6c0659327e9ae9711d63c0d81f49789c32d1987170d772dac5bd9c0b48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ee495283ba0709d674062d80a6bcba9f54eed8d132283e500980fa63ac5dc217\",\"dweb:/ipfs/QmWQegpmWwk6dNxBpmXpVmPAq6LtQhDKUja9ewHeMsA1rM\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/OrderFulfiller.sol": {
        "OrderFulfiller": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduitController",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "BadContractSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "BadFraction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BadReturnValueFromERC20OnTransfer",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                }
              ],
              "name": "BadSignatureV",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "ConsiderationCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "orderIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "considerationIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "shortfallAmount",
                  "type": "uint256"
                }
              ],
              "name": "ConsiderationNotMet",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "CriteriaNotEnabledForItem",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "identifiers",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "ERC1155BatchTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "EtherTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InexactFraction",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InsufficientEtherSupplied",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidBasicOrderParameterEncoding",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidCallToConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidCanceller",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidERC721TransferAmount",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "InvalidMsgValue",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidProof",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "InvalidRestrictedOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSigner",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidTime",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingItemAmount",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingOriginalConsiderationItems",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "NoContract",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoReentrantCalls",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoSpecifiedOrdersAvailable",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OfferCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderAlreadyFilled",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "OrderCriteriaResolverOutOfRange",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderIsCancelled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderPartiallyFilled",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "PartialFillsNotEnabledForOrder",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "identifier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnresolvedConsiderationCriteria",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "UnresolvedOfferCriteria",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                }
              ],
              "name": "NonceIncremented",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderCancelled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fulfiller",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct SpentItem[]",
                  "name": "offer",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address payable",
                      "name": "recipient",
                      "type": "address"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct ReceivedItem[]",
                  "name": "consideration",
                  "type": "tuple[]"
                }
              ],
              "name": "OrderFulfilled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderValidated",
              "type": "event"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_2519": {
                  "entryPoint": null,
                  "id": 2519,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_2625": {
                  "entryPoint": null,
                  "id": 2625,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_3225": {
                  "entryPoint": null,
                  "id": 3225,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_4482": {
                  "entryPoint": null,
                  "id": 4482,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_5345": {
                  "entryPoint": null,
                  "id": 5345,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_6579": {
                  "entryPoint": null,
                  "id": 6579,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_7098": {
                  "entryPoint": null,
                  "id": 7098,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_7733": {
                  "entryPoint": null,
                  "id": 7733,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_8248": {
                  "entryPoint": null,
                  "id": 8248,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_deriveDomainSeparator_3247": {
                  "entryPoint": null,
                  "id": 3247,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_deriveTypehashes_3383": {
                  "entryPoint": 289,
                  "id": 3383,
                  "parameterSlots": 0,
                  "returnSlots": 6
                },
                "@_nameString_3264": {
                  "entryPoint": null,
                  "id": 3264,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1459,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_bytes32_fromMemory": {
                  "entryPoint": 1507,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_bytes": {
                  "entryPoint": 1543,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_59d7": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_cfcd": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1602,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7686:45",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:45",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:45",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:45",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:45"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:45",
                            "type": ""
                          }
                        ],
                        "src": "14:290:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "407:147:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "453:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "462:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "465:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "455:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "455:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "455:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "428:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "437:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "424:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "424:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "449:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "420:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "420:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "417:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "478:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "494:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "488:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "488:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "478:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "513:35:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "533:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "544:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "529:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "529:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:25:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "365:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "376:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "388:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "396:6:45",
                            "type": ""
                          }
                        ],
                        "src": "309:245:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "614:59:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "631:3:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "636:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "624:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "624:16:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "624:16:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "649:18:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "660:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "665:1:45",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "656:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "656:11:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "649:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_59d7",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "598:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "606:3:45",
                            "type": ""
                          }
                        ],
                        "src": "559:114:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1476:365:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1493:3:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1498:12:45",
                                    "type": "",
                                    "value": "OfferItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1486:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1486:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1486:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1531:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1536:2:45",
                                        "type": "",
                                        "value": "10"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1527:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1527:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1541:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1520:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1520:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1520:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1579:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1584:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1575:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1575:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1589:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1568:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1568:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1568:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1626:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1631:2:45",
                                        "type": "",
                                        "value": "39"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1622:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1622:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1636:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1615:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1615:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1615:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1688:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1693:2:45",
                                        "type": "",
                                        "value": "68"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1684:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1684:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1698:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1677:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1677:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1677:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1741:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1746:2:45",
                                        "type": "",
                                        "value": "88"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1737:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1737:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1751:19:45",
                                    "type": "",
                                    "value": "uint256 endAmount"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1730:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1730:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1730:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1791:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1796:3:45",
                                        "type": "",
                                        "value": "105"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1787:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1787:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1802:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1780:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1780:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1780:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1815:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1826:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1831:3:45",
                                    "type": "",
                                    "value": "106"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1822:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1822:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1815:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1460:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1468:3:45",
                            "type": ""
                          }
                        ],
                        "src": "678:1163:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2745:425:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2762:3:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2767:20:45",
                                    "type": "",
                                    "value": "ConsiderationItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2755:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2755:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2755:33:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2808:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2813:2:45",
                                        "type": "",
                                        "value": "18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2804:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2804:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2818:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2797:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2797:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2797:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2856:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2861:2:45",
                                        "type": "",
                                        "value": "33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2852:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2852:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2866:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2845:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2845:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2845:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2903:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2908:2:45",
                                        "type": "",
                                        "value": "47"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2899:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2899:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2913:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2892:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2892:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2892:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2965:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2970:2:45",
                                        "type": "",
                                        "value": "76"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2961:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2961:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2975:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2954:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2954:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2954:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3018:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3023:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3014:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3014:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3028:20:45",
                                    "type": "",
                                    "value": "uint256 endAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3007:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3007:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3007:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3069:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3074:3:45",
                                        "type": "",
                                        "value": "114"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3065:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3065:13:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320726563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3080:19:45",
                                    "type": "",
                                    "value": "address recipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3058:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3058:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3058:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3120:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3125:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3116:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3116:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3131:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3109:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3109:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3109:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3144:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3155:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3160:3:45",
                                    "type": "",
                                    "value": "132"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3151:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3151:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3144:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2729:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2737:3:45",
                            "type": ""
                          }
                        ],
                        "src": "1846:1324:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3230:78:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3247:3:45"
                                  },
                                  {
                                    "hexValue": "6279746573333220636f6e647569744b65792c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3252:21:45",
                                    "type": "",
                                    "value": "bytes32 conduitKey,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3240:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3240:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3240:34:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3283:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3294:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3299:2:45",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3290:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3290:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_cfcd",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3214:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3222:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3175:133:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3363:72:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3380:3:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206e6f6e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3385:15:45",
                                    "type": "",
                                    "value": "uint256 nonce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3373:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3373:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3373:28:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3410:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3421:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3426:2:45",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3417:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3417:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3410:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3347:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3355:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3313:122:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4844:659:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4861:3:45"
                                  },
                                  {
                                    "hexValue": "4f72646572436f6d706f6e656e747328",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4866:18:45",
                                    "type": "",
                                    "value": "OrderComponents("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4854:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4854:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4854:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4905:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4910:2:45",
                                        "type": "",
                                        "value": "16"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4901:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4901:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373206f6666657265722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4915:18:45",
                                    "type": "",
                                    "value": "address offerer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4894:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4894:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4894:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4954:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4959:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4950:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4950:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373207a6f6e652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4964:15:45",
                                    "type": "",
                                    "value": "address zone,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4943:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4943:37:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4943:37:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5000:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5005:2:45",
                                        "type": "",
                                        "value": "45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4996:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4996:12:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d5b5d206f666665722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5010:20:45",
                                    "type": "",
                                    "value": "OfferItem[] offer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4989:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4989:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4989:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5051:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5056:2:45",
                                        "type": "",
                                        "value": "63"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5047:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5047:12:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5061:34:45",
                                    "type": "",
                                    "value": "ConsiderationItem[] consideratio"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5040:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5040:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5040:56:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5116:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5121:2:45",
                                        "type": "",
                                        "value": "95"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5112:12:45"
                                  },
                                  {
                                    "hexValue": "6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5126:4:45",
                                    "type": "",
                                    "value": "n,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5105:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5105:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5105:26:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5151:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5156:2:45",
                                        "type": "",
                                        "value": "97"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5147:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5147:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206f72646572547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5161:18:45",
                                    "type": "",
                                    "value": "uint8 orderType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5140:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5140:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5140:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5200:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5205:3:45",
                                        "type": "",
                                        "value": "113"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5196:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5196:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620737461727454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5211:20:45",
                                    "type": "",
                                    "value": "uint256 startTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5189:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5189:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5189:43:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5252:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5257:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5248:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5248:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e6454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5263:18:45",
                                    "type": "",
                                    "value": "uint256 endTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5241:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5241:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5241:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5302:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5307:3:45",
                                        "type": "",
                                        "value": "147"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5298:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5298:13:45"
                                  },
                                  {
                                    "hexValue": "62797465733332207a6f6e65486173682c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5313:19:45",
                                    "type": "",
                                    "value": "bytes32 zoneHash,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5291:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5291:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5291:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5353:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5358:3:45",
                                        "type": "",
                                        "value": "164"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5349:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5349:13:45"
                                  },
                                  {
                                    "hexValue": "75696e743235362073616c742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5364:15:45",
                                    "type": "",
                                    "value": "uint256 salt,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5342:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5342:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5342:38:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5389:108:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "5485:3:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5490:3:45",
                                                "type": "",
                                                "value": "177"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5481:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5481:13:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_stringliteral_cfcd",
                                          "nodeType": "YulIdentifier",
                                          "src": "5451:29:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5451:44:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_stringliteral",
                                      "nodeType": "YulIdentifier",
                                      "src": "5426:24:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5426:70:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_stringliteral_59d7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5396:29:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5396:101:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5389:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4828:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4836:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3440:2063:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6205:306:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6222:3:45"
                                  },
                                  {
                                    "hexValue": "454950373132446f6d61696e28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6227:15:45",
                                    "type": "",
                                    "value": "EIP712Domain("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6215:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6215:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6215:28:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6263:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6268:2:45",
                                        "type": "",
                                        "value": "13"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6259:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6259:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e67206e616d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6273:14:45",
                                    "type": "",
                                    "value": "string name,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6252:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6252:36:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6252:36:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6308:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6313:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6304:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6304:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e672076657273696f6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6318:17:45",
                                    "type": "",
                                    "value": "string version,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6297:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6297:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6297:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6356:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6361:2:45",
                                        "type": "",
                                        "value": "40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6352:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6352:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620636861696e49642c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6366:18:45",
                                    "type": "",
                                    "value": "uint256 chainId,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6345:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6345:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6345:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6405:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6410:2:45",
                                        "type": "",
                                        "value": "56"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6401:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6401:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320766572696679696e67436f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6415:27:45",
                                    "type": "",
                                    "value": "address verifyingContract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6394:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6394:49:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6394:49:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6463:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6468:2:45",
                                        "type": "",
                                        "value": "81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6459:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6459:12:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6473:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6452:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6452:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6452:25:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6486:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6497:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6502:2:45",
                                    "type": "",
                                    "value": "82"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6493:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6493:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6486:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6189:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6197:3:45",
                            "type": ""
                          }
                        ],
                        "src": "5508:1003:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6565:287:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6575:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6595:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6589:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6589:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6579:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6610:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6619:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6614:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6681:76:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6706:3:45"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "6711:1:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6702:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6702:11:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6729:5:45"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6736:1:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6725:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6725:13:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "6740:4:45",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6721:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6721:24:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6715:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6715:31:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6695:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6695:52:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6695:52:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6640:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6643:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6637:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6637:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6651:21:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6653:17:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6662:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6665:4:45",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6658:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6658:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6653:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6633:3:45",
                                "statements": []
                              },
                              "src": "6629:128:45"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6783:31:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6796:3:45"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "6801:6:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6792:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6792:16:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6810:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6785:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6785:27:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6785:27:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6772:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6775:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6769:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6769:13:45"
                              },
                              "nodeType": "YulIf",
                              "src": "6766:48:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6823:23:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6834:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6839:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6830:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6830:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6823:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6542:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6549:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6557:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6516:336:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7086:104:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7096:88:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7120:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7145:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "7170:6:45"
                                          },
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "7178:3:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_bytes",
                                          "nodeType": "YulIdentifier",
                                          "src": "7153:16:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7153:29:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "7128:16:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7128:55:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "7103:16:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7103:81:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7096:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7046:3:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7051:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7059:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7067:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7078:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6857:333:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7408:276:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7418:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7430:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7441:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7426:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7426:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7418:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7461:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7472:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7454:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7454:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7454:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7499:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7510:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7495:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7495:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7515:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7488:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7488:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7488:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7542:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7553:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7538:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7538:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7558:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7531:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7531:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7531:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7585:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7596:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7581:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7581:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7601:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7574:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7574:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7574:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7628:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7639:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7624:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7624:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7649:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7665:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7670:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "7661:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7661:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7674:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "7657:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7657:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7645:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7645:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7617:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7617:61:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7617:61:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7345:9:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7356:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7364:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7372:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7380:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7388:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7399:4:45",
                            "type": ""
                          }
                        ],
                        "src": "7195:489:45"
                      }
                    ]
                  },
                  "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 abi_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OfferItem(\")\n        mstore(add(pos, 10), \"uint8 itemType,\")\n        mstore(add(pos, 25), \"address token,\")\n        mstore(add(pos, 39), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 68), \"uint256 startAmount,\")\n        mstore(add(pos, 88), \"uint256 endAmount\")\n        mstore(add(pos, 105), \")\")\n        end := add(pos, 106)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"ConsiderationItem(\")\n        mstore(add(pos, 18), \"uint8 itemType,\")\n        mstore(add(pos, 33), \"address token,\")\n        mstore(add(pos, 47), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 76), \"uint256 startAmount,\")\n        mstore(add(pos, 96), \"uint256 endAmount,\")\n        mstore(add(pos, 114), \"address recipient\")\n        mstore(add(pos, 131), \")\")\n        end := add(pos, 132)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral(pos) -> end\n    {\n        mstore(pos, \"uint256 nonce\")\n        end := add(pos, 13)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address zone,\")\n        mstore(add(pos, 45), \"OfferItem[] offer,\")\n        mstore(add(pos, 63), \"ConsiderationItem[] consideratio\")\n        mstore(add(pos, 95), \"n,\")\n        mstore(add(pos, 97), \"uint8 orderType,\")\n        mstore(add(pos, 113), \"uint256 startTime,\")\n        mstore(add(pos, 131), \"uint256 endTime,\")\n        mstore(add(pos, 147), \"bytes32 zoneHash,\")\n        mstore(add(pos, 164), \"uint256 salt,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral(abi_encode_stringliteral_cfcd(add(pos, 177))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value, i), 0x20)))\n        }\n        if gt(i, length) { mstore(add(pos, length), 0) }\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        end := abi_encode_bytes(value2, abi_encode_bytes(value1, abi_encode_bytes(value0, pos)))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}",
                  "id": 45,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101c060405234801561001157600080fd5b50604051610703380380610703833981016040819052610030916105b3565b8080808080808061003f610121565b610120526101005260e05260c081815260a0838152608085815246610140819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610160526001600160a01b03811661018081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100e5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010991906105e3565b506101a0525050600160005550610669945050505050565b6000808080808061015260408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260018152603160f81b90840152519097507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6965060009161025491016909ecccccae492e8cada560b31b81526e1d5a5b9d0e081a5d195b551e5c194b608a1b600a8201526d1859191c995cdcc81d1bdad95b8b60921b60198201527f75696e74323536206964656e7469666965724f7243726974657269612c00000060278201527f75696e74323536207374617274416d6f756e742c0000000000000000000000006044820152701d5a5b9d0c8d4d88195b99105b5bdd5b9d607a1b6058820152602960f81b6069820152606a0190565b60408051601f1981840301815282825271086dedce6d2c8cae4c2e8d2dedc92e8cada560731b60208401526e1d5a5b9d0e081a5d195b551e5c194b608a1b60328401526d1859191c995cdcc81d1bdad95b8b60921b60418401527f75696e74323536206964656e7469666965724f7243726974657269612c000000604f8401527f75696e74323536207374617274416d6f756e742c000000000000000000000000606c840152711d5a5b9d0c8d4d88195b99105b5bdd5b9d0b60721b6080840152701859191c995cdcc81c9958da5c1a595b9d607a1b6092840152602960f81b60a384018190528251808503608401815260a485019093526f09ee4c8cae486dedae0dedccadce8e6560831b60c48501526f1859191c995cdcc81bd999995c995c8b60821b60d48501526c1859191c995cdcc81e9bdb994b609a1b60e48501527113d999995c925d195b56d7481bd999995c8b60721b60f18501527f436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f610103850152611b8b60f21b6101238501526f1d5a5b9d0e081bdc99195c951e5c194b60821b610125850152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b6101358501526f1d5a5b9d0c8d4d88195b99151a5b594b60821b61014785015270189e5d195ccccc881e9bdb9952185cda0b607a1b6101578501526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101688501527f6279746573333220636f6e647569744b65792c000000000000000000000000006101758501526c75696e74323536206e6f6e636560981b6101888501526101958401529250906000906101960160408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b6071830152915060720160408051601f19818403018152908290528051602091820120855186830120855186840120919a50985096506105909183918591879101610642565b604051602081830303815290604052805190602001209350505050909192939495565b6000602082840312156105c557600080fd5b81516001600160a01b03811681146105dc57600080fd5b9392505050565b600080604083850312156105f657600080fd5b505080516020909101519092909150565b6000815160005b81811015610628576020818501810151868301520161060e565b81811115610637576000828601525b509290920192915050565b600061066061065a6106548488610607565b86610607565b84610607565b95945050505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051603f6106c460003960005050600050506000505060005050600050506000505060005050600050506000505060005050603f6000f3fe6080604052600080fdfea2646970667358221220d84289cccea076fc0acc315ed20f5575f199c596d94a3adb9b5bd41c1acb989f64736f6c634300080d0033",
              "opcodes": "PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x703 CODESIZE SUB DUP1 PUSH2 0x703 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0x5B3 JUMP JUMPDEST DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x3F PUSH2 0x121 JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH2 0x100 MSTORE PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x160 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x180 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE5 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 0x109 SWAP2 SWAP1 PUSH2 0x5E3 JUMP JUMPDEST POP PUSH2 0x1A0 MSTORE POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP PUSH2 0x669 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x152 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP8 POP PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP7 POP PUSH1 0x0 SWAP2 PUSH2 0x254 SWAP2 ADD PUSH10 0x9ECCCCCAE492E8CADA5 PUSH1 0xB3 SHL DUP2 MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0xA DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x19 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x27 DUP3 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D PUSH1 0x7A SHL PUSH1 0x58 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x69 DUP3 ADD MSTORE PUSH1 0x6A ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE PUSH18 0x86DEDCE6D2C8CAE4C2E8D2DEDC92E8CADA5 PUSH1 0x73 SHL PUSH1 0x20 DUP5 ADD MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0x32 DUP5 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x41 DUP5 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x4F DUP5 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x6C DUP5 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D0B PUSH1 0x72 SHL PUSH1 0x80 DUP5 ADD MSTORE PUSH17 0x1859191C995CDCC81C9958DA5C1A595B9D PUSH1 0x7A SHL PUSH1 0x92 DUP5 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0xA3 DUP5 ADD DUP2 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB PUSH1 0x84 ADD DUP2 MSTORE PUSH1 0xA4 DUP6 ADD SWAP1 SWAP4 MSTORE PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL PUSH1 0xC4 DUP6 ADD MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0xD4 DUP6 ADD MSTORE PUSH13 0x1859191C995CDCC81E9BDB994B PUSH1 0x9A SHL PUSH1 0xE4 DUP6 ADD MSTORE PUSH18 0x13D999995C925D195B56D7481BD999995C8B PUSH1 0x72 SHL PUSH1 0xF1 DUP6 ADD MSTORE PUSH32 0x436F6E73696465726174696F6E4974656D5B5D20636F6E73696465726174696F PUSH2 0x103 DUP6 ADD MSTORE PUSH2 0x1B8B PUSH1 0xF2 SHL PUSH2 0x123 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0E081BDC99195C951E5C194B PUSH1 0x82 SHL PUSH2 0x125 DUP6 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH2 0x135 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH2 0x147 DUP6 ADD MSTORE PUSH17 0x189E5D195CCCCC881E9BDB9952185CDA0B PUSH1 0x7A SHL PUSH2 0x157 DUP6 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x168 DUP6 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x175 DUP6 ADD MSTORE PUSH13 0x75696E74323536206E6F6E6365 PUSH1 0x98 SHL PUSH2 0x188 DUP6 ADD MSTORE PUSH2 0x195 DUP5 ADD MSTORE SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x196 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 DUP6 MLOAD DUP7 DUP4 ADD KECCAK256 DUP6 MLOAD DUP7 DUP5 ADD KECCAK256 SWAP2 SWAP11 POP SWAP9 POP SWAP7 POP PUSH2 0x590 SWAP2 DUP4 SWAP2 DUP6 SWAP2 DUP8 SWAP2 ADD PUSH2 0x642 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP POP POP POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x628 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0x60E JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x637 JUMPI PUSH1 0x0 DUP3 DUP7 ADD MSTORE JUMPDEST POP SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x660 PUSH2 0x65A PUSH2 0x654 DUP5 DUP9 PUSH2 0x607 JUMP JUMPDEST DUP7 PUSH2 0x607 JUMP JUMPDEST DUP5 PUSH2 0x607 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH1 0x3F PUSH2 0x6C4 PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x3F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD8 TIMESTAMP DUP10 0xCC 0xCE LOG0 PUSH23 0xFC0ACC315ED20F5575F199C596D94A3ADB9B5BD41C1ACB SWAP9 SWAP16 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "801:18439:34:-:0;;;1254:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1321:17;;;;;;;1967:19:23;:17;:19::i;:::-;1760:226;;;;;;;;;;;;;;-1:-1:-1;1760:226:23;;;2087:13;2075:25;;;;-1:-1:-1;2761:187:23;;-1:-1:-1;2761:187:23;;;7454:25:45;;;;7495:18;;;7488:34;;;;-1:-1:-1;7538:18:45;;7531:34;;;;7581:18;;;7574:34;2929:4:23;7624:19:45;;;7617:61;2761:187:23;;;;;;;;;;7426:19:45;;2761:187:23;;;2738:220;;;;;2110:44;;-1:-1:-1;;;;;2213:67:23;;;;;;2420:42;;;-1:-1:-1;;;2420:42:23;;;;:40;;:42;;;;;;;;;;;;;2213:67;2420:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2372:100:23;;-1:-1:-1;;2287:1:24;657:16:36;:31;-1:-1:-1;801:18439:34;;-1:-1:-1;;;;;801:18439:34;4735:3021:23;4824:16;;;;;;5140:13;3927:22;;;;;;;;;;;;-1:-1:-1;;;3927:22:23;;;;;3804:152;5140:13;5124:31;;;;;;;5252:10;;;;;;;;;;;-1:-1:-1;;;5252:10:23;;;;5384:264;5124:31;;-1:-1:-1;5242:21:23;;-1:-1:-1;;;5384:264:23;;;-1:-1:-1;;;1486:25:45;;-1:-1:-1;;;1536:2:45;1527:12;;1520:39;-1:-1:-1;;;1584:2:45;1575:12;;1568:38;1636:31;1631:2;1622:12;;1615:53;1698:22;1693:2;1684:12;;1677:44;-1:-1:-1;;;1746:2:45;1737:12;;1730:41;-1:-1:-1;;;1796:3:45;1787:13;;1780:26;1831:3;1822:13;;678:1163;5384:264:23;;;;-1:-1:-1;;5384:264:23;;;;;;;;;-1:-1:-1;;;5384:264:23;5785:310;;2755:33:45;-1:-1:-1;;;2804:12:45;;;2797:39;-1:-1:-1;;;2852:12:45;;;2845:38;2913:31;2899:12;;;2892:53;2975:22;2961:12;;;2954:44;-1:-1:-1;;;3014:12:45;;;3007:42;-1:-1:-1;;;3065:13:45;;;3058:42;-1:-1:-1;;;3116:13:45;;;3109:26;;;5785:310:23;;;;;;;;;3151:13:45;;;5785:310:23;;;-1:-1:-1;;;6260:488:23;;;4854:31:45;-1:-1:-1;;;4901:12:45;;;4894:40;-1:-1:-1;;;4950:12:45;;;4943:37;-1:-1:-1;;;4996:12:45;;;4989:42;5061:34;5047:12;;;5040:56;-1:-1:-1;;;5112:12:45;;;5105:26;-1:-1:-1;;;5147:12:45;;;5140:40;-1:-1:-1;;;5196:13:45;;;5189:43;-1:-1:-1;;;5248:13:45;;;5241:41;-1:-1:-1;;;5298:13:45;;;5291:42;-1:-1:-1;;;5349:13:45;;;5342:38;3252:21;5481:13;;;3240:34;-1:-1:-1;;;3290:12:45;;;3373:28;3417:12;;;624:16;5384:264:23;-1:-1:-1;5785:310:23;-1:-1:-1;;656:11:45;;6260:488:23;;;-1:-1:-1;;6260:488:23;;;;;;;;;;-1:-1:-1;;;6260:488:23;6893:248;;6215:28:45;-1:-1:-1;;;6259:12:45;;;6252:36;-1:-1:-1;;;6304:12:45;;;6297:39;-1:-1:-1;;;6352:12:45;;;6345:40;6415:27;6401:12;;;6394:49;-1:-1:-1;;;6459:12:45;;;6452:25;6260:488:23;-1:-1:-1;6493:12:45;;6893:248:23;;;-1:-1:-1;;6893:248:23;;;;;;;;;;6870:281;;6893:248;6870:281;;;;7261:30;;;;;;7409:38;;;;;;6870:281;;-1:-1:-1;7261:30:23;-1:-1:-1;7409:38:23;-1:-1:-1;7577:162:23;;7611:32;;7419:27;;7271:19;;7577:162;;:::i;:::-;;;;;;;;;;;;;7554:195;;;;;;7538:211;;5051:2705;;;4735:3021;;;;;;:::o;14:290:45:-;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:45;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:45:o;309:245::-;388:6;396;449:2;437:9;428:7;424:23;420:32;417:52;;;465:1;462;455:12;417:52;-1:-1:-1;;488:16:45;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:45:o;6516:336::-;6557:3;6595:5;6589:12;6619:1;6629:128;6643:6;6640:1;6637:13;6629:128;;;6740:4;6725:13;;;6721:24;;6715:31;6702:11;;;6695:52;6658:12;6629:128;;;6775:6;6772:1;6769:13;6766:48;;;6810:1;6801:6;6796:3;6792:16;6785:27;6766:48;-1:-1:-1;6830:16:45;;;;;6516:336;-1:-1:-1;;6516:336:45:o;6857:333::-;7078:3;7103:81;7128:55;7153:29;7178:3;7170:6;7153:29;:::i;:::-;7145:6;7128:55;:::i;:::-;7120:6;7103:81;:::i;:::-;7096:88;6857:333;-1:-1:-1;;;;;6857:333:45:o;7195:489::-;801:18439:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea2646970667358221220d84289cccea076fc0acc315ed20f5575f199c596d94a3adb9b5bd41c1acb989f64736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD8 TIMESTAMP DUP10 0xCC 0xCE LOG0 PUSH23 0xFC0ACC315ED20F5575F199C596D94A3ADB9B5BD41C1ACB SWAP9 SWAP16 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "801:18439:34:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ConsiderationCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CriteriaNotEnabledForItem\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InexactFraction\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidProof\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"InvalidRestrictedOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OfferCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OrderCriteriaResolverOutOfRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnresolvedConsiderationCriteria\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnresolvedOfferCriteria\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"NonceIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fulfiller\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct SpentItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct ReceivedItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"ConsiderationCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with a consideration item that has not been supplied.\"}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"CriteriaNotEnabledForItem()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with an item that does not expect a criteria to be      resolved.\"}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InexactFraction()\":[{\"details\":\"Revert with an error when attempting to apply a fraction as part of      a partial fill that does not divide the target amount cleanly.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidProof()\":[{\"details\":\"Revert with an error when providing a criteria resolver that      contains an invalid proof with respect to the given item and      chosen identifier.\"}],\"InvalidRestrictedOrder(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that specifies      a restricted submitter as its order type when not submitted by      either the offerrer or the order's zone or approved as valid by the      zone in question via a staticcall to `isValidOrder`.\",\"params\":{\"orderHash\":\"The order hash for the invalid restricted order.\"}}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OfferCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order with an offer item that has not been supplied.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderCriteriaResolverOutOfRange()\":[{\"details\":\"Revert with an error when providing a criteria resolver that refers      to an order that has not been supplied.\"}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"UnresolvedConsiderationCriteria()\":[{\"details\":\"Revert with an error if a consideration item still has unresolved      criteria after applying all criteria resolvers.\"}],\"UnresolvedOfferCriteria()\":[{\"details\":\"Revert with an error if an offer item still has unresolved criteria      after applying all criteria resolvers.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Derive and set hashes, reference chainId, and associated domain      separator during deployment.\",\"params\":{\"conduitController\":\"A contract that deploys conduits, or proxies                          that may optionally be used to transfer approved                          ERC20/721/1155 tokens.\"}}},\"title\":\"OrderFulfiller\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"OrderFulfiller contains logic related to order fulfillment where a         single order is being fulfilled and where basic order fulfillment is         not available as an option.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/OrderFulfiller.sol\":\"OrderFulfiller\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/conduit/lib/ConduitEnums.sol\":{\"keccak256\":\"0x3a9ecf77688f97d1b595be27b49fca3eac93e3f91160d79f0f0063c250fd8aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d596c21d5c7c7b47ca14908cbd7add9c06898c500cf47988446f843c0b28cf96\",\"dweb:/ipfs/QmZf12Y7XHwEWvjd2ZbaUFz4NXsWPFGJF6vNg1HECvXV5m\"]},\"seaport/contracts/conduit/lib/ConduitStructs.sol\":{\"keccak256\":\"0xfd2cec45327e9a6ebc02d7efb9daa1cfdabb26eb803e4b2e9b5e82340d92cfed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea7fa97afdf70ab91449e54f9a4f40e9da16292ab87b86e7e975e6d92f573dc3\",\"dweb:/ipfs/QmaRvo6P8YYPYNgcuP4HVV2wqDuVSB1t6AwMe8jMbcQY3F\"]},\"seaport/contracts/interfaces/AbridgedTokenInterfaces.sol\":{\"keccak256\":\"0x6b4937a65838012d673de632665960836d9b81ce4d90142c02797e4d17361838\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe115b5e3b76cab664b07b242b37221adb36606b114a212798809106c1e0faab\",\"dweb:/ipfs/QmQvEoKtVyYQC5pPoJogvT5yMtumoCffH1Q8BCGLfGzVAM\"]},\"seaport/contracts/interfaces/AmountDerivationErrors.sol\":{\"keccak256\":\"0x1cba27c1c5510ec735e47d5b8f98b50bcf5f96884f8b1a6367987fff7cdc2735\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3394e76c89cd4e558a5a25a8b71e31372ad690f62c45512be98b01cd40948d1b\",\"dweb:/ipfs/QmW2KQeNm7dRXHxYY5SzBVpZxFQ59CkNJqW2LXPdJx3hZX\"]},\"seaport/contracts/interfaces/ConduitControllerInterface.sol\":{\"keccak256\":\"0x86b7ceb6ff7ce653fa7d0d79eeb8b96ec57eedd35f8c87e9838dde6c23f317bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://453fa0365834a50956e513d306371bfb7019124150bf9afd1699599fe6f7852c\",\"dweb:/ipfs/QmXiqKzGdj2A4TsuHtFLTgdLPRFwasbWWibNBRP5cikJod\"]},\"seaport/contracts/interfaces/ConduitInterface.sol\":{\"keccak256\":\"0x6aec074141c2a66f0c06ff006b6b61f5ee3f988c1cee26a51f91e1616af194d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4cda8ec77a8261f3270087331f72443b5dcb686e93297fe9641b757dff108ae1\",\"dweb:/ipfs/QmPuWHXQWuhTUfbe3yB842nS1jRM2iLyJ16rVkDSyLCD2L\"]},\"seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"keccak256\":\"0xf0d0eda6b47217d0e7c2862fdd5d7857cb828f9e0fc52e2c37c6d2b454832a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://374d19e0d9e5ce76e10dce8bada5ee9d1adcd54898c0cba9099d0dd72a5bf996\",\"dweb:/ipfs/QmS49qk49jmkPuMzLbbop5s7eJxbfRzKokQXB2QJjfVPHT\"]},\"seaport/contracts/interfaces/CriteriaResolutionErrors.sol\":{\"keccak256\":\"0x3c63de591ecf89478714308c38953d72b88c7034f9b4ae4605f356a121df969e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a538b46b3ae2bb4331fed4f2936caece352db92694c69255e0a27dcf69243f79\",\"dweb:/ipfs/QmNr2LKznf9kCHL4di5GrjYto1RTD9JgKJv13WT6yqrgNn\"]},\"seaport/contracts/interfaces/EIP1271Interface.sol\":{\"keccak256\":\"0x3c60fdc09b2bc7cb3a615ca82ee1bd776813e75883515efd1e794fe8a3228f29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b17dda7065bffe0ba89c26d413e89c7e7e733f5e74cefba56799ebb57e60908\",\"dweb:/ipfs/QmT2DJBP4WvXYKyFusiSeJ7kbo4UVor4yKCkwEF237CqxZ\"]},\"seaport/contracts/interfaces/ReentrancyErrors.sol\":{\"keccak256\":\"0x9ab27fa5a68f55ad89072ea213c6f12979ae469041ca473d81f800dbdbe9bb48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0cc617da7254d981fd5970d16acc2a6f6fe2fe0bc3e2d0976f7c01a4893430ec\",\"dweb:/ipfs/QmbhqKxfhrfPAjp99LVspxopQG7Mb9L9xdSa38ujCxmvTJ\"]},\"seaport/contracts/interfaces/SignatureVerificationErrors.sol\":{\"keccak256\":\"0xb86f318b159c16087372e12b1e2c37c15fb745be1566bb03812e3814c15fb605\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff051f5cb44654096126c9ec72d1aaebf568e87a01da6200e969e673b8c3e4bf\",\"dweb:/ipfs/QmaPKx8ikPxRzYRubNraLhPdnGmXunZ6WGhzaed18oBi66\"]},\"seaport/contracts/interfaces/TokenTransferrerErrors.sol\":{\"keccak256\":\"0x128fbb0236de5e52c34876c61148e04c12289e92d6bce2270760905617a01b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ed114ea7bf9ce55065d853f0f705eb82cc840672e0c2ab899691ab5703d2e98\",\"dweb:/ipfs/QmXQsajetWBmU7tzjoFm5wyajRKrMMEGXFF7ZQxaH7ZceG\"]},\"seaport/contracts/interfaces/ZoneInteractionErrors.sol\":{\"keccak256\":\"0x7cc23125af35b317beac057bfbe34291f6b2f34f37f7d698f5bc7373b09b4480\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c56917ceed46a2e3029b7daf5331cd6e3a10e3174287c9d2a5cccb5fb6e1568\",\"dweb:/ipfs/QmRdPmvPm2F2hXq4QwXZyavjMis1RmY5XLMZLzM45Cv9hT\"]},\"seaport/contracts/interfaces/ZoneInterface.sol\":{\"keccak256\":\"0x5c5d749fd3de01bd89acf7cb08f11d041b3a600819e18b8a51cebd65285ced46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43788f6ae192a2063f185ccb87853576e4d90ea8f1df19d1334d2e9be62333f3\",\"dweb:/ipfs/QmXSXFPhSNsTv4kvBZbCHwzakoAxvvnvZPSmw7CXg2j1vu\"]},\"seaport/contracts/lib/AmountDeriver.sol\":{\"keccak256\":\"0x2f02fe1e7b22f5ca600416d37f6d3829b10dae8b752ea497ffc2a6a5420ad920\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://978d3a8d7aa0de2d32fde5d25b16f0d43d78d68e8ecefb2d1a80853a10eea806\",\"dweb:/ipfs/Qmam1XT3P6RPYH5tMfNyfm5i5jDrMWYqCArMar9FpDW6ji\"]},\"seaport/contracts/lib/Assertions.sol\":{\"keccak256\":\"0xb2ef1d902d0eefb7aaffc720354dd0352f95442178091f059d31ebe096894586\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6f121104190dd5e5a4e98fcbf024ad300c4b9704768fdb49d81f270c22a8067\",\"dweb:/ipfs/QmWKzhVq1itpqTfeiCELGb1jDcTnBdCwroHgGMzqDuYWN8\"]},\"seaport/contracts/lib/BasicOrderFulfiller.sol\":{\"keccak256\":\"0x6262ae2f6c6a9d6a0da8457160683db0d9868b2caf640b21a1896fece7ec677f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86d3aa0f9ef2940a1c0e12ebe9ae53e4945d488285b14ff930cf311fef4c2c69\",\"dweb:/ipfs/QmRugwrXvDJFXfoWNzSzk4EUQCve4hByRUnfJiusgQGLXb\"]},\"seaport/contracts/lib/ConsiderationBase.sol\":{\"keccak256\":\"0x1015a0bb6fff27278ceec2f76cbf0c775bfb3e8d03cafe8d3549e252e9563ba2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f7d3b48069268df59a77293a7cdc232df35c5b1c8b1974b422a850bedb875f6\",\"dweb:/ipfs/QmSMMnXqsUEWuC1u7BF6coTXK63BXaQYvWqX69doaatKw8\"]},\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]},\"seaport/contracts/lib/CriteriaResolution.sol\":{\"keccak256\":\"0xf65cfc83ff0764d82039c959a9b3bbd09069228882467ab491de64fbcb318a89\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5d8cc2ab576be995caf53711b41872f07a8e80d86402380053db8d886924ea06\",\"dweb:/ipfs/QmWi4cS9b1UHX6PJvu59kLEdhp3Gi43crujzfgHNFCc831\"]},\"seaport/contracts/lib/Executor.sol\":{\"keccak256\":\"0x72b4591bebbeb723ad41e9dabd931e4a969a8cff3e6a9b1a82dd2299391834e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3030a05a77aa4375961371f8508327d0a7f102c9b52319a0263a15a498155d70\",\"dweb:/ipfs/QmWr6WFUwJsszCBvMhLUPAz4tz3jTbJzABQwtfRUC5cKzv\"]},\"seaport/contracts/lib/GettersAndDerivers.sol\":{\"keccak256\":\"0xb9d0cf2a84567b6b70e1ddd9e3450dddf8139e5396bcac24c42f46db16228efa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99767431817fd6b157bc199784ca3f3bc2cf024a332ae8e2a5eb7e3db0f2b47d\",\"dweb:/ipfs/QmPWaJet2TPiWc7xEo7QqVpctaLvXPZFep8R8Vi4ZRzzCw\"]},\"seaport/contracts/lib/LowLevelHelpers.sol\":{\"keccak256\":\"0x83085de63b870cfb3940c68d96a40b2cf9afb7280c1afa3034d1c55c80444a94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9ba49a7318a517e836811dfc67989e9f14959a7cd55220853af6b6273309543\",\"dweb:/ipfs/QmUAQr4SReMunUvwBxKPdd8XLPy5GKMEEhPwpD32UYn3kx\"]},\"seaport/contracts/lib/NonceManager.sol\":{\"keccak256\":\"0xe8b6e40830e216912ce483e867151e84cc0b290404220e1ed5fbb69821161f8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4ef49cbc0b5385b64c1f8c9d5cf572dff35ec291970714ef11520de2c01ab9c\",\"dweb:/ipfs/QmfJoNCtAHUYsidmUaiMBP8wMzUYCtg33G8nUqyME5AftL\"]},\"seaport/contracts/lib/OrderFulfiller.sol\":{\"keccak256\":\"0x6710eeff2b52320a330b7b2fbc38d18f58ef1ab8509d818ed8469e8859ef1969\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b6991481f10696e4f381c95adc510cfba3d5c973c65eb15b49643282d4059972\",\"dweb:/ipfs/QmPuVVnTxkaY9opZmxsdJpPEogpQccZXG378NFZ6tcJjVm\"]},\"seaport/contracts/lib/OrderValidator.sol\":{\"keccak256\":\"0xeb3e16175a6545c6f320eecc2c2d2e33cf27f30be2e12ae86ad67429b0e14061\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924da093b3d43f0603a8615b6ad2b575d4efe694f0381e3963461159c13fc1ba\",\"dweb:/ipfs/QmVwuoYmZU3BZx8LVfeDdd51geQyS745KLPKx7LuNQiPUz\"]},\"seaport/contracts/lib/ReentrancyGuard.sol\":{\"keccak256\":\"0xec219fb657ce8400835d8d1ff87716247c5fdde51bca31fddf19415abad773db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eca390f7b8fbccc703ad22edd4f35fa896de59912f21d9471d51ef83b961d3c5\",\"dweb:/ipfs/QmXyxcfzgD4SaTtgqGjUjxK4tb76NiPcooMkL9c11yhm2L\"]},\"seaport/contracts/lib/SignatureVerification.sol\":{\"keccak256\":\"0x5833c9bf1ab9c8fbfeb723ff500722e269a1c05b0fe14d8a837e40c88138f4fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0af100e71a40bc871019c7ebd5c786007deacbf58ee98bce204c43811c726dd\",\"dweb:/ipfs/QmSjdy3wSypHCxCdFGZxLFCCRJf7cfVn6MM75KUbj2y3jN\"]},\"seaport/contracts/lib/TokenTransferrer.sol\":{\"keccak256\":\"0xe392cea22226f1b55e35b0295d0cfa156c7764f2509fa416f3946ca748c9605a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddf9b20512bc36f5bbe25f56729aa31a139b1560dfc14beb42d5d09ae8d44b48\",\"dweb:/ipfs/QmSN9GdbtqBcobRSd8kSCxn2GScZhiiAbuxk5djmkatKRD\"]},\"seaport/contracts/lib/TokenTransferrerConstants.sol\":{\"keccak256\":\"0x5ecc368039fd81cc27788a664538ab63f1b5deb9caa8839d9499fadfd1d465cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0e821e5fd5a31cdcaaf334203dd58d80489c1aed2fd2a91a9683a9e342c9653\",\"dweb:/ipfs/QmRKkHF5aLKJ8KrMmMoV9UsCtgtrCQYgeptGK4jKVGM68j\"]},\"seaport/contracts/lib/Verifiers.sol\":{\"keccak256\":\"0x69755b486d816164270d1b37c187ea7a3ce262e9d31153a88279fe6d8cb76cd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://16dc060d4321a17cdcbf1125b076bb9bbf75086a57d7c6eeca7e9845fcd6d76e\",\"dweb:/ipfs/QmSnF21ffxHnfiYRVVRopn2EcJagghQZTTcdDvMoiR9fsM\"]},\"seaport/contracts/lib/ZoneInteraction.sol\":{\"keccak256\":\"0xbabb8f6c0659327e9ae9711d63c0d81f49789c32d1987170d772dac5bd9c0b48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ee495283ba0709d674062d80a6bcba9f54eed8d132283e500980fa63ac5dc217\",\"dweb:/ipfs/QmWQegpmWwk6dNxBpmXpVmPAq6LtQhDKUja9ewHeMsA1rM\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/OrderValidator.sol": {
        "OrderValidator": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduitController",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "BadContractSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "BadFraction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BadReturnValueFromERC20OnTransfer",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                }
              ],
              "name": "BadSignatureV",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "orderIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "considerationIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "shortfallAmount",
                  "type": "uint256"
                }
              ],
              "name": "ConsiderationNotMet",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "identifiers",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "ERC1155BatchTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "EtherTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InsufficientEtherSupplied",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidBasicOrderParameterEncoding",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidCallToConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidCanceller",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidERC721TransferAmount",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "InvalidMsgValue",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "InvalidRestrictedOrder",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSigner",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidTime",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingItemAmount",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingOriginalConsiderationItems",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "NoContract",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoReentrantCalls",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoSpecifiedOrdersAvailable",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderAlreadyFilled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderIsCancelled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderPartiallyFilled",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "PartialFillsNotEnabledForOrder",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "identifier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenTransferGenericFailure",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                }
              ],
              "name": "NonceIncremented",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderCancelled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fulfiller",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct SpentItem[]",
                  "name": "offer",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address payable",
                      "name": "recipient",
                      "type": "address"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct ReceivedItem[]",
                  "name": "consideration",
                  "type": "tuple[]"
                }
              ],
              "name": "OrderFulfilled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderValidated",
              "type": "event"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_2519": {
                  "entryPoint": null,
                  "id": 2519,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_3225": {
                  "entryPoint": null,
                  "id": 3225,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_4482": {
                  "entryPoint": null,
                  "id": 4482,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_5345": {
                  "entryPoint": null,
                  "id": 5345,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_7098": {
                  "entryPoint": null,
                  "id": 7098,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_7733": {
                  "entryPoint": null,
                  "id": 7733,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_8248": {
                  "entryPoint": null,
                  "id": 8248,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_deriveDomainSeparator_3247": {
                  "entryPoint": null,
                  "id": 3247,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_deriveTypehashes_3383": {
                  "entryPoint": 285,
                  "id": 3383,
                  "parameterSlots": 0,
                  "returnSlots": 6
                },
                "@_nameString_3264": {
                  "entryPoint": null,
                  "id": 3264,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1455,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_bytes32_fromMemory": {
                  "entryPoint": 1503,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_bytes": {
                  "entryPoint": 1539,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_59d7": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_cfcd": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1598,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7686:45",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:45",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:45",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:45",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:45"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:45",
                            "type": ""
                          }
                        ],
                        "src": "14:290:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "407:147:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "453:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "462:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "465:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "455:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "455:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "455:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "428:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "437:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "424:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "424:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "449:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "420:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "420:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "417:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "478:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "494:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "488:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "488:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "478:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "513:35:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "533:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "544:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "529:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "529:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:25:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "365:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "376:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "388:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "396:6:45",
                            "type": ""
                          }
                        ],
                        "src": "309:245:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "614:59:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "631:3:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "636:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "624:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "624:16:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "624:16:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "649:18:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "660:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "665:1:45",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "656:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "656:11:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "649:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_59d7",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "598:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "606:3:45",
                            "type": ""
                          }
                        ],
                        "src": "559:114:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1476:365:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1493:3:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1498:12:45",
                                    "type": "",
                                    "value": "OfferItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1486:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1486:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1486:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1531:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1536:2:45",
                                        "type": "",
                                        "value": "10"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1527:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1527:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1541:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1520:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1520:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1520:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1579:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1584:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1575:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1575:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1589:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1568:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1568:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1568:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1626:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1631:2:45",
                                        "type": "",
                                        "value": "39"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1622:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1622:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1636:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1615:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1615:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1615:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1688:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1693:2:45",
                                        "type": "",
                                        "value": "68"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1684:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1684:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1698:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1677:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1677:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1677:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1741:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1746:2:45",
                                        "type": "",
                                        "value": "88"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1737:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1737:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1751:19:45",
                                    "type": "",
                                    "value": "uint256 endAmount"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1730:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1730:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1730:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1791:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1796:3:45",
                                        "type": "",
                                        "value": "105"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1787:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1787:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1802:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1780:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1780:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1780:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1815:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1826:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1831:3:45",
                                    "type": "",
                                    "value": "106"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1822:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1822:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1815:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1460:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1468:3:45",
                            "type": ""
                          }
                        ],
                        "src": "678:1163:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2745:425:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2762:3:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2767:20:45",
                                    "type": "",
                                    "value": "ConsiderationItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2755:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2755:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2755:33:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2808:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2813:2:45",
                                        "type": "",
                                        "value": "18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2804:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2804:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2818:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2797:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2797:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2797:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2856:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2861:2:45",
                                        "type": "",
                                        "value": "33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2852:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2852:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2866:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2845:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2845:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2845:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2903:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2908:2:45",
                                        "type": "",
                                        "value": "47"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2899:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2899:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2913:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2892:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2892:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2892:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2965:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2970:2:45",
                                        "type": "",
                                        "value": "76"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2961:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2961:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2975:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2954:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2954:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2954:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3018:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3023:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3014:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3014:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3028:20:45",
                                    "type": "",
                                    "value": "uint256 endAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3007:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3007:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3007:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3069:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3074:3:45",
                                        "type": "",
                                        "value": "114"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3065:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3065:13:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320726563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3080:19:45",
                                    "type": "",
                                    "value": "address recipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3058:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3058:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3058:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3120:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3125:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3116:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3116:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3131:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3109:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3109:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3109:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3144:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3155:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3160:3:45",
                                    "type": "",
                                    "value": "132"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3151:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3151:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3144:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2729:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2737:3:45",
                            "type": ""
                          }
                        ],
                        "src": "1846:1324:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3230:78:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3247:3:45"
                                  },
                                  {
                                    "hexValue": "6279746573333220636f6e647569744b65792c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3252:21:45",
                                    "type": "",
                                    "value": "bytes32 conduitKey,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3240:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3240:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3240:34:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3283:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3294:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3299:2:45",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3290:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3290:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_cfcd",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3214:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3222:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3175:133:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3363:72:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3380:3:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206e6f6e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3385:15:45",
                                    "type": "",
                                    "value": "uint256 nonce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3373:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3373:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3373:28:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3410:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3421:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3426:2:45",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3417:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3417:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3410:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3347:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3355:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3313:122:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4844:659:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4861:3:45"
                                  },
                                  {
                                    "hexValue": "4f72646572436f6d706f6e656e747328",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4866:18:45",
                                    "type": "",
                                    "value": "OrderComponents("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4854:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4854:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4854:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4905:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4910:2:45",
                                        "type": "",
                                        "value": "16"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4901:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4901:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373206f6666657265722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4915:18:45",
                                    "type": "",
                                    "value": "address offerer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4894:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4894:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4894:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4954:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4959:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4950:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4950:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373207a6f6e652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4964:15:45",
                                    "type": "",
                                    "value": "address zone,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4943:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4943:37:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4943:37:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5000:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5005:2:45",
                                        "type": "",
                                        "value": "45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4996:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4996:12:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d5b5d206f666665722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5010:20:45",
                                    "type": "",
                                    "value": "OfferItem[] offer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4989:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4989:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4989:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5051:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5056:2:45",
                                        "type": "",
                                        "value": "63"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5047:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5047:12:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5061:34:45",
                                    "type": "",
                                    "value": "ConsiderationItem[] consideratio"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5040:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5040:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5040:56:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5116:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5121:2:45",
                                        "type": "",
                                        "value": "95"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5112:12:45"
                                  },
                                  {
                                    "hexValue": "6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5126:4:45",
                                    "type": "",
                                    "value": "n,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5105:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5105:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5105:26:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5151:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5156:2:45",
                                        "type": "",
                                        "value": "97"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5147:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5147:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206f72646572547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5161:18:45",
                                    "type": "",
                                    "value": "uint8 orderType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5140:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5140:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5140:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5200:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5205:3:45",
                                        "type": "",
                                        "value": "113"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5196:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5196:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620737461727454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5211:20:45",
                                    "type": "",
                                    "value": "uint256 startTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5189:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5189:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5189:43:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5252:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5257:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5248:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5248:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e6454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5263:18:45",
                                    "type": "",
                                    "value": "uint256 endTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5241:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5241:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5241:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5302:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5307:3:45",
                                        "type": "",
                                        "value": "147"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5298:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5298:13:45"
                                  },
                                  {
                                    "hexValue": "62797465733332207a6f6e65486173682c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5313:19:45",
                                    "type": "",
                                    "value": "bytes32 zoneHash,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5291:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5291:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5291:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5353:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5358:3:45",
                                        "type": "",
                                        "value": "164"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5349:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5349:13:45"
                                  },
                                  {
                                    "hexValue": "75696e743235362073616c742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5364:15:45",
                                    "type": "",
                                    "value": "uint256 salt,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5342:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5342:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5342:38:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5389:108:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "5485:3:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5490:3:45",
                                                "type": "",
                                                "value": "177"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5481:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5481:13:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_stringliteral_cfcd",
                                          "nodeType": "YulIdentifier",
                                          "src": "5451:29:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5451:44:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_stringliteral",
                                      "nodeType": "YulIdentifier",
                                      "src": "5426:24:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5426:70:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_stringliteral_59d7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5396:29:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5396:101:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5389:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4828:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4836:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3440:2063:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6205:306:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6222:3:45"
                                  },
                                  {
                                    "hexValue": "454950373132446f6d61696e28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6227:15:45",
                                    "type": "",
                                    "value": "EIP712Domain("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6215:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6215:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6215:28:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6263:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6268:2:45",
                                        "type": "",
                                        "value": "13"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6259:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6259:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e67206e616d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6273:14:45",
                                    "type": "",
                                    "value": "string name,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6252:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6252:36:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6252:36:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6308:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6313:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6304:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6304:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e672076657273696f6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6318:17:45",
                                    "type": "",
                                    "value": "string version,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6297:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6297:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6297:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6356:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6361:2:45",
                                        "type": "",
                                        "value": "40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6352:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6352:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620636861696e49642c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6366:18:45",
                                    "type": "",
                                    "value": "uint256 chainId,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6345:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6345:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6345:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6405:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6410:2:45",
                                        "type": "",
                                        "value": "56"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6401:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6401:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320766572696679696e67436f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6415:27:45",
                                    "type": "",
                                    "value": "address verifyingContract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6394:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6394:49:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6394:49:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6463:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6468:2:45",
                                        "type": "",
                                        "value": "81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6459:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6459:12:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6473:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6452:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6452:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6452:25:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6486:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6497:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6502:2:45",
                                    "type": "",
                                    "value": "82"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6493:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6493:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6486:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6189:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6197:3:45",
                            "type": ""
                          }
                        ],
                        "src": "5508:1003:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6565:287:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6575:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6595:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6589:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6589:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6579:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6610:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6619:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6614:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6681:76:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6706:3:45"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "6711:1:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6702:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6702:11:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6729:5:45"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6736:1:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6725:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6725:13:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "6740:4:45",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6721:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6721:24:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6715:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6715:31:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6695:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6695:52:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6695:52:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6640:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6643:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6637:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6637:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6651:21:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6653:17:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6662:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6665:4:45",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6658:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6658:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6653:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6633:3:45",
                                "statements": []
                              },
                              "src": "6629:128:45"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6783:31:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6796:3:45"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "6801:6:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6792:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6792:16:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6810:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6785:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6785:27:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6785:27:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6772:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6775:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6769:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6769:13:45"
                              },
                              "nodeType": "YulIf",
                              "src": "6766:48:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6823:23:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6834:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6839:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6830:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6830:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6823:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6542:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6549:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6557:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6516:336:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7086:104:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7096:88:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7120:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7145:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "7170:6:45"
                                          },
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "7178:3:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_bytes",
                                          "nodeType": "YulIdentifier",
                                          "src": "7153:16:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7153:29:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "7128:16:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7128:55:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "7103:16:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7103:81:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7096:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7046:3:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7051:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7059:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7067:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7078:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6857:333:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7408:276:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7418:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7430:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7441:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7426:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7426:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7418:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7461:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7472:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7454:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7454:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7454:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7499:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7510:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7495:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7495:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7515:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7488:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7488:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7488:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7542:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7553:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7538:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7538:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7558:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7531:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7531:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7531:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7585:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7596:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7581:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7581:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7601:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7574:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7574:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7574:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7628:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7639:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7624:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7624:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7649:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7665:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7670:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "7661:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7661:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7674:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "7657:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7657:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7645:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7645:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7617:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7617:61:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7617:61:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7345:9:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7356:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7364:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7372:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7380:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7388:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7399:4:45",
                            "type": ""
                          }
                        ],
                        "src": "7195:489:45"
                      }
                    ]
                  },
                  "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 abi_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OfferItem(\")\n        mstore(add(pos, 10), \"uint8 itemType,\")\n        mstore(add(pos, 25), \"address token,\")\n        mstore(add(pos, 39), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 68), \"uint256 startAmount,\")\n        mstore(add(pos, 88), \"uint256 endAmount\")\n        mstore(add(pos, 105), \")\")\n        end := add(pos, 106)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"ConsiderationItem(\")\n        mstore(add(pos, 18), \"uint8 itemType,\")\n        mstore(add(pos, 33), \"address token,\")\n        mstore(add(pos, 47), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 76), \"uint256 startAmount,\")\n        mstore(add(pos, 96), \"uint256 endAmount,\")\n        mstore(add(pos, 114), \"address recipient\")\n        mstore(add(pos, 131), \")\")\n        end := add(pos, 132)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral(pos) -> end\n    {\n        mstore(pos, \"uint256 nonce\")\n        end := add(pos, 13)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address zone,\")\n        mstore(add(pos, 45), \"OfferItem[] offer,\")\n        mstore(add(pos, 63), \"ConsiderationItem[] consideratio\")\n        mstore(add(pos, 95), \"n,\")\n        mstore(add(pos, 97), \"uint8 orderType,\")\n        mstore(add(pos, 113), \"uint256 startTime,\")\n        mstore(add(pos, 131), \"uint256 endTime,\")\n        mstore(add(pos, 147), \"bytes32 zoneHash,\")\n        mstore(add(pos, 164), \"uint256 salt,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral(abi_encode_stringliteral_cfcd(add(pos, 177))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value, i), 0x20)))\n        }\n        if gt(i, length) { mstore(add(pos, length), 0) }\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        end := abi_encode_bytes(value2, abi_encode_bytes(value1, abi_encode_bytes(value0, pos)))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}",
                  "id": 45,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101c060405234801561001157600080fd5b506040516106ff3803806106ff833981016040819052610030916105af565b808080808061003d61011d565b610120526101005260e05260c081815260a0838152608085815246610140819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610160526001600160a01b03811661018081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010791906105df565b506101a052505060016000555061066592505050565b6000808080808061014e60408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260018152603160f81b90840152519097507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6965060009161025091016909ecccccae492e8cada560b31b81526e1d5a5b9d0e081a5d195b551e5c194b608a1b600a8201526d1859191c995cdcc81d1bdad95b8b60921b60198201527f75696e74323536206964656e7469666965724f7243726974657269612c00000060278201527f75696e74323536207374617274416d6f756e742c0000000000000000000000006044820152701d5a5b9d0c8d4d88195b99105b5bdd5b9d607a1b6058820152602960f81b6069820152606a0190565b60408051601f1981840301815282825271086dedce6d2c8cae4c2e8d2dedc92e8cada560731b60208401526e1d5a5b9d0e081a5d195b551e5c194b608a1b60328401526d1859191c995cdcc81d1bdad95b8b60921b60418401527f75696e74323536206964656e7469666965724f7243726974657269612c000000604f8401527f75696e74323536207374617274416d6f756e742c000000000000000000000000606c840152711d5a5b9d0c8d4d88195b99105b5bdd5b9d0b60721b6080840152701859191c995cdcc81c9958da5c1a595b9d607a1b6092840152602960f81b60a384018190528251808503608401815260a485019093526f09ee4c8cae486dedae0dedccadce8e6560831b60c48501526f1859191c995cdcc81bd999995c995c8b60821b60d48501526c1859191c995cdcc81e9bdb994b609a1b60e48501527113d999995c925d195b56d7481bd999995c8b60721b60f18501527f436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f610103850152611b8b60f21b6101238501526f1d5a5b9d0e081bdc99195c951e5c194b60821b610125850152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b6101358501526f1d5a5b9d0c8d4d88195b99151a5b594b60821b61014785015270189e5d195ccccc881e9bdb9952185cda0b607a1b6101578501526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101688501527f6279746573333220636f6e647569744b65792c000000000000000000000000006101758501526c75696e74323536206e6f6e636560981b6101888501526101958401529250906000906101960160408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b6071830152915060720160408051601f19818403018152908290528051602091820120855186830120855186840120919a509850965061058c918391859187910161063e565b604051602081830303815290604052805190602001209350505050909192939495565b6000602082840312156105c157600080fd5b81516001600160a01b03811681146105d857600080fd5b9392505050565b600080604083850312156105f257600080fd5b505080516020909101519092909150565b6000815160005b81811015610624576020818501810151868301520161060a565b81811115610633576000828601525b509290920192915050565b600061065c6106566106508488610603565b86610603565b84610603565b95945050505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051603f6106c060003960005050600050506000505060005050600050506000505060005050600050506000505060005050603f6000f3fe6080604052600080fdfea26469706673582212206f22dc50bfa309858038231889518769d8c8c0325789dcc510aa881306267a1c64736f6c634300080d0033",
              "opcodes": "PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x6FF CODESIZE SUB DUP1 PUSH2 0x6FF DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0x5AF JUMP JUMPDEST DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x3D PUSH2 0x11D JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH2 0x100 MSTORE PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x160 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x180 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE3 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 0x107 SWAP2 SWAP1 PUSH2 0x5DF JUMP JUMPDEST POP PUSH2 0x1A0 MSTORE POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP PUSH2 0x665 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x14E PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP8 POP PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP7 POP PUSH1 0x0 SWAP2 PUSH2 0x250 SWAP2 ADD PUSH10 0x9ECCCCCAE492E8CADA5 PUSH1 0xB3 SHL DUP2 MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0xA DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x19 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x27 DUP3 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D PUSH1 0x7A SHL PUSH1 0x58 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x69 DUP3 ADD MSTORE PUSH1 0x6A ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE PUSH18 0x86DEDCE6D2C8CAE4C2E8D2DEDC92E8CADA5 PUSH1 0x73 SHL PUSH1 0x20 DUP5 ADD MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0x32 DUP5 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x41 DUP5 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x4F DUP5 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x6C DUP5 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D0B PUSH1 0x72 SHL PUSH1 0x80 DUP5 ADD MSTORE PUSH17 0x1859191C995CDCC81C9958DA5C1A595B9D PUSH1 0x7A SHL PUSH1 0x92 DUP5 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0xA3 DUP5 ADD DUP2 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB PUSH1 0x84 ADD DUP2 MSTORE PUSH1 0xA4 DUP6 ADD SWAP1 SWAP4 MSTORE PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL PUSH1 0xC4 DUP6 ADD MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0xD4 DUP6 ADD MSTORE PUSH13 0x1859191C995CDCC81E9BDB994B PUSH1 0x9A SHL PUSH1 0xE4 DUP6 ADD MSTORE PUSH18 0x13D999995C925D195B56D7481BD999995C8B PUSH1 0x72 SHL PUSH1 0xF1 DUP6 ADD MSTORE PUSH32 0x436F6E73696465726174696F6E4974656D5B5D20636F6E73696465726174696F PUSH2 0x103 DUP6 ADD MSTORE PUSH2 0x1B8B PUSH1 0xF2 SHL PUSH2 0x123 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0E081BDC99195C951E5C194B PUSH1 0x82 SHL PUSH2 0x125 DUP6 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH2 0x135 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH2 0x147 DUP6 ADD MSTORE PUSH17 0x189E5D195CCCCC881E9BDB9952185CDA0B PUSH1 0x7A SHL PUSH2 0x157 DUP6 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x168 DUP6 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x175 DUP6 ADD MSTORE PUSH13 0x75696E74323536206E6F6E6365 PUSH1 0x98 SHL PUSH2 0x188 DUP6 ADD MSTORE PUSH2 0x195 DUP5 ADD MSTORE SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x196 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 DUP6 MLOAD DUP7 DUP4 ADD KECCAK256 DUP6 MLOAD DUP7 DUP5 ADD KECCAK256 SWAP2 SWAP11 POP SWAP9 POP SWAP7 POP PUSH2 0x58C SWAP2 DUP4 SWAP2 DUP6 SWAP2 DUP8 SWAP2 ADD PUSH2 0x63E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP POP POP POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x624 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0x60A JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x633 JUMPI PUSH1 0x0 DUP3 DUP7 ADD MSTORE JUMPDEST POP SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x65C PUSH2 0x656 PUSH2 0x650 DUP5 DUP9 PUSH2 0x603 JUMP JUMPDEST DUP7 PUSH2 0x603 JUMP JUMPDEST DUP5 PUSH2 0x603 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH1 0x3F PUSH2 0x6C0 PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x3F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH16 0x22DC50BFA309858038231889518769D8 0xC8 0xC0 ORIGIN JUMPI DUP10 0xDC 0xC5 LT 0xAA DUP9 SGT MOD 0x26 PUSH27 0x1C64736F6C634300080D0033000000000000000000000000000000 ",
              "sourceMap": "555:17805:35:-:0;;;1105:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1153:17;;;;;1967:19:23;:17;:19::i;:::-;1760:226;;;;;;;;;;;;;;-1:-1:-1;1760:226:23;;;2087:13;2075:25;;;;-1:-1:-1;2761:187:23;;-1:-1:-1;2761:187:23;;;7454:25:45;;;;7495:18;;;7488:34;;;;-1:-1:-1;7538:18:45;;7531:34;;;;7581:18;;;7574:34;2929:4:23;7624:19:45;;;7617:61;2761:187:23;;;;;;;;;;7426:19:45;;2761:187:23;;;2738:220;;;;;2110:44;;-1:-1:-1;;;;;2213:67:23;;;;;;2420:42;;;-1:-1:-1;;;2420:42:23;;;;:40;;:42;;;;;;;;;;;;;2213:67;2420:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2372:100:23;;-1:-1:-1;;2287:1:24;657:16:36;:31;-1:-1:-1;555:17805:35;;-1:-1:-1;;;555:17805:35;4735:3021:23;4824:16;;;;;;5140:13;3927:22;;;;;;;;;;;;-1:-1:-1;;;3927:22:23;;;;;3804:152;5140:13;5124:31;;;;;;;5252:10;;;;;;;;;;;-1:-1:-1;;;5252:10:23;;;;5384:264;5124:31;;-1:-1:-1;5242:21:23;;-1:-1:-1;;;5384:264:23;;;-1:-1:-1;;;1486:25:45;;-1:-1:-1;;;1536:2:45;1527:12;;1520:39;-1:-1:-1;;;1584:2:45;1575:12;;1568:38;1636:31;1631:2;1622:12;;1615:53;1698:22;1693:2;1684:12;;1677:44;-1:-1:-1;;;1746:2:45;1737:12;;1730:41;-1:-1:-1;;;1796:3:45;1787:13;;1780:26;1831:3;1822:13;;678:1163;5384:264:23;;;;-1:-1:-1;;5384:264:23;;;;;;;;;-1:-1:-1;;;5384:264:23;5785:310;;2755:33:45;-1:-1:-1;;;2804:12:45;;;2797:39;-1:-1:-1;;;2852:12:45;;;2845:38;2913:31;2899:12;;;2892:53;2975:22;2961:12;;;2954:44;-1:-1:-1;;;3014:12:45;;;3007:42;-1:-1:-1;;;3065:13:45;;;3058:42;-1:-1:-1;;;3116:13:45;;;3109:26;;;5785:310:23;;;;;;;;;3151:13:45;;;5785:310:23;;;-1:-1:-1;;;6260:488:23;;;4854:31:45;-1:-1:-1;;;4901:12:45;;;4894:40;-1:-1:-1;;;4950:12:45;;;4943:37;-1:-1:-1;;;4996:12:45;;;4989:42;5061:34;5047:12;;;5040:56;-1:-1:-1;;;5112:12:45;;;5105:26;-1:-1:-1;;;5147:12:45;;;5140:40;-1:-1:-1;;;5196:13:45;;;5189:43;-1:-1:-1;;;5248:13:45;;;5241:41;-1:-1:-1;;;5298:13:45;;;5291:42;-1:-1:-1;;;5349:13:45;;;5342:38;3252:21;5481:13;;;3240:34;-1:-1:-1;;;3290:12:45;;;3373:28;3417:12;;;624:16;5384:264:23;-1:-1:-1;5785:310:23;-1:-1:-1;;656:11:45;;6260:488:23;;;-1:-1:-1;;6260:488:23;;;;;;;;;;-1:-1:-1;;;6260:488:23;6893:248;;6215:28:45;-1:-1:-1;;;6259:12:45;;;6252:36;-1:-1:-1;;;6304:12:45;;;6297:39;-1:-1:-1;;;6352:12:45;;;6345:40;6415:27;6401:12;;;6394:49;-1:-1:-1;;;6459:12:45;;;6452:25;6260:488:23;-1:-1:-1;6493:12:45;;6893:248:23;;;-1:-1:-1;;6893:248:23;;;;;;;;;;6870:281;;6893:248;6870:281;;;;7261:30;;;;;;7409:38;;;;;;6870:281;;-1:-1:-1;7261:30:23;-1:-1:-1;7409:38:23;-1:-1:-1;7577:162:23;;7611:32;;7419:27;;7271:19;;7577:162;;:::i;:::-;;;;;;;;;;;;;7554:195;;;;;;7538:211;;5051:2705;;;4735:3021;;;;;;:::o;14:290:45:-;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:45;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:45:o;309:245::-;388:6;396;449:2;437:9;428:7;424:23;420:32;417:52;;;465:1;462;455:12;417:52;-1:-1:-1;;488:16:45;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:45:o;6516:336::-;6557:3;6595:5;6589:12;6619:1;6629:128;6643:6;6640:1;6637:13;6629:128;;;6740:4;6725:13;;;6721:24;;6715:31;6702:11;;;6695:52;6658:12;6629:128;;;6775:6;6772:1;6769:13;6766:48;;;6810:1;6801:6;6796:3;6792:16;6785:27;6766:48;-1:-1:-1;6830:16:45;;;;;6516:336;-1:-1:-1;;6516:336:45:o;6857:333::-;7078:3;7103:81;7128:55;7153:29;7178:3;7170:6;7153:29;:::i;:::-;7145:6;7128:55;:::i;:::-;7120:6;7103:81;:::i;:::-;7096:88;6857:333;-1:-1:-1;;;;;6857:333:45:o;7195:489::-;555:17805:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea26469706673582212206f22dc50bfa309858038231889518769d8c8c0325789dcc510aa881306267a1c64736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH16 0x22DC50BFA309858038231889518769D8 0xC8 0xC0 ORIGIN JUMPI DUP10 0xDC 0xC5 LT 0xAA DUP9 SGT MOD 0x26 PUSH27 0x1C64736F6C634300080D0033000000000000000000000000000000 ",
              "sourceMap": "555:17805:35:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"InvalidRestrictedOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"NonceIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fulfiller\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct SpentItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct ReceivedItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidRestrictedOrder(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that specifies      a restricted submitter as its order type when not submitted by      either the offerrer or the order's zone or approved as valid by the      zone in question via a staticcall to `isValidOrder`.\",\"params\":{\"orderHash\":\"The order hash for the invalid restricted order.\"}}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Derive and set hashes, reference chainId, and associated domain      separator during deployment.\",\"params\":{\"conduitController\":\"A contract that deploys conduits, or proxies                          that may optionally be used to transfer approved                          ERC20/721/1155 tokens.\"}}},\"title\":\"OrderValidator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"OrderValidator contains functionality related to validating orders         and updating their status.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/OrderValidator.sol\":\"OrderValidator\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/conduit/lib/ConduitEnums.sol\":{\"keccak256\":\"0x3a9ecf77688f97d1b595be27b49fca3eac93e3f91160d79f0f0063c250fd8aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d596c21d5c7c7b47ca14908cbd7add9c06898c500cf47988446f843c0b28cf96\",\"dweb:/ipfs/QmZf12Y7XHwEWvjd2ZbaUFz4NXsWPFGJF6vNg1HECvXV5m\"]},\"seaport/contracts/conduit/lib/ConduitStructs.sol\":{\"keccak256\":\"0xfd2cec45327e9a6ebc02d7efb9daa1cfdabb26eb803e4b2e9b5e82340d92cfed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea7fa97afdf70ab91449e54f9a4f40e9da16292ab87b86e7e975e6d92f573dc3\",\"dweb:/ipfs/QmaRvo6P8YYPYNgcuP4HVV2wqDuVSB1t6AwMe8jMbcQY3F\"]},\"seaport/contracts/interfaces/AbridgedTokenInterfaces.sol\":{\"keccak256\":\"0x6b4937a65838012d673de632665960836d9b81ce4d90142c02797e4d17361838\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe115b5e3b76cab664b07b242b37221adb36606b114a212798809106c1e0faab\",\"dweb:/ipfs/QmQvEoKtVyYQC5pPoJogvT5yMtumoCffH1Q8BCGLfGzVAM\"]},\"seaport/contracts/interfaces/ConduitControllerInterface.sol\":{\"keccak256\":\"0x86b7ceb6ff7ce653fa7d0d79eeb8b96ec57eedd35f8c87e9838dde6c23f317bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://453fa0365834a50956e513d306371bfb7019124150bf9afd1699599fe6f7852c\",\"dweb:/ipfs/QmXiqKzGdj2A4TsuHtFLTgdLPRFwasbWWibNBRP5cikJod\"]},\"seaport/contracts/interfaces/ConduitInterface.sol\":{\"keccak256\":\"0x6aec074141c2a66f0c06ff006b6b61f5ee3f988c1cee26a51f91e1616af194d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4cda8ec77a8261f3270087331f72443b5dcb686e93297fe9641b757dff108ae1\",\"dweb:/ipfs/QmPuWHXQWuhTUfbe3yB842nS1jRM2iLyJ16rVkDSyLCD2L\"]},\"seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"keccak256\":\"0xf0d0eda6b47217d0e7c2862fdd5d7857cb828f9e0fc52e2c37c6d2b454832a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://374d19e0d9e5ce76e10dce8bada5ee9d1adcd54898c0cba9099d0dd72a5bf996\",\"dweb:/ipfs/QmS49qk49jmkPuMzLbbop5s7eJxbfRzKokQXB2QJjfVPHT\"]},\"seaport/contracts/interfaces/EIP1271Interface.sol\":{\"keccak256\":\"0x3c60fdc09b2bc7cb3a615ca82ee1bd776813e75883515efd1e794fe8a3228f29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b17dda7065bffe0ba89c26d413e89c7e7e733f5e74cefba56799ebb57e60908\",\"dweb:/ipfs/QmT2DJBP4WvXYKyFusiSeJ7kbo4UVor4yKCkwEF237CqxZ\"]},\"seaport/contracts/interfaces/ReentrancyErrors.sol\":{\"keccak256\":\"0x9ab27fa5a68f55ad89072ea213c6f12979ae469041ca473d81f800dbdbe9bb48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0cc617da7254d981fd5970d16acc2a6f6fe2fe0bc3e2d0976f7c01a4893430ec\",\"dweb:/ipfs/QmbhqKxfhrfPAjp99LVspxopQG7Mb9L9xdSa38ujCxmvTJ\"]},\"seaport/contracts/interfaces/SignatureVerificationErrors.sol\":{\"keccak256\":\"0xb86f318b159c16087372e12b1e2c37c15fb745be1566bb03812e3814c15fb605\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff051f5cb44654096126c9ec72d1aaebf568e87a01da6200e969e673b8c3e4bf\",\"dweb:/ipfs/QmaPKx8ikPxRzYRubNraLhPdnGmXunZ6WGhzaed18oBi66\"]},\"seaport/contracts/interfaces/TokenTransferrerErrors.sol\":{\"keccak256\":\"0x128fbb0236de5e52c34876c61148e04c12289e92d6bce2270760905617a01b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ed114ea7bf9ce55065d853f0f705eb82cc840672e0c2ab899691ab5703d2e98\",\"dweb:/ipfs/QmXQsajetWBmU7tzjoFm5wyajRKrMMEGXFF7ZQxaH7ZceG\"]},\"seaport/contracts/interfaces/ZoneInteractionErrors.sol\":{\"keccak256\":\"0x7cc23125af35b317beac057bfbe34291f6b2f34f37f7d698f5bc7373b09b4480\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c56917ceed46a2e3029b7daf5331cd6e3a10e3174287c9d2a5cccb5fb6e1568\",\"dweb:/ipfs/QmRdPmvPm2F2hXq4QwXZyavjMis1RmY5XLMZLzM45Cv9hT\"]},\"seaport/contracts/interfaces/ZoneInterface.sol\":{\"keccak256\":\"0x5c5d749fd3de01bd89acf7cb08f11d041b3a600819e18b8a51cebd65285ced46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43788f6ae192a2063f185ccb87853576e4d90ea8f1df19d1334d2e9be62333f3\",\"dweb:/ipfs/QmXSXFPhSNsTv4kvBZbCHwzakoAxvvnvZPSmw7CXg2j1vu\"]},\"seaport/contracts/lib/Assertions.sol\":{\"keccak256\":\"0xb2ef1d902d0eefb7aaffc720354dd0352f95442178091f059d31ebe096894586\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6f121104190dd5e5a4e98fcbf024ad300c4b9704768fdb49d81f270c22a8067\",\"dweb:/ipfs/QmWKzhVq1itpqTfeiCELGb1jDcTnBdCwroHgGMzqDuYWN8\"]},\"seaport/contracts/lib/ConsiderationBase.sol\":{\"keccak256\":\"0x1015a0bb6fff27278ceec2f76cbf0c775bfb3e8d03cafe8d3549e252e9563ba2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f7d3b48069268df59a77293a7cdc232df35c5b1c8b1974b422a850bedb875f6\",\"dweb:/ipfs/QmSMMnXqsUEWuC1u7BF6coTXK63BXaQYvWqX69doaatKw8\"]},\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]},\"seaport/contracts/lib/Executor.sol\":{\"keccak256\":\"0x72b4591bebbeb723ad41e9dabd931e4a969a8cff3e6a9b1a82dd2299391834e9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3030a05a77aa4375961371f8508327d0a7f102c9b52319a0263a15a498155d70\",\"dweb:/ipfs/QmWr6WFUwJsszCBvMhLUPAz4tz3jTbJzABQwtfRUC5cKzv\"]},\"seaport/contracts/lib/GettersAndDerivers.sol\":{\"keccak256\":\"0xb9d0cf2a84567b6b70e1ddd9e3450dddf8139e5396bcac24c42f46db16228efa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99767431817fd6b157bc199784ca3f3bc2cf024a332ae8e2a5eb7e3db0f2b47d\",\"dweb:/ipfs/QmPWaJet2TPiWc7xEo7QqVpctaLvXPZFep8R8Vi4ZRzzCw\"]},\"seaport/contracts/lib/LowLevelHelpers.sol\":{\"keccak256\":\"0x83085de63b870cfb3940c68d96a40b2cf9afb7280c1afa3034d1c55c80444a94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9ba49a7318a517e836811dfc67989e9f14959a7cd55220853af6b6273309543\",\"dweb:/ipfs/QmUAQr4SReMunUvwBxKPdd8XLPy5GKMEEhPwpD32UYn3kx\"]},\"seaport/contracts/lib/NonceManager.sol\":{\"keccak256\":\"0xe8b6e40830e216912ce483e867151e84cc0b290404220e1ed5fbb69821161f8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4ef49cbc0b5385b64c1f8c9d5cf572dff35ec291970714ef11520de2c01ab9c\",\"dweb:/ipfs/QmfJoNCtAHUYsidmUaiMBP8wMzUYCtg33G8nUqyME5AftL\"]},\"seaport/contracts/lib/OrderValidator.sol\":{\"keccak256\":\"0xeb3e16175a6545c6f320eecc2c2d2e33cf27f30be2e12ae86ad67429b0e14061\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://924da093b3d43f0603a8615b6ad2b575d4efe694f0381e3963461159c13fc1ba\",\"dweb:/ipfs/QmVwuoYmZU3BZx8LVfeDdd51geQyS745KLPKx7LuNQiPUz\"]},\"seaport/contracts/lib/ReentrancyGuard.sol\":{\"keccak256\":\"0xec219fb657ce8400835d8d1ff87716247c5fdde51bca31fddf19415abad773db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eca390f7b8fbccc703ad22edd4f35fa896de59912f21d9471d51ef83b961d3c5\",\"dweb:/ipfs/QmXyxcfzgD4SaTtgqGjUjxK4tb76NiPcooMkL9c11yhm2L\"]},\"seaport/contracts/lib/SignatureVerification.sol\":{\"keccak256\":\"0x5833c9bf1ab9c8fbfeb723ff500722e269a1c05b0fe14d8a837e40c88138f4fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0af100e71a40bc871019c7ebd5c786007deacbf58ee98bce204c43811c726dd\",\"dweb:/ipfs/QmSjdy3wSypHCxCdFGZxLFCCRJf7cfVn6MM75KUbj2y3jN\"]},\"seaport/contracts/lib/TokenTransferrer.sol\":{\"keccak256\":\"0xe392cea22226f1b55e35b0295d0cfa156c7764f2509fa416f3946ca748c9605a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddf9b20512bc36f5bbe25f56729aa31a139b1560dfc14beb42d5d09ae8d44b48\",\"dweb:/ipfs/QmSN9GdbtqBcobRSd8kSCxn2GScZhiiAbuxk5djmkatKRD\"]},\"seaport/contracts/lib/TokenTransferrerConstants.sol\":{\"keccak256\":\"0x5ecc368039fd81cc27788a664538ab63f1b5deb9caa8839d9499fadfd1d465cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0e821e5fd5a31cdcaaf334203dd58d80489c1aed2fd2a91a9683a9e342c9653\",\"dweb:/ipfs/QmRKkHF5aLKJ8KrMmMoV9UsCtgtrCQYgeptGK4jKVGM68j\"]},\"seaport/contracts/lib/Verifiers.sol\":{\"keccak256\":\"0x69755b486d816164270d1b37c187ea7a3ce262e9d31153a88279fe6d8cb76cd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://16dc060d4321a17cdcbf1125b076bb9bbf75086a57d7c6eeca7e9845fcd6d76e\",\"dweb:/ipfs/QmSnF21ffxHnfiYRVVRopn2EcJagghQZTTcdDvMoiR9fsM\"]},\"seaport/contracts/lib/ZoneInteraction.sol\":{\"keccak256\":\"0xbabb8f6c0659327e9ae9711d63c0d81f49789c32d1987170d772dac5bd9c0b48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ee495283ba0709d674062d80a6bcba9f54eed8d132283e500980fa63ac5dc217\",\"dweb:/ipfs/QmWQegpmWwk6dNxBpmXpVmPAq6LtQhDKUja9ewHeMsA1rM\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/ReentrancyGuard.sol": {
        "ReentrancyGuard": {
          "abi": [
            {
              "inputs": [],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "NoReentrantCalls",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_7733": {
                  "entryPoint": null,
                  "id": 7733,
                  "parameterSlots": 0,
                  "returnSlots": 0
                }
              },
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b506001600055603f8060226000396000f3fe6080604052600080fdfea2646970667358221220b62a14ddd8e4dfe3659608ac6e2baadb25258f7061e87bed2b5bf8112982cb4264736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x0 SSTORE PUSH1 0x3F DUP1 PUSH1 0x22 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 0x2A EQ 0xDD 0xD8 0xE4 0xDF 0xE3 PUSH6 0x9608AC6E2BAA 0xDB 0x25 0x25 DUP16 PUSH17 0x61E87BED2B5BF8112982CB4264736F6C63 NUMBER STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "346:1381:36:-:0;;;570:125;;;;;;;;;-1:-1:-1;2287:1:24;657:16:36;:31;346:1381;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea2646970667358221220b62a14ddd8e4dfe3659608ac6e2baadb25258f7061e87bed2b5bf8112982cb4264736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB6 0x2A EQ 0xDD 0xD8 0xE4 0xDF 0xE3 PUSH6 0x9608AC6E2BAA 0xDB 0x25 0x25 DUP16 PUSH17 0x61E87BED2B5BF8112982CB4264736F6C63 NUMBER STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "346:1381:36:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initialize the reentrancy guard during deployment.\"}},\"title\":\"ReentrancyGuard\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"ReentrancyGuard contains a storage variable and related functionality         for protecting against reentrancy.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/ReentrancyGuard.sol\":\"ReentrancyGuard\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/ReentrancyErrors.sol\":{\"keccak256\":\"0x9ab27fa5a68f55ad89072ea213c6f12979ae469041ca473d81f800dbdbe9bb48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0cc617da7254d981fd5970d16acc2a6f6fe2fe0bc3e2d0976f7c01a4893430ec\",\"dweb:/ipfs/QmbhqKxfhrfPAjp99LVspxopQG7Mb9L9xdSa38ujCxmvTJ\"]},\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/ReentrancyGuard.sol\":{\"keccak256\":\"0xec219fb657ce8400835d8d1ff87716247c5fdde51bca31fddf19415abad773db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eca390f7b8fbccc703ad22edd4f35fa896de59912f21d9471d51ef83b961d3c5\",\"dweb:/ipfs/QmXyxcfzgD4SaTtgqGjUjxK4tb76NiPcooMkL9c11yhm2L\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/SignatureVerification.sol": {
        "SignatureVerification": {
          "abi": [
            {
              "inputs": [],
              "name": "BadContractSignature",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                }
              ],
              "name": "BadSignatureV",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSigner",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220048f5c1342b1ebfbdb2eb8f23c80b480d2c08eace55cba643e290c05edb2c3d964736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIV DUP16 0x5C SGT TIMESTAMP 0xB1 0xEB 0xFB 0xDB 0x2E 0xB8 CALLCODE EXTCODECOPY DUP1 0xB4 DUP1 0xD2 0xC0 DUP15 0xAC 0xE5 0x5C 0xBA PUSH5 0x3E290C05ED 0xB2 0xC3 0xD9 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "474:5144:37:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea2646970667358221220048f5c1342b1ebfbdb2eb8f23c80b480d2c08eace55cba643e290c05edb2c3d964736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DIV DUP16 0x5C SGT TIMESTAMP 0xB1 0xEB 0xFB 0xDB 0x2E 0xB8 CALLCODE EXTCODECOPY DUP1 0xB4 DUP1 0xD2 0xC0 DUP15 0xAC 0xE5 0x5C 0xBA PUSH5 0x3E290C05ED 0xB2 0xC3 0xD9 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "474:5144:37:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SignatureVerification\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"SignatureVerification contains logic for verifying signatures.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/SignatureVerification.sol\":\"SignatureVerification\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/EIP1271Interface.sol\":{\"keccak256\":\"0x3c60fdc09b2bc7cb3a615ca82ee1bd776813e75883515efd1e794fe8a3228f29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b17dda7065bffe0ba89c26d413e89c7e7e733f5e74cefba56799ebb57e60908\",\"dweb:/ipfs/QmT2DJBP4WvXYKyFusiSeJ7kbo4UVor4yKCkwEF237CqxZ\"]},\"seaport/contracts/interfaces/SignatureVerificationErrors.sol\":{\"keccak256\":\"0xb86f318b159c16087372e12b1e2c37c15fb745be1566bb03812e3814c15fb605\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff051f5cb44654096126c9ec72d1aaebf568e87a01da6200e969e673b8c3e4bf\",\"dweb:/ipfs/QmaPKx8ikPxRzYRubNraLhPdnGmXunZ6WGhzaed18oBi66\"]},\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/LowLevelHelpers.sol\":{\"keccak256\":\"0x83085de63b870cfb3940c68d96a40b2cf9afb7280c1afa3034d1c55c80444a94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9ba49a7318a517e836811dfc67989e9f14959a7cd55220853af6b6273309543\",\"dweb:/ipfs/QmUAQr4SReMunUvwBxKPdd8XLPy5GKMEEhPwpD32UYn3kx\"]},\"seaport/contracts/lib/SignatureVerification.sol\":{\"keccak256\":\"0x5833c9bf1ab9c8fbfeb723ff500722e269a1c05b0fe14d8a837e40c88138f4fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0af100e71a40bc871019c7ebd5c786007deacbf58ee98bce204c43811c726dd\",\"dweb:/ipfs/QmSjdy3wSypHCxCdFGZxLFCCRJf7cfVn6MM75KUbj2y3jN\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/TokenTransferrer.sol": {
        "TokenTransferrer": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BadReturnValueFromERC20OnTransfer",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "identifiers",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "ERC1155BatchTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidERC721TransferAmount",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingItemAmount",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "NoContract",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "identifier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenTransferGenericFailure",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220847df3e13b43719a60a27f45d6fd2c96c527e7d2d0bf8146778428a99088050064736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 PUSH30 0xF3E13B43719A60A27F45D6FD2C96C527E7D2D0BF8146778428A990880500 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "287:32181:38:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea2646970667358221220847df3e13b43719a60a27f45d6fd2c96c527e7d2d0bf8146778428a99088050064736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 PUSH30 0xF3E13B43719A60A27F45D6FD2C96C527E7D2D0BF8146778428A990880500 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "287:32181:38:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"}],\"devdoc\":{\"errors\":{\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/TokenTransferrer.sol\":\"TokenTransferrer\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/conduit/lib/ConduitEnums.sol\":{\"keccak256\":\"0x3a9ecf77688f97d1b595be27b49fca3eac93e3f91160d79f0f0063c250fd8aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d596c21d5c7c7b47ca14908cbd7add9c06898c500cf47988446f843c0b28cf96\",\"dweb:/ipfs/QmZf12Y7XHwEWvjd2ZbaUFz4NXsWPFGJF6vNg1HECvXV5m\"]},\"seaport/contracts/conduit/lib/ConduitStructs.sol\":{\"keccak256\":\"0xfd2cec45327e9a6ebc02d7efb9daa1cfdabb26eb803e4b2e9b5e82340d92cfed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea7fa97afdf70ab91449e54f9a4f40e9da16292ab87b86e7e975e6d92f573dc3\",\"dweb:/ipfs/QmaRvo6P8YYPYNgcuP4HVV2wqDuVSB1t6AwMe8jMbcQY3F\"]},\"seaport/contracts/interfaces/TokenTransferrerErrors.sol\":{\"keccak256\":\"0x128fbb0236de5e52c34876c61148e04c12289e92d6bce2270760905617a01b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ed114ea7bf9ce55065d853f0f705eb82cc840672e0c2ab899691ab5703d2e98\",\"dweb:/ipfs/QmXQsajetWBmU7tzjoFm5wyajRKrMMEGXFF7ZQxaH7ZceG\"]},\"seaport/contracts/lib/TokenTransferrer.sol\":{\"keccak256\":\"0xe392cea22226f1b55e35b0295d0cfa156c7764f2509fa416f3946ca748c9605a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddf9b20512bc36f5bbe25f56729aa31a139b1560dfc14beb42d5d09ae8d44b48\",\"dweb:/ipfs/QmSN9GdbtqBcobRSd8kSCxn2GScZhiiAbuxk5djmkatKRD\"]},\"seaport/contracts/lib/TokenTransferrerConstants.sol\":{\"keccak256\":\"0x5ecc368039fd81cc27788a664538ab63f1b5deb9caa8839d9499fadfd1d465cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0e821e5fd5a31cdcaaf334203dd58d80489c1aed2fd2a91a9683a9e342c9653\",\"dweb:/ipfs/QmRKkHF5aLKJ8KrMmMoV9UsCtgtrCQYgeptGK4jKVGM68j\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/Verifiers.sol": {
        "Verifiers": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduitController",
                  "type": "address"
                }
              ],
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "inputs": [],
              "name": "BadContractSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "BadFraction",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "BadReturnValueFromERC20OnTransfer",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint8",
                  "name": "v",
                  "type": "uint8"
                }
              ],
              "name": "BadSignatureV",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "orderIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "considerationIndex",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "shortfallAmount",
                  "type": "uint256"
                }
              ],
              "name": "ConsiderationNotMet",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256[]",
                  "name": "identifiers",
                  "type": "uint256[]"
                },
                {
                  "internalType": "uint256[]",
                  "name": "amounts",
                  "type": "uint256[]"
                }
              ],
              "name": "ERC1155BatchTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "EtherTransferGenericFailure",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InsufficientEtherSupplied",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidBasicOrderParameterEncoding",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidCallToConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidCanceller",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "conduitKey",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "conduit",
                  "type": "address"
                }
              ],
              "name": "InvalidConduit",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidERC721TransferAmount",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "value",
                  "type": "uint256"
                }
              ],
              "name": "InvalidMsgValue",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSignature",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidSigner",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "InvalidTime",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingItemAmount",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "MissingOriginalConsiderationItems",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "account",
                  "type": "address"
                }
              ],
              "name": "NoContract",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoReentrantCalls",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "NoSpecifiedOrdersAvailable",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderAlreadyFilled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderIsCancelled",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "OrderPartiallyFilled",
              "type": "error"
            },
            {
              "inputs": [],
              "name": "PartialFillsNotEnabledForOrder",
              "type": "error"
            },
            {
              "inputs": [
                {
                  "internalType": "address",
                  "name": "token",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "from",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "to",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "identifier",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "name": "TokenTransferGenericFailure",
              "type": "error"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "newNonce",
                  "type": "uint256"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                }
              ],
              "name": "NonceIncremented",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderCancelled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "fulfiller",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct SpentItem[]",
                  "name": "offer",
                  "type": "tuple[]"
                },
                {
                  "components": [
                    {
                      "internalType": "enum ItemType",
                      "name": "itemType",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "token",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "identifier",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    },
                    {
                      "internalType": "address payable",
                      "name": "recipient",
                      "type": "address"
                    }
                  ],
                  "indexed": false,
                  "internalType": "struct ReceivedItem[]",
                  "name": "consideration",
                  "type": "tuple[]"
                }
              ],
              "name": "OrderFulfilled",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "offerer",
                  "type": "address"
                },
                {
                  "indexed": true,
                  "internalType": "address",
                  "name": "zone",
                  "type": "address"
                }
              ],
              "name": "OrderValidated",
              "type": "event"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {
                "@_2519": {
                  "entryPoint": null,
                  "id": 2519,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_3225": {
                  "entryPoint": null,
                  "id": 3225,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_5345": {
                  "entryPoint": null,
                  "id": 5345,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_7733": {
                  "entryPoint": null,
                  "id": 7733,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@_8248": {
                  "entryPoint": null,
                  "id": 8248,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@_deriveDomainSeparator_3247": {
                  "entryPoint": null,
                  "id": 3247,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@_deriveTypehashes_3383": {
                  "entryPoint": 281,
                  "id": 3383,
                  "parameterSlots": 0,
                  "returnSlots": 6
                },
                "@_nameString_3264": {
                  "entryPoint": null,
                  "id": 3264,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_address_fromMemory": {
                  "entryPoint": 1451,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32t_bytes32_fromMemory": {
                  "entryPoint": 1499,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 2
                },
                "abi_encode_bytes": {
                  "entryPoint": 1535,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_59d7": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_stringliteral_cfcd": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": 1594,
                  "id": null,
                  "parameterSlots": 4,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 6,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:7686:45",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:45",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "95:209:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "141:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "150:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "153:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "143:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "143:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "143:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "116:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "125:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "112:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "137:2:45",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "108:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "108:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "105:52:45"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "166:29:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "185:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "179:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "179:16:45"
                              },
                              "variables": [
                                {
                                  "name": "value",
                                  "nodeType": "YulTypedName",
                                  "src": "170:5:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "258:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "267:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "270:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "260:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "260:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "260:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "217:5:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value",
                                            "nodeType": "YulIdentifier",
                                            "src": "228:5:45"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "243:3:45",
                                                    "type": "",
                                                    "value": "160"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "248:1:45",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "shl",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "239:3:45"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "239:11:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "252:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "sub",
                                              "nodeType": "YulIdentifier",
                                              "src": "235:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "235:19:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "224:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "224:31:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "214:2:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "214:42:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "207:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "207:50:45"
                              },
                              "nodeType": "YulIf",
                              "src": "204:70:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "283:15:45",
                              "value": {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "293:5:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "283:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_address_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "61:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "72:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "84:6:45",
                            "type": ""
                          }
                        ],
                        "src": "14:290:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "407:147:45",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "453:16:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "462:1:45",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "465:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "455:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "455:12:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "455:12:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "428:7:45"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "437:9:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "424:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "424:23:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "449:2:45",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "420:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "420:32:45"
                              },
                              "nodeType": "YulIf",
                              "src": "417:52:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "478:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "494:9:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "488:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "488:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "478:6:45"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "513:35:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "533:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "544:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "529:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "529:18:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "523:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "523:25:45"
                              },
                              "variableNames": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "513:6:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32t_bytes32_fromMemory",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "365:9:45",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "376:7:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "388:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "396:6:45",
                            "type": ""
                          }
                        ],
                        "src": "309:245:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "614:59:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "631:3:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "636:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "624:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "624:16:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "624:16:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "649:18:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "660:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "665:1:45",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "656:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "656:11:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "649:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_59d7",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "598:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "606:3:45",
                            "type": ""
                          }
                        ],
                        "src": "559:114:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1476:365:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1493:3:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1498:12:45",
                                    "type": "",
                                    "value": "OfferItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1486:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1486:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1486:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1531:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1536:2:45",
                                        "type": "",
                                        "value": "10"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1527:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1527:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1541:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1520:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1520:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1520:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1579:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1584:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1575:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1575:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1589:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1568:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1568:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1568:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1626:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1631:2:45",
                                        "type": "",
                                        "value": "39"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1622:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1622:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1636:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1615:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1615:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1615:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1688:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1693:2:45",
                                        "type": "",
                                        "value": "68"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1684:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1684:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1698:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1677:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1677:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1677:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1741:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1746:2:45",
                                        "type": "",
                                        "value": "88"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1737:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1737:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1751:19:45",
                                    "type": "",
                                    "value": "uint256 endAmount"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1730:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1730:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1730:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "1791:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1796:3:45",
                                        "type": "",
                                        "value": "105"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1787:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1787:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1802:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1780:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1780:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1780:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1815:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "1826:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1831:3:45",
                                    "type": "",
                                    "value": "106"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1822:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1822:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1815:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "1460:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "1468:3:45",
                            "type": ""
                          }
                        ],
                        "src": "678:1163:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2745:425:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "2762:3:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2767:20:45",
                                    "type": "",
                                    "value": "ConsiderationItem("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2755:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2755:33:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2755:33:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2808:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2813:2:45",
                                        "type": "",
                                        "value": "18"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2804:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2804:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206974656d547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2818:17:45",
                                    "type": "",
                                    "value": "uint8 itemType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2797:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2797:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2797:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2856:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2861:2:45",
                                        "type": "",
                                        "value": "33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2852:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2852:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320746f6b656e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2866:16:45",
                                    "type": "",
                                    "value": "address token,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2845:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2845:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2845:38:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2903:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2908:2:45",
                                        "type": "",
                                        "value": "47"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2899:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2899:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2913:31:45",
                                    "type": "",
                                    "value": "uint256 identifierOrCriteria,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2892:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2892:53:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2892:53:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "2965:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2970:2:45",
                                        "type": "",
                                        "value": "76"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2961:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2961:12:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536207374617274416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "2975:22:45",
                                    "type": "",
                                    "value": "uint256 startAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "2954:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2954:44:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2954:44:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3018:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3023:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3014:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3014:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e64416d6f756e742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3028:20:45",
                                    "type": "",
                                    "value": "uint256 endAmount,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3007:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3007:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3007:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3069:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3074:3:45",
                                        "type": "",
                                        "value": "114"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3065:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3065:13:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320726563697069656e74",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3080:19:45",
                                    "type": "",
                                    "value": "address recipient"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3058:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3058:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3058:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "3120:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3125:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3116:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3116:13:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3131:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3109:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3109:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3109:26:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3144:20:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3155:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3160:3:45",
                                    "type": "",
                                    "value": "132"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3151:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3151:13:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3144:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "2729:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "2737:3:45",
                            "type": ""
                          }
                        ],
                        "src": "1846:1324:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3230:78:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3247:3:45"
                                  },
                                  {
                                    "hexValue": "6279746573333220636f6e647569744b65792c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3252:21:45",
                                    "type": "",
                                    "value": "bytes32 conduitKey,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3240:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3240:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3240:34:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3283:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3294:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3299:2:45",
                                    "type": "",
                                    "value": "19"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3290:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3290:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3283:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral_cfcd",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3214:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3222:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3175:133:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3363:72:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3380:3:45"
                                  },
                                  {
                                    "hexValue": "75696e74323536206e6f6e6365",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "3385:15:45",
                                    "type": "",
                                    "value": "uint256 nonce"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3373:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3373:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3373:28:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3410:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "3421:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3426:2:45",
                                    "type": "",
                                    "value": "13"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "3417:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3417:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "3410:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_stringliteral",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "3347:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "3355:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3313:122:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "4844:659:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "4861:3:45"
                                  },
                                  {
                                    "hexValue": "4f72646572436f6d706f6e656e747328",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4866:18:45",
                                    "type": "",
                                    "value": "OrderComponents("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4854:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4854:31:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4854:31:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4905:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4910:2:45",
                                        "type": "",
                                        "value": "16"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4901:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4901:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373206f6666657265722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4915:18:45",
                                    "type": "",
                                    "value": "address offerer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4894:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4894:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4894:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "4954:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "4959:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4950:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4950:12:45"
                                  },
                                  {
                                    "hexValue": "61646472657373207a6f6e652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "4964:15:45",
                                    "type": "",
                                    "value": "address zone,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4943:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4943:37:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4943:37:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5000:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5005:2:45",
                                        "type": "",
                                        "value": "45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "4996:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4996:12:45"
                                  },
                                  {
                                    "hexValue": "4f666665724974656d5b5d206f666665722c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5010:20:45",
                                    "type": "",
                                    "value": "OfferItem[] offer,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "4989:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4989:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "4989:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5051:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5056:2:45",
                                        "type": "",
                                        "value": "63"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5047:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5047:12:45"
                                  },
                                  {
                                    "hexValue": "436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5061:34:45",
                                    "type": "",
                                    "value": "ConsiderationItem[] consideratio"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5040:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5040:56:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5040:56:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5116:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5121:2:45",
                                        "type": "",
                                        "value": "95"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5112:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5112:12:45"
                                  },
                                  {
                                    "hexValue": "6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5126:4:45",
                                    "type": "",
                                    "value": "n,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5105:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5105:26:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5105:26:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5151:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5156:2:45",
                                        "type": "",
                                        "value": "97"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5147:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5147:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7438206f72646572547970652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5161:18:45",
                                    "type": "",
                                    "value": "uint8 orderType,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5140:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5140:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5140:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5200:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5205:3:45",
                                        "type": "",
                                        "value": "113"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5196:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5196:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620737461727454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5211:20:45",
                                    "type": "",
                                    "value": "uint256 startTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5189:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5189:43:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5189:43:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5252:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5257:3:45",
                                        "type": "",
                                        "value": "131"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5248:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5248:13:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620656e6454696d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5263:18:45",
                                    "type": "",
                                    "value": "uint256 endTime,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5241:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5241:41:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5241:41:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5302:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5307:3:45",
                                        "type": "",
                                        "value": "147"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5298:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5298:13:45"
                                  },
                                  {
                                    "hexValue": "62797465733332207a6f6e65486173682c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5313:19:45",
                                    "type": "",
                                    "value": "bytes32 zoneHash,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5291:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5291:42:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5291:42:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "5353:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5358:3:45",
                                        "type": "",
                                        "value": "164"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5349:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5349:13:45"
                                  },
                                  {
                                    "hexValue": "75696e743235362073616c742c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "5364:15:45",
                                    "type": "",
                                    "value": "uint256 salt,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "5342:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5342:38:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "5342:38:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5389:108:45",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "pos",
                                                "nodeType": "YulIdentifier",
                                                "src": "5485:3:45"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "5490:3:45",
                                                "type": "",
                                                "value": "177"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "5481:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5481:13:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_stringliteral_cfcd",
                                          "nodeType": "YulIdentifier",
                                          "src": "5451:29:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5451:44:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_stringliteral",
                                      "nodeType": "YulIdentifier",
                                      "src": "5426:24:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5426:70:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_stringliteral_59d7",
                                  "nodeType": "YulIdentifier",
                                  "src": "5396:29:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5396:101:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "5389:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "4828:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "4836:3:45",
                            "type": ""
                          }
                        ],
                        "src": "3440:2063:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6205:306:45",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6222:3:45"
                                  },
                                  {
                                    "hexValue": "454950373132446f6d61696e28",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6227:15:45",
                                    "type": "",
                                    "value": "EIP712Domain("
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6215:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6215:28:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6215:28:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6263:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6268:2:45",
                                        "type": "",
                                        "value": "13"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6259:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6259:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e67206e616d652c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6273:14:45",
                                    "type": "",
                                    "value": "string name,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6252:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6252:36:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6252:36:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6308:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6313:2:45",
                                        "type": "",
                                        "value": "25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6304:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6304:12:45"
                                  },
                                  {
                                    "hexValue": "737472696e672076657273696f6e2c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6318:17:45",
                                    "type": "",
                                    "value": "string version,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6297:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6297:39:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6297:39:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6356:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6361:2:45",
                                        "type": "",
                                        "value": "40"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6352:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6352:12:45"
                                  },
                                  {
                                    "hexValue": "75696e7432353620636861696e49642c",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6366:18:45",
                                    "type": "",
                                    "value": "uint256 chainId,"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6345:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6345:40:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6345:40:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6405:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6410:2:45",
                                        "type": "",
                                        "value": "56"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6401:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6401:12:45"
                                  },
                                  {
                                    "hexValue": "6164647265737320766572696679696e67436f6e7472616374",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6415:27:45",
                                    "type": "",
                                    "value": "address verifyingContract"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6394:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6394:49:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6394:49:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "pos",
                                        "nodeType": "YulIdentifier",
                                        "src": "6463:3:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "6468:2:45",
                                        "type": "",
                                        "value": "81"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6459:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6459:12:45"
                                  },
                                  {
                                    "hexValue": "29",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "6473:3:45",
                                    "type": "",
                                    "value": ")"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6452:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6452:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6452:25:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6486:19:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6497:3:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "6502:2:45",
                                    "type": "",
                                    "value": "82"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6493:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6493:12:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6486:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6189:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6197:3:45",
                            "type": ""
                          }
                        ],
                        "src": "5508:1003:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "6565:287:45",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6575:26:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nodeType": "YulIdentifier",
                                    "src": "6595:5:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6589:5:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6589:12:45"
                              },
                              "variables": [
                                {
                                  "name": "length",
                                  "nodeType": "YulTypedName",
                                  "src": "6579:6:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6610:10:45",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "6619:1:45",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "i",
                                  "nodeType": "YulTypedName",
                                  "src": "6614:1:45",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6681:76:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6706:3:45"
                                            },
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "6711:1:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6702:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6702:11:45"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "value",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6729:5:45"
                                                    },
                                                    {
                                                      "name": "i",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "6736:1:45"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "6725:3:45"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "6725:13:45"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "6740:4:45",
                                                  "type": "",
                                                  "value": "0x20"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "6721:3:45"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "6721:24:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "6715:5:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6715:31:45"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6695:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6695:52:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6695:52:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6640:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6643:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6637:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6637:13:45"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "6651:21:45",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "6653:17:45",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "6662:1:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6665:4:45",
                                          "type": "",
                                          "value": "0x20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "6658:3:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6658:12:45"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "6653:1:45"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "6633:3:45",
                                "statements": []
                              },
                              "src": "6629:128:45"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "6783:31:45",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "pos",
                                              "nodeType": "YulIdentifier",
                                              "src": "6796:3:45"
                                            },
                                            {
                                              "name": "length",
                                              "nodeType": "YulIdentifier",
                                              "src": "6801:6:45"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6792:3:45"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6792:16:45"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "6810:1:45",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6785:6:45"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6785:27:45"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6785:27:45"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "6772:1:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6775:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "6769:2:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6769:13:45"
                              },
                              "nodeType": "YulIf",
                              "src": "6766:48:45"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "6823:23:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "pos",
                                    "nodeType": "YulIdentifier",
                                    "src": "6834:3:45"
                                  },
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "6839:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6830:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6830:16:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "6823:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_bytes",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "6542:5:45",
                            "type": ""
                          },
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "6549:3:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "6557:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6516:336:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7086:104:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7096:88:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7120:6:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "7145:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "value0",
                                            "nodeType": "YulIdentifier",
                                            "src": "7170:6:45"
                                          },
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "7178:3:45"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "abi_encode_bytes",
                                          "nodeType": "YulIdentifier",
                                          "src": "7153:16:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7153:29:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "abi_encode_bytes",
                                      "nodeType": "YulIdentifier",
                                      "src": "7128:16:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7128:55:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "abi_encode_bytes",
                                  "nodeType": "YulIdentifier",
                                  "src": "7103:16:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7103:81:45"
                              },
                              "variableNames": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "7096:3:45"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "pos",
                            "nodeType": "YulTypedName",
                            "src": "7046:3:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7051:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7059:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7067:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "end",
                            "nodeType": "YulTypedName",
                            "src": "7078:3:45",
                            "type": ""
                          }
                        ],
                        "src": "6857:333:45"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "7408:276:45",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "7418:27:45",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7430:9:45"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "7441:3:45",
                                    "type": "",
                                    "value": "160"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7426:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7426:19:45"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "7418:4:45"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "7461:9:45"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "7472:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7454:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7454:25:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7454:25:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7499:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7510:2:45",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7495:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7495:18:45"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "7515:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7488:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7488:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7488:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7542:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7553:2:45",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7538:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7538:18:45"
                                  },
                                  {
                                    "name": "value2",
                                    "nodeType": "YulIdentifier",
                                    "src": "7558:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7531:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7531:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7531:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7585:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7596:2:45",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7581:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7581:18:45"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "7601:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7574:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7574:34:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7574:34:45"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "7628:9:45"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "7639:3:45",
                                        "type": "",
                                        "value": "128"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "7624:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7624:19:45"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value4",
                                        "nodeType": "YulIdentifier",
                                        "src": "7649:6:45"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7665:3:45",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "7670:1:45",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "7661:3:45"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "7661:11:45"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "7674:1:45",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "7657:3:45"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "7657:19:45"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "7645:3:45"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "7645:32:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7617:6:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7617:61:45"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7617:61:45"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "7345:9:45",
                            "type": ""
                          },
                          {
                            "name": "value4",
                            "nodeType": "YulTypedName",
                            "src": "7356:6:45",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "7364:6:45",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "7372:6:45",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "7380:6:45",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "7388:6:45",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "7399:4:45",
                            "type": ""
                          }
                        ],
                        "src": "7195:489:45"
                      }
                    ]
                  },
                  "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 abi_decode_tuple_t_bytes32t_bytes32_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := mload(headStart)\n        value1 := mload(add(headStart, 32))\n    }\n    function abi_encode_stringliteral_59d7(pos) -> end\n    {\n        mstore(pos, \")\")\n        end := add(pos, 1)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OfferItem(\")\n        mstore(add(pos, 10), \"uint8 itemType,\")\n        mstore(add(pos, 25), \"address token,\")\n        mstore(add(pos, 39), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 68), \"uint256 startAmount,\")\n        mstore(add(pos, 88), \"uint256 endAmount\")\n        mstore(add(pos, 105), \")\")\n        end := add(pos, 106)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc_t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46_t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e_t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123_t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac_t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f_t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"ConsiderationItem(\")\n        mstore(add(pos, 18), \"uint8 itemType,\")\n        mstore(add(pos, 33), \"address token,\")\n        mstore(add(pos, 47), \"uint256 identifierOrCriteria,\")\n        mstore(add(pos, 76), \"uint256 startAmount,\")\n        mstore(add(pos, 96), \"uint256 endAmount,\")\n        mstore(add(pos, 114), \"address recipient\")\n        mstore(add(pos, 131), \")\")\n        end := add(pos, 132)\n    }\n    function abi_encode_stringliteral_cfcd(pos) -> end\n    {\n        mstore(pos, \"bytes32 conduitKey,\")\n        end := add(pos, 19)\n    }\n    function abi_encode_stringliteral(pos) -> end\n    {\n        mstore(pos, \"uint256 nonce\")\n        end := add(pos, 13)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573_t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d_t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e_t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256_t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f_t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f_t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54_t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51_t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c_t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9_t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83_t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"OrderComponents(\")\n        mstore(add(pos, 16), \"address offerer,\")\n        mstore(add(pos, 32), \"address zone,\")\n        mstore(add(pos, 45), \"OfferItem[] offer,\")\n        mstore(add(pos, 63), \"ConsiderationItem[] consideratio\")\n        mstore(add(pos, 95), \"n,\")\n        mstore(add(pos, 97), \"uint8 orderType,\")\n        mstore(add(pos, 113), \"uint256 startTime,\")\n        mstore(add(pos, 131), \"uint256 endTime,\")\n        mstore(add(pos, 147), \"bytes32 zoneHash,\")\n        mstore(add(pos, 164), \"uint256 salt,\")\n        end := abi_encode_stringliteral_59d7(abi_encode_stringliteral(abi_encode_stringliteral_cfcd(add(pos, 177))))\n    }\n    function abi_encode_tuple_packed_t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a_t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597_t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c_t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b_t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b_t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed__to_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n    {\n        mstore(pos, \"EIP712Domain(\")\n        mstore(add(pos, 13), \"string name,\")\n        mstore(add(pos, 25), \"string version,\")\n        mstore(add(pos, 40), \"uint256 chainId,\")\n        mstore(add(pos, 56), \"address verifyingContract\")\n        mstore(add(pos, 81), \")\")\n        end := add(pos, 82)\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        let i := 0\n        for { } lt(i, length) { i := add(i, 0x20) }\n        {\n            mstore(add(pos, i), mload(add(add(value, i), 0x20)))\n        }\n        if gt(i, length) { mstore(add(pos, length), 0) }\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__to_t_bytes_memory_ptr_t_bytes_memory_ptr_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        end := abi_encode_bytes(value2, abi_encode_bytes(value1, abi_encode_bytes(value0, pos)))\n    }\n    function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__to_t_bytes32_t_bytes32_t_bytes32_t_uint256_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 160)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n}",
                  "id": 45,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "linkReferences": {},
              "object": "6101c060405234801561001157600080fd5b506040516106fb3803806106fb833981016040819052610030916105ab565b80808061003b610119565b610120526101005260e05260c081815260a0838152608085815246610140819052604080516020818101979097528082019890985260608801969096529086015230858201528351808603909101815293019091528151910120610160526001600160a01b03811661018081905260408051630a96ad3960e01b81528151630a96ad39926004808401939192918290030181865afa1580156100e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010591906105db565b506101a05250506001600055506106619050565b6000808080808061014a60408051808201909152600d81526c21b7b739b4b232b930ba34b7b760991b602082015290565b805160209182012060408051808201825260018152603160f81b90840152519097507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6965060009161024c91016909ecccccae492e8cada560b31b81526e1d5a5b9d0e081a5d195b551e5c194b608a1b600a8201526d1859191c995cdcc81d1bdad95b8b60921b60198201527f75696e74323536206964656e7469666965724f7243726974657269612c00000060278201527f75696e74323536207374617274416d6f756e742c0000000000000000000000006044820152701d5a5b9d0c8d4d88195b99105b5bdd5b9d607a1b6058820152602960f81b6069820152606a0190565b60408051601f1981840301815282825271086dedce6d2c8cae4c2e8d2dedc92e8cada560731b60208401526e1d5a5b9d0e081a5d195b551e5c194b608a1b60328401526d1859191c995cdcc81d1bdad95b8b60921b60418401527f75696e74323536206964656e7469666965724f7243726974657269612c000000604f8401527f75696e74323536207374617274416d6f756e742c000000000000000000000000606c840152711d5a5b9d0c8d4d88195b99105b5bdd5b9d0b60721b6080840152701859191c995cdcc81c9958da5c1a595b9d607a1b6092840152602960f81b60a384018190528251808503608401815260a485019093526f09ee4c8cae486dedae0dedccadce8e6560831b60c48501526f1859191c995cdcc81bd999995c995c8b60821b60d48501526c1859191c995cdcc81e9bdb994b609a1b60e48501527113d999995c925d195b56d7481bd999995c8b60721b60f18501527f436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f610103850152611b8b60f21b6101238501526f1d5a5b9d0e081bdc99195c951e5c194b60821b610125850152711d5a5b9d0c8d4d881cdd185c9d151a5b594b60721b6101358501526f1d5a5b9d0c8d4d88195b99151a5b594b60821b61014785015270189e5d195ccccc881e9bdb9952185cda0b607a1b6101578501526c1d5a5b9d0c8d4d881cd85b1d0b609a1b6101688501527f6279746573333220636f6e647569744b65792c000000000000000000000000006101758501526c75696e74323536206e6f6e636560981b6101888501526101958401529250906000906101960160408051601f19818403018152908290526c08a92a06e626488dedac2d2dc5609b1b60208301526b1cdd1c9a5b99c81b985b594b60a21b602d8301526e1cdd1c9a5b99c81d995c9cda5bdb8b608a1b60398301526f1d5a5b9d0c8d4d8818da185a5b92590b60821b60488301527f6164647265737320766572696679696e67436f6e7472616374000000000000006058830152602960f81b6071830152915060720160408051601f19818403018152908290528051602091820120855186830120855186840120919a5098509650610588918391859187910161063a565b604051602081830303815290604052805190602001209350505050909192939495565b6000602082840312156105bd57600080fd5b81516001600160a01b03811681146105d457600080fd5b9392505050565b600080604083850312156105ee57600080fd5b505080516020909101519092909150565b6000815160005b818110156106205760208185018101518683015201610606565b8181111561062f576000828601525b509290920192915050565b600061065861065261064c84886105ff565b866105ff565b846105ff565b95945050505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051603f6106bc60003960005050600050506000505060005050600050506000505060005050600050506000505060005050603f6000f3fe6080604052600080fdfea2646970667358221220facdec1565b7f6cce0c280fdd6d56335d8dc0cc1e7c2dbc0189b397b31adb96364736f6c634300080d0033",
              "opcodes": "PUSH2 0x1C0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x6FB CODESIZE SUB DUP1 PUSH2 0x6FB DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x30 SWAP2 PUSH2 0x5AB JUMP JUMPDEST DUP1 DUP1 DUP1 PUSH2 0x3B PUSH2 0x119 JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH2 0x100 MSTORE PUSH1 0xE0 MSTORE PUSH1 0xC0 DUP2 DUP2 MSTORE PUSH1 0xA0 DUP4 DUP2 MSTORE PUSH1 0x80 DUP6 DUP2 MSTORE CHAINID PUSH2 0x140 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE DUP1 DUP3 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x60 DUP9 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP1 DUP7 ADD MSTORE ADDRESS DUP6 DUP3 ADD MSTORE DUP4 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE SWAP4 ADD SWAP1 SWAP2 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH2 0x160 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x180 DUP2 SWAP1 MSTORE PUSH1 0x40 DUP1 MLOAD PUSH4 0xA96AD39 PUSH1 0xE0 SHL DUP2 MSTORE DUP2 MLOAD PUSH4 0xA96AD39 SWAP3 PUSH1 0x4 DUP1 DUP5 ADD SWAP4 SWAP2 SWAP3 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xE1 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 0x105 SWAP2 SWAP1 PUSH2 0x5DB JUMP JUMPDEST POP PUSH2 0x1A0 MSTORE POP POP PUSH1 0x1 PUSH1 0x0 SSTORE POP PUSH2 0x661 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 DUP1 DUP1 PUSH2 0x14A PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xD DUP2 MSTORE PUSH13 0x21B7B739B4B232B930BA34B7B7 PUSH1 0x99 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP5 ADD MSTORE MLOAD SWAP1 SWAP8 POP PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP7 POP PUSH1 0x0 SWAP2 PUSH2 0x24C SWAP2 ADD PUSH10 0x9ECCCCCAE492E8CADA5 PUSH1 0xB3 SHL DUP2 MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0xA DUP3 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x19 DUP3 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x27 DUP3 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH17 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D PUSH1 0x7A SHL PUSH1 0x58 DUP3 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x69 DUP3 ADD MSTORE PUSH1 0x6A ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE PUSH18 0x86DEDCE6D2C8CAE4C2E8D2DEDC92E8CADA5 PUSH1 0x73 SHL PUSH1 0x20 DUP5 ADD MSTORE PUSH15 0x1D5A5B9D0E081A5D195B551E5C194B PUSH1 0x8A SHL PUSH1 0x32 DUP5 ADD MSTORE PUSH14 0x1859191C995CDCC81D1BDAD95B8B PUSH1 0x92 SHL PUSH1 0x41 DUP5 ADD MSTORE PUSH32 0x75696E74323536206964656E7469666965724F7243726974657269612C000000 PUSH1 0x4F DUP5 ADD MSTORE PUSH32 0x75696E74323536207374617274416D6F756E742C000000000000000000000000 PUSH1 0x6C DUP5 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D88195B99105B5BDD5B9D0B PUSH1 0x72 SHL PUSH1 0x80 DUP5 ADD MSTORE PUSH17 0x1859191C995CDCC81C9958DA5C1A595B9D PUSH1 0x7A SHL PUSH1 0x92 DUP5 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0xA3 DUP5 ADD DUP2 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP6 SUB PUSH1 0x84 ADD DUP2 MSTORE PUSH1 0xA4 DUP6 ADD SWAP1 SWAP4 MSTORE PUSH16 0x9EE4C8CAE486DEDAE0DEDCCADCE8E65 PUSH1 0x83 SHL PUSH1 0xC4 DUP6 ADD MSTORE PUSH16 0x1859191C995CDCC81BD999995C995C8B PUSH1 0x82 SHL PUSH1 0xD4 DUP6 ADD MSTORE PUSH13 0x1859191C995CDCC81E9BDB994B PUSH1 0x9A SHL PUSH1 0xE4 DUP6 ADD MSTORE PUSH18 0x13D999995C925D195B56D7481BD999995C8B PUSH1 0x72 SHL PUSH1 0xF1 DUP6 ADD MSTORE PUSH32 0x436F6E73696465726174696F6E4974656D5B5D20636F6E73696465726174696F PUSH2 0x103 DUP6 ADD MSTORE PUSH2 0x1B8B PUSH1 0xF2 SHL PUSH2 0x123 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0E081BDC99195C951E5C194B PUSH1 0x82 SHL PUSH2 0x125 DUP6 ADD MSTORE PUSH18 0x1D5A5B9D0C8D4D881CDD185C9D151A5B594B PUSH1 0x72 SHL PUSH2 0x135 DUP6 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D88195B99151A5B594B PUSH1 0x82 SHL PUSH2 0x147 DUP6 ADD MSTORE PUSH17 0x189E5D195CCCCC881E9BDB9952185CDA0B PUSH1 0x7A SHL PUSH2 0x157 DUP6 ADD MSTORE PUSH13 0x1D5A5B9D0C8D4D881CD85B1D0B PUSH1 0x9A SHL PUSH2 0x168 DUP6 ADD MSTORE PUSH32 0x6279746573333220636F6E647569744B65792C00000000000000000000000000 PUSH2 0x175 DUP6 ADD MSTORE PUSH13 0x75696E74323536206E6F6E6365 PUSH1 0x98 SHL PUSH2 0x188 DUP6 ADD MSTORE PUSH2 0x195 DUP5 ADD MSTORE SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH2 0x196 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE PUSH13 0x8A92A06E626488DEDAC2D2DC5 PUSH1 0x9B SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH12 0x1CDD1C9A5B99C81B985B594B PUSH1 0xA2 SHL PUSH1 0x2D DUP4 ADD MSTORE PUSH15 0x1CDD1C9A5B99C81D995C9CDA5BDB8B PUSH1 0x8A SHL PUSH1 0x39 DUP4 ADD MSTORE PUSH16 0x1D5A5B9D0C8D4D8818DA185A5B92590B PUSH1 0x82 SHL PUSH1 0x48 DUP4 ADD MSTORE PUSH32 0x6164647265737320766572696679696E67436F6E747261637400000000000000 PUSH1 0x58 DUP4 ADD MSTORE PUSH1 0x29 PUSH1 0xF8 SHL PUSH1 0x71 DUP4 ADD MSTORE SWAP2 POP PUSH1 0x72 ADD PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP1 DUP3 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 DUP6 MLOAD DUP7 DUP4 ADD KECCAK256 DUP6 MLOAD DUP7 DUP5 ADD KECCAK256 SWAP2 SWAP11 POP SWAP9 POP SWAP7 POP PUSH2 0x588 SWAP2 DUP4 SWAP2 DUP6 SWAP2 DUP8 SWAP2 ADD PUSH2 0x63A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP4 POP POP POP POP SWAP1 SWAP2 SWAP3 SWAP4 SWAP5 SWAP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x620 JUMPI PUSH1 0x20 DUP2 DUP6 ADD DUP2 ADD MLOAD DUP7 DUP4 ADD MSTORE ADD PUSH2 0x606 JUMP JUMPDEST DUP2 DUP2 GT ISZERO PUSH2 0x62F JUMPI PUSH1 0x0 DUP3 DUP7 ADD MSTORE JUMPDEST POP SWAP3 SWAP1 SWAP3 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x658 PUSH2 0x652 PUSH2 0x64C DUP5 DUP9 PUSH2 0x5FF JUMP JUMPDEST DUP7 PUSH2 0x5FF JUMP JUMPDEST DUP5 PUSH2 0x5FF JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0xA0 MLOAD PUSH1 0xC0 MLOAD PUSH1 0xE0 MLOAD PUSH2 0x100 MLOAD PUSH2 0x120 MLOAD PUSH2 0x140 MLOAD PUSH2 0x160 MLOAD PUSH2 0x180 MLOAD PUSH2 0x1A0 MLOAD PUSH1 0x3F PUSH2 0x6BC PUSH1 0x0 CODECOPY PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x0 POP POP PUSH1 0x3F PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL 0xCD 0xEC ISZERO PUSH6 0xB7F6CCE0C280 REVERT 0xD6 0xD5 PUSH4 0x35D8DC0C 0xC1 0xE7 0xC2 0xDB 0xC0 XOR SWAP12 CODECOPY PUSH28 0x31ADB96364736F6C634300080D003300000000000000000000000000 ",
              "sourceMap": "348:5100:40:-:0;;;763:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;813:17;;;1967:19:23;:17;:19::i;:::-;1760:226;;;;;;;;;;;;;;-1:-1:-1;1760:226:23;;;2087:13;2075:25;;;;-1:-1:-1;2761:187:23;;-1:-1:-1;2761:187:23;;;7454:25:45;;;;7495:18;;;7488:34;;;;-1:-1:-1;7538:18:45;;7531:34;;;;7581:18;;;7574:34;2929:4:23;7624:19:45;;;7617:61;2761:187:23;;;;;;;;;;7426:19:45;;2761:187:23;;;2738:220;;;;;2110:44;;-1:-1:-1;;;;;2213:67:23;;;;;;2420:42;;;-1:-1:-1;;;2420:42:23;;;;:40;;:42;;;;;;;;;;;;;2213:67;2420:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2372:100:23;;-1:-1:-1;;2287:1:24;657:16:36;:31;-1:-1:-1;348:5100:40;;-1:-1:-1;348:5100:40;4735:3021:23;4824:16;;;;;;5140:13;3927:22;;;;;;;;;;;;-1:-1:-1;;;3927:22:23;;;;;3804:152;5140:13;5124:31;;;;;;;5252:10;;;;;;;;;;;-1:-1:-1;;;5252:10:23;;;;5384:264;5124:31;;-1:-1:-1;5242:21:23;;-1:-1:-1;;;5384:264:23;;;-1:-1:-1;;;1486:25:45;;-1:-1:-1;;;1536:2:45;1527:12;;1520:39;-1:-1:-1;;;1584:2:45;1575:12;;1568:38;1636:31;1631:2;1622:12;;1615:53;1698:22;1693:2;1684:12;;1677:44;-1:-1:-1;;;1746:2:45;1737:12;;1730:41;-1:-1:-1;;;1796:3:45;1787:13;;1780:26;1831:3;1822:13;;678:1163;5384:264:23;;;;-1:-1:-1;;5384:264:23;;;;;;;;;-1:-1:-1;;;5384:264:23;5785:310;;2755:33:45;-1:-1:-1;;;2804:12:45;;;2797:39;-1:-1:-1;;;2852:12:45;;;2845:38;2913:31;2899:12;;;2892:53;2975:22;2961:12;;;2954:44;-1:-1:-1;;;3014:12:45;;;3007:42;-1:-1:-1;;;3065:13:45;;;3058:42;-1:-1:-1;;;3116:13:45;;;3109:26;;;5785:310:23;;;;;;;;;3151:13:45;;;5785:310:23;;;-1:-1:-1;;;6260:488:23;;;4854:31:45;-1:-1:-1;;;4901:12:45;;;4894:40;-1:-1:-1;;;4950:12:45;;;4943:37;-1:-1:-1;;;4996:12:45;;;4989:42;5061:34;5047:12;;;5040:56;-1:-1:-1;;;5112:12:45;;;5105:26;-1:-1:-1;;;5147:12:45;;;5140:40;-1:-1:-1;;;5196:13:45;;;5189:43;-1:-1:-1;;;5248:13:45;;;5241:41;-1:-1:-1;;;5298:13:45;;;5291:42;-1:-1:-1;;;5349:13:45;;;5342:38;3252:21;5481:13;;;3240:34;-1:-1:-1;;;3290:12:45;;;3373:28;3417:12;;;624:16;5384:264:23;-1:-1:-1;5785:310:23;-1:-1:-1;;656:11:45;;6260:488:23;;;-1:-1:-1;;6260:488:23;;;;;;;;;;-1:-1:-1;;;6260:488:23;6893:248;;6215:28:45;-1:-1:-1;;;6259:12:45;;;6252:36;-1:-1:-1;;;6304:12:45;;;6297:39;-1:-1:-1;;;6352:12:45;;;6345:40;6415:27;6401:12;;;6394:49;-1:-1:-1;;;6459:12:45;;;6452:25;6260:488:23;-1:-1:-1;6493:12:45;;6893:248:23;;;-1:-1:-1;;6893:248:23;;;;;;;;;;6870:281;;6893:248;6870:281;;;;7261:30;;;;;;7409:38;;;;;;6870:281;;-1:-1:-1;7261:30:23;-1:-1:-1;7409:38:23;-1:-1:-1;7577:162:23;;7611:32;;7419:27;;7271:19;;7577:162;;:::i;:::-;;;;;;;;;;;;;7554:195;;;;;;7538:211;;5051:2705;;;4735:3021;;;;;;:::o;14:290:45:-;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:45;;214:42;;204:70;;270:1;267;260:12;204:70;293:5;14:290;-1:-1:-1;;;14:290:45:o;309:245::-;388:6;396;449:2;437:9;428:7;424:23;420:32;417:52;;;465:1;462;455:12;417:52;-1:-1:-1;;488:16:45;;544:2;529:18;;;523:25;488:16;;523:25;;-1:-1:-1;309:245:45:o;6516:336::-;6557:3;6595:5;6589:12;6619:1;6629:128;6643:6;6640:1;6637:13;6629:128;;;6740:4;6725:13;;;6721:24;;6715:31;6702:11;;;6695:52;6658:12;6629:128;;;6775:6;6772:1;6769:13;6766:48;;;6810:1;6801:6;6796:3;6792:16;6785:27;6766:48;-1:-1:-1;6830:16:45;;;;;6516:336;-1:-1:-1;;6516:336:45:o;6857:333::-;7078:3;7103:81;7128:55;7153:29;7178:3;7170:6;7153:29;:::i;:::-;7145:6;7128:55;:::i;:::-;7120:6;7103:81;:::i;:::-;7096:88;6857:333;-1:-1:-1;;;;;6857:333:45:o;7195:489::-;348:5100:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea2646970667358221220facdec1565b7f6cce0c280fdd6d56335d8dc0cc1e7c2dbc0189b397b31adb96364736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL 0xCD 0xEC ISZERO PUSH6 0xB7F6CCE0C280 REVERT 0xD6 0xD5 PUSH4 0x35D8DC0C 0xC1 0xE7 0xC2 0xDB 0xC0 XOR SWAP12 CODECOPY PUSH28 0x31ADB96364736F6C634300080D003300000000000000000000000000 ",
              "sourceMap": "348:5100:40:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduitController\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"BadContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"BadFraction\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BadReturnValueFromERC20OnTransfer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"}],\"name\":\"BadSignatureV\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"orderIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"considerationIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"shortfallAmount\",\"type\":\"uint256\"}],\"name\":\"ConsiderationNotMet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"identifiers\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"ERC1155BatchTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EtherTransferGenericFailure\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientEtherSupplied\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidBasicOrderParameterEncoding\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidCallToConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCanceller\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"conduitKey\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"conduit\",\"type\":\"address\"}],\"name\":\"InvalidConduit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidERC721TransferAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"InvalidMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTime\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingItemAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingOriginalConsiderationItems\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NoContract\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoReentrantCalls\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSpecifiedOrdersAvailable\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderAlreadyFilled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderIsCancelled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"OrderPartiallyFilled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PartialFillsNotEnabledForOrder\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TokenTransferGenericFailure\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newNonce\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"}],\"name\":\"NonceIncremented\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderCancelled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fulfiller\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"indexed\":false,\"internalType\":\"struct SpentItem[]\",\"name\":\"offer\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"enum ItemType\",\"name\":\"itemType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"identifier\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct ReceivedItem[]\",\"name\":\"consideration\",\"type\":\"tuple[]\"}],\"name\":\"OrderFulfilled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"offerer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zone\",\"type\":\"address\"}],\"name\":\"OrderValidated\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"BadContractSignature()\":[{\"details\":\"Revert with an error when an EIP-1271 call to an account fails.\"}],\"BadFraction()\":[{\"details\":\"Revert with an error when supplying a fraction with a value of zero      for the numerator or denominator, or one where the numerator exceeds      the denominator.\"}],\"BadReturnValueFromERC20OnTransfer(address,address,address,uint256)\":[{\"details\":\"Revert with an error when an ERC20 token transfer returns a falsey      value.\",\"params\":{\"amount\":\"The amount for the attempted ERC20 transfer.\",\"from\":\"The source of the attempted ERC20 transfer.\",\"to\":\"The recipient of the attempted ERC20 transfer.\",\"token\":\"The token for which the ERC20 transfer was attempted.\"}}],\"BadSignatureV(uint8)\":[{\"details\":\"Revert with an error when a signature that does not contain a v      value of 27 or 28 has been supplied.\",\"params\":{\"v\":\"The invalid v value.\"}}],\"ConsiderationNotMet(uint256,uint256,uint256)\":[{\"details\":\"Revert with an error if a consideration amount has not been fully      zeroed out after applying all fulfillments.\",\"params\":{\"considerationIndex\":\"The index of the consideration item on the                           order.\",\"orderIndex\":\"The index of the order with the consideration                           item with a shortfall.\",\"shortfallAmount\":\"The unfulfilled consideration amount.\"}}],\"ERC1155BatchTransferGenericFailure(address,address,address,uint256[],uint256[])\":[{\"details\":\"Revert with an error when a batch ERC1155 token transfer reverts.\",\"params\":{\"amounts\":\"The amounts for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifiers\":\"The identifiers for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}],\"EtherTransferGenericFailure(address,uint256)\":[{\"details\":\"Revert with an error when an ether transfer reverts.\"}],\"InsufficientEtherSupplied()\":[{\"details\":\"Revert with an error when insufficient ether is supplied as part of      msg.value when fulfilling orders.\"}],\"InvalidBasicOrderParameterEncoding()\":[{\"details\":\"Revert with an error when attempting to fill a basic order using      calldata not produced by default ABI encoding.\"}],\"InvalidCallToConduit(address)\":[{\"details\":\"Revert with an error when a call to a conduit fails with revert data      that is too expensive to return.\"}],\"InvalidCanceller()\":[{\"details\":\"Revert with an error when attempting to cancel an order as a caller      other than the indicated offerer or zone.\"}],\"InvalidConduit(bytes32,address)\":[{\"details\":\"Revert with an error when attempting to fill an order referencing an      invalid conduit (i.e. one that has not been deployed).\"}],\"InvalidERC721TransferAmount()\":[{\"details\":\"Revert with an error when an ERC721 transfer with amount other than      one is attempted.\"}],\"InvalidMsgValue(uint256)\":[{\"details\":\"Revert with an error when a caller attempts to supply callvalue to a      non-payable basic order route or does not supply any callvalue to a      payable basic order route.\"}],\"InvalidSignature()\":[{\"details\":\"Revert with an error when a signer cannot be recovered from the      supplied signature.\"}],\"InvalidSigner()\":[{\"details\":\"Revert with an error when the signer recovered by the supplied      signature does not match the offerer or an allowed EIP-1271 signer      as specified by the offerer in the event they are a contract.\"}],\"InvalidTime()\":[{\"details\":\"Revert with an error when attempting to fill an order outside the      specified start time and end time.\"}],\"MissingItemAmount()\":[{\"details\":\"Revert with an error when attempting to fulfill an order where an      item has an amount of zero.\"}],\"MissingOriginalConsiderationItems()\":[{\"details\":\"Revert with an error when an order is supplied for fulfillment with      a consideration array that is shorter than the original array.\"}],\"NoContract(address)\":[{\"details\":\"Revert with an error when an account being called as an assumed      contract does not have code and returns no data.\",\"params\":{\"account\":\"The account that should contain code.\"}}],\"NoReentrantCalls()\":[{\"details\":\"Revert with an error when a caller attempts to reenter a protected      function.\"}],\"NoSpecifiedOrdersAvailable()\":[{\"details\":\"Revert with an error when attempting to fulfill any number of      available orders when none are fulfillable.\"}],\"OrderAlreadyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has      already been fully filled.\",\"params\":{\"orderHash\":\"The order hash on which a fill was attempted.\"}}],\"OrderIsCancelled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that has been      cancelled.\",\"params\":{\"orderHash\":\"The hash of the cancelled order.\"}}],\"OrderPartiallyFilled(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill a basic order that has      been partially filled.\",\"params\":{\"orderHash\":\"The hash of the partially used order.\"}}],\"PartialFillsNotEnabledForOrder()\":[{\"details\":\"Revert with an error when a partial fill is attempted on an order      that does not specify partial fill support in its order type.\"}],\"TokenTransferGenericFailure(address,address,address,uint256,uint256)\":[{\"details\":\"Revert with an error when an ERC20, ERC721, or ERC1155 token      transfer reverts.\",\"params\":{\"amount\":\"The amount for the attempted transfer.\",\"from\":\"The source of the attempted transfer.\",\"identifier\":\"The identifier for the attempted transfer.\",\"to\":\"The recipient of the attempted transfer.\",\"token\":\"The token for which the transfer was attempted.\"}}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Derive and set hashes, reference chainId, and associated domain      separator during deployment.\",\"params\":{\"conduitController\":\"A contract that deploys conduits, or proxies                          that may optionally be used to transfer approved                          ERC20/721/1155 tokens.\"}}},\"title\":\"Verifiers\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Verifiers contains functions for performing verifications.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/Verifiers.sol\":\"Verifiers\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/ConduitControllerInterface.sol\":{\"keccak256\":\"0x86b7ceb6ff7ce653fa7d0d79eeb8b96ec57eedd35f8c87e9838dde6c23f317bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://453fa0365834a50956e513d306371bfb7019124150bf9afd1699599fe6f7852c\",\"dweb:/ipfs/QmXiqKzGdj2A4TsuHtFLTgdLPRFwasbWWibNBRP5cikJod\"]},\"seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol\":{\"keccak256\":\"0xf0d0eda6b47217d0e7c2862fdd5d7857cb828f9e0fc52e2c37c6d2b454832a7b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://374d19e0d9e5ce76e10dce8bada5ee9d1adcd54898c0cba9099d0dd72a5bf996\",\"dweb:/ipfs/QmS49qk49jmkPuMzLbbop5s7eJxbfRzKokQXB2QJjfVPHT\"]},\"seaport/contracts/interfaces/EIP1271Interface.sol\":{\"keccak256\":\"0x3c60fdc09b2bc7cb3a615ca82ee1bd776813e75883515efd1e794fe8a3228f29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b17dda7065bffe0ba89c26d413e89c7e7e733f5e74cefba56799ebb57e60908\",\"dweb:/ipfs/QmT2DJBP4WvXYKyFusiSeJ7kbo4UVor4yKCkwEF237CqxZ\"]},\"seaport/contracts/interfaces/ReentrancyErrors.sol\":{\"keccak256\":\"0x9ab27fa5a68f55ad89072ea213c6f12979ae469041ca473d81f800dbdbe9bb48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0cc617da7254d981fd5970d16acc2a6f6fe2fe0bc3e2d0976f7c01a4893430ec\",\"dweb:/ipfs/QmbhqKxfhrfPAjp99LVspxopQG7Mb9L9xdSa38ujCxmvTJ\"]},\"seaport/contracts/interfaces/SignatureVerificationErrors.sol\":{\"keccak256\":\"0xb86f318b159c16087372e12b1e2c37c15fb745be1566bb03812e3814c15fb605\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ff051f5cb44654096126c9ec72d1aaebf568e87a01da6200e969e673b8c3e4bf\",\"dweb:/ipfs/QmaPKx8ikPxRzYRubNraLhPdnGmXunZ6WGhzaed18oBi66\"]},\"seaport/contracts/interfaces/TokenTransferrerErrors.sol\":{\"keccak256\":\"0x128fbb0236de5e52c34876c61148e04c12289e92d6bce2270760905617a01b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3ed114ea7bf9ce55065d853f0f705eb82cc840672e0c2ab899691ab5703d2e98\",\"dweb:/ipfs/QmXQsajetWBmU7tzjoFm5wyajRKrMMEGXFF7ZQxaH7ZceG\"]},\"seaport/contracts/lib/Assertions.sol\":{\"keccak256\":\"0xb2ef1d902d0eefb7aaffc720354dd0352f95442178091f059d31ebe096894586\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6f121104190dd5e5a4e98fcbf024ad300c4b9704768fdb49d81f270c22a8067\",\"dweb:/ipfs/QmWKzhVq1itpqTfeiCELGb1jDcTnBdCwroHgGMzqDuYWN8\"]},\"seaport/contracts/lib/ConsiderationBase.sol\":{\"keccak256\":\"0x1015a0bb6fff27278ceec2f76cbf0c775bfb3e8d03cafe8d3549e252e9563ba2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f7d3b48069268df59a77293a7cdc232df35c5b1c8b1974b422a850bedb875f6\",\"dweb:/ipfs/QmSMMnXqsUEWuC1u7BF6coTXK63BXaQYvWqX69doaatKw8\"]},\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]},\"seaport/contracts/lib/GettersAndDerivers.sol\":{\"keccak256\":\"0xb9d0cf2a84567b6b70e1ddd9e3450dddf8139e5396bcac24c42f46db16228efa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99767431817fd6b157bc199784ca3f3bc2cf024a332ae8e2a5eb7e3db0f2b47d\",\"dweb:/ipfs/QmPWaJet2TPiWc7xEo7QqVpctaLvXPZFep8R8Vi4ZRzzCw\"]},\"seaport/contracts/lib/LowLevelHelpers.sol\":{\"keccak256\":\"0x83085de63b870cfb3940c68d96a40b2cf9afb7280c1afa3034d1c55c80444a94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9ba49a7318a517e836811dfc67989e9f14959a7cd55220853af6b6273309543\",\"dweb:/ipfs/QmUAQr4SReMunUvwBxKPdd8XLPy5GKMEEhPwpD32UYn3kx\"]},\"seaport/contracts/lib/NonceManager.sol\":{\"keccak256\":\"0xe8b6e40830e216912ce483e867151e84cc0b290404220e1ed5fbb69821161f8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b4ef49cbc0b5385b64c1f8c9d5cf572dff35ec291970714ef11520de2c01ab9c\",\"dweb:/ipfs/QmfJoNCtAHUYsidmUaiMBP8wMzUYCtg33G8nUqyME5AftL\"]},\"seaport/contracts/lib/ReentrancyGuard.sol\":{\"keccak256\":\"0xec219fb657ce8400835d8d1ff87716247c5fdde51bca31fddf19415abad773db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eca390f7b8fbccc703ad22edd4f35fa896de59912f21d9471d51ef83b961d3c5\",\"dweb:/ipfs/QmXyxcfzgD4SaTtgqGjUjxK4tb76NiPcooMkL9c11yhm2L\"]},\"seaport/contracts/lib/SignatureVerification.sol\":{\"keccak256\":\"0x5833c9bf1ab9c8fbfeb723ff500722e269a1c05b0fe14d8a837e40c88138f4fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d0af100e71a40bc871019c7ebd5c786007deacbf58ee98bce204c43811c726dd\",\"dweb:/ipfs/QmSjdy3wSypHCxCdFGZxLFCCRJf7cfVn6MM75KUbj2y3jN\"]},\"seaport/contracts/lib/Verifiers.sol\":{\"keccak256\":\"0x69755b486d816164270d1b37c187ea7a3ce262e9d31153a88279fe6d8cb76cd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://16dc060d4321a17cdcbf1125b076bb9bbf75086a57d7c6eeca7e9845fcd6d76e\",\"dweb:/ipfs/QmSnF21ffxHnfiYRVVRopn2EcJagghQZTTcdDvMoiR9fsM\"]}},\"version\":1}"
        }
      },
      "seaport/contracts/lib/ZoneInteraction.sol": {
        "ZoneInteraction": {
          "abi": [
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "orderHash",
                  "type": "bytes32"
                }
              ],
              "name": "InvalidRestrictedOrder",
              "type": "error"
            }
          ],
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea2646970667358221220cfea8591a0a1d39edac88c9703db9c8d6132813a63f4803cdef80fb93fe14dc064736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x3F DUP1 PUSH1 0x1D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCF 0xEA DUP6 SWAP2 LOG0 LOG1 0xD3 SWAP15 0xDA 0xC8 DUP13 SWAP8 SUB 0xDB SWAP13 DUP14 PUSH2 0x3281 GASPRICE PUSH4 0xF4803CDE 0xF8 0xF 0xB9 EXTCODEHASH 0xE1 0x4D 0xC0 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "606:6331:41:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "6080604052600080fdfea2646970667358221220cfea8591a0a1d39edac88c9703db9c8d6132813a63f4803cdef80fb93fe14dc064736f6c634300080d0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCF 0xEA DUP6 SWAP2 LOG0 LOG1 0xD3 SWAP15 0xDA 0xC8 DUP13 SWAP8 SUB 0xDB SWAP13 DUP14 PUSH2 0x3281 GASPRICE PUSH4 0xF4803CDE 0xF8 0xF 0xB9 EXTCODEHASH 0xE1 0x4D 0xC0 PUSH5 0x736F6C6343 STOP ADDMOD 0xD STOP CALLER ",
              "sourceMap": "606:6331:41:-:0;;;;;"
            },
            "methodIdentifiers": {}
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.13+commit.abaa5c0e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"orderHash\",\"type\":\"bytes32\"}],\"name\":\"InvalidRestrictedOrder\",\"type\":\"error\"}],\"devdoc\":{\"author\":\"0age\",\"errors\":{\"InvalidRestrictedOrder(bytes32)\":[{\"details\":\"Revert with an error when attempting to fill an order that specifies      a restricted submitter as its order type when not submitted by      either the offerrer or the order's zone or approved as valid by the      zone in question via a staticcall to `isValidOrder`.\",\"params\":{\"orderHash\":\"The order hash for the invalid restricted order.\"}}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"ZoneInteraction\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"ZoneInteraction contains logic related to interacting with zones.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"seaport/contracts/lib/ZoneInteraction.sol\":\"ZoneInteraction\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"seaport/contracts/interfaces/ZoneInteractionErrors.sol\":{\"keccak256\":\"0x7cc23125af35b317beac057bfbe34291f6b2f34f37f7d698f5bc7373b09b4480\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c56917ceed46a2e3029b7daf5331cd6e3a10e3174287c9d2a5cccb5fb6e1568\",\"dweb:/ipfs/QmRdPmvPm2F2hXq4QwXZyavjMis1RmY5XLMZLzM45Cv9hT\"]},\"seaport/contracts/interfaces/ZoneInterface.sol\":{\"keccak256\":\"0x5c5d749fd3de01bd89acf7cb08f11d041b3a600819e18b8a51cebd65285ced46\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://43788f6ae192a2063f185ccb87853576e4d90ea8f1df19d1334d2e9be62333f3\",\"dweb:/ipfs/QmXSXFPhSNsTv4kvBZbCHwzakoAxvvnvZPSmw7CXg2j1vu\"]},\"seaport/contracts/lib/ConsiderationConstants.sol\":{\"keccak256\":\"0x3f15cd03ecbe4d3937f669283490772281d110ef3636fec54432f193780eb7ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ddd02f8839ef15c4aca0194b8c3e0b8f1e54a710fe78d6d9cb8971e21b6ed112\",\"dweb:/ipfs/QmWK6X95NiGTAHzgdPNvmYQxnBp2aC6E4m2x13z2uiUNQW\"]},\"seaport/contracts/lib/ConsiderationEnums.sol\":{\"keccak256\":\"0x3f967ba67e967471ec83f3e84f40d80baf452ad9c78e3bd3172f4652d0b570ee\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66537a037e8a0e4d20194935506a62c38ccdeb06053672973ed9848aeb7cbce6\",\"dweb:/ipfs/QmYXZaPBezG1GZofCDFeDHKPwQrdk9xBMA1MoJmLAjqoVV\"]},\"seaport/contracts/lib/ConsiderationStructs.sol\":{\"keccak256\":\"0xf3136a0bce21a579326cad0e67b0319e0c6f1c11d1f07b8f4ee5ec52e94e7f04\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de72c590532676c25b947871d993aa2b7dca26070458e6e497df23fdb7e68615\",\"dweb:/ipfs/QmPRRjf2VfLwbEUBK8FHhLDj4iv5sxS9a9zRb2CkWA2rFi\"]},\"seaport/contracts/lib/LowLevelHelpers.sol\":{\"keccak256\":\"0x83085de63b870cfb3940c68d96a40b2cf9afb7280c1afa3034d1c55c80444a94\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d9ba49a7318a517e836811dfc67989e9f14959a7cd55220853af6b6273309543\",\"dweb:/ipfs/QmUAQr4SReMunUvwBxKPdd8XLPy5GKMEEhPwpD32UYn3kx\"]},\"seaport/contracts/lib/ZoneInteraction.sol\":{\"keccak256\":\"0xbabb8f6c0659327e9ae9711d63c0d81f49789c32d1987170d772dac5bd9c0b48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ee495283ba0709d674062d80a6bcba9f54eed8d132283e500980fa63ac5dc217\",\"dweb:/ipfs/QmWQegpmWwk6dNxBpmXpVmPAq6LtQhDKUja9ewHeMsA1rM\"]}},\"version\":1}"
        }
      }
    },
    "sources": {
      "seaport/contracts/Consideration.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/Consideration.sol",
          "exportedSymbols": {
            "AdvancedOrder": [
              4031
            ],
            "BasicOrderParameters": [
              3980
            ],
            "Consideration": [
              408
            ],
            "ConsiderationInterface": [
              2144
            ],
            "CriteriaResolver": [
              4053
            ],
            "Execution": [
              4075
            ],
            "Fulfillment": [
              4062
            ],
            "FulfillmentComponent": [
              4067
            ],
            "Order": [
              4019
            ],
            "OrderCombiner": [
              6541
            ],
            "OrderComponents": [
              3892
            ],
            "OrderParameters": [
              4013
            ],
            "OrderStatus": [
              4040
            ]
          },
          "id": 409,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:0"
            },
            {
              "absolutePath": "seaport/contracts/interfaces/ConsiderationInterface.sol",
              "file": "./interfaces/ConsiderationInterface.sol",
              "id": 3,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 409,
              "sourceUnit": 2145,
              "src": "76:85:0",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2,
                    "name": "ConsiderationInterface",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2144,
                    "src": "89:22:0",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationStructs.sol",
              "file": "./lib/ConsiderationStructs.sol",
              "id": 14,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 409,
              "sourceUnit": 4076,
              "src": "182:243:0",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4,
                    "name": "OrderComponents",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3892,
                    "src": "195:15:0",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5,
                    "name": "BasicOrderParameters",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3980,
                    "src": "216:20:0",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 6,
                    "name": "OrderParameters",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4013,
                    "src": "242:15:0",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 7,
                    "name": "Order",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4019,
                    "src": "263:5:0",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 8,
                    "name": "AdvancedOrder",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4031,
                    "src": "274:13:0",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 9,
                    "name": "OrderStatus",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4040,
                    "src": "293:11:0",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 10,
                    "name": "CriteriaResolver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4053,
                    "src": "310:16:0",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 11,
                    "name": "Fulfillment",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4062,
                    "src": "332:11:0",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 12,
                    "name": "FulfillmentComponent",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4067,
                    "src": "349:20:0",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 13,
                    "name": "Execution",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4075,
                    "src": "375:9:0",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/OrderCombiner.sol",
              "file": "./lib/OrderCombiner.sol",
              "id": 16,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 409,
              "sourceUnit": 6542,
              "src": "427:56:0",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 15,
                    "name": "OrderCombiner",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6541,
                    "src": "436:13:0",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 18,
                    "name": "ConsiderationInterface",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2144,
                    "src": "1183:22:0"
                  },
                  "id": 19,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1183:22:0"
                },
                {
                  "baseName": {
                    "id": 20,
                    "name": "OrderCombiner",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 6541,
                    "src": "1207:13:0"
                  },
                  "id": 21,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1207:13:0"
                }
              ],
              "canonicalName": "Consideration",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 17,
                "nodeType": "StructuredDocumentation",
                "src": "485:671:0",
                "text": " @title Consideration\n @author 0age\n @custom:coauthor d1ll0n\n @custom:coauthor transmissions11\n @custom:version 1\n @notice Consideration is a generalized ETH/ERC20/ERC721/ERC1155 marketplace.\n         It minimizes external calls to the greatest extent possible and\n         provides lightweight methods for common routes as well as more\n         flexible methods for composing advanced orders or groups of orders.\n         Each order contains an arbitrary number of items that may be spent\n         (the \"offer\") along with an arbitrary number of items that must be\n         received back by the indicated recipients (the \"consideration\")."
              },
              "fullyImplemented": true,
              "id": 408,
              "linearizedBaseContracts": [
                408,
                6541,
                5325,
                2202,
                7063,
                2491,
                1542,
                4450,
                2169,
                3152,
                7714,
                8592,
                5018,
                7981,
                8379,
                7917,
                5505,
                2290,
                2227,
                2594,
                2281,
                5561,
                7768,
                2209,
                5465,
                3384,
                1924,
                2144
              ],
              "name": "Consideration",
              "nameLocation": "1166:13:0",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 30,
                    "nodeType": "Block",
                    "src": "1658:2:0",
                    "statements": []
                  },
                  "documentation": {
                    "id": 22,
                    "nodeType": "StructuredDocumentation",
                    "src": "1227:354:0",
                    "text": " @notice Derive and set hashes, reference chainId, and associated domain\n         separator during deployment.\n @param conduitController A contract that deploys conduits, or proxies\n                          that may optionally be used to transfer approved\n                          ERC20/721/1155 tokens."
                  },
                  "id": 31,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 27,
                          "name": "conduitController",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24,
                          "src": "1639:17:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 28,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 26,
                        "name": "OrderCombiner",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 6541,
                        "src": "1625:13:0"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1625:32:0"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 25,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 24,
                        "mutability": "mutable",
                        "name": "conduitController",
                        "nameLocation": "1606:17:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 31,
                        "src": "1598:25:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 23,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1598:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1597:27:0"
                  },
                  "returnParameters": {
                    "id": 29,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1658:0:0"
                  },
                  "scope": 408,
                  "src": "1586:74:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1946
                  ],
                  "body": {
                    "id": 47,
                    "nodeType": "Block",
                    "src": "3505:119:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 45,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 41,
                            "name": "fulfilled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 39,
                            "src": "3564:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 43,
                                "name": "parameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 35,
                                "src": "3606:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                  "typeString": "struct BasicOrderParameters calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                  "typeString": "struct BasicOrderParameters calldata"
                                }
                              ],
                              "id": 42,
                              "name": "_validateAndFulfillBasicOrder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2865,
                              "src": "3576:29:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_BasicOrderParameters_$3980_calldata_ptr_$returns$_t_bool_$",
                                "typeString": "function (struct BasicOrderParameters calldata) returns (bool)"
                              }
                            },
                            "id": 44,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3576:41:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3564:53:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 46,
                        "nodeType": "ExpressionStatement",
                        "src": "3564:53:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 32,
                    "nodeType": "StructuredDocumentation",
                    "src": "1666:1678:0",
                    "text": " @notice Fulfill an order offering an ERC20, ERC721, or ERC1155 item by\n         supplying Ether (or other native tokens), ERC20 tokens, an ERC721\n         item, or an ERC1155 item as consideration. Six permutations are\n         supported: Native token to ERC721, Native token to ERC1155, ERC20\n         to ERC721, ERC20 to ERC1155, ERC721 to ERC20, and ERC1155 to\n         ERC20 (with native tokens supplied as msg.value). For an order to\n         be eligible for fulfillment via this method, it must contain a\n         single offer item (though that item may have a greater amount if\n         the item is not an ERC721). An arbitrary number of \"additional\n         recipients\" may also be supplied which will each receive native\n         tokens or ERC20 items from the fulfiller as consideration. Refer\n         to the documentation for a more comprehensive summary of how to\n         utilize this method and what orders are compatible with it.\n @param parameters Additional information on the fulfilled order. Note\n                   that the offerer and the fulfiller must first approve\n                   this contract (or their chosen conduit if indicated)\n                   before any tokens can be transferred. Also note that\n                   contract recipients of ERC1155 consideration items must\n                   implement `onERC1155Received` in order to receive those\n                   items.\n @return fulfilled A boolean indicating whether the order has been\n                   successfully fulfilled."
                  },
                  "functionSelector": "fb0f3ee1",
                  "id": 48,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "fulfillBasicOrder",
                  "nameLocation": "3358:17:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 37,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3459:8:0"
                  },
                  "parameters": {
                    "id": 36,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 35,
                        "mutability": "mutable",
                        "name": "parameters",
                        "nameLocation": "3406:10:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 48,
                        "src": "3376:40:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                          "typeString": "struct BasicOrderParameters"
                        },
                        "typeName": {
                          "id": 34,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 33,
                            "name": "BasicOrderParameters",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3980,
                            "src": "3376:20:0"
                          },
                          "referencedDeclaration": 3980,
                          "src": "3376:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_storage_ptr",
                            "typeString": "struct BasicOrderParameters"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3375:42:0"
                  },
                  "returnParameters": {
                    "id": 40,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 39,
                        "mutability": "mutable",
                        "name": "fulfilled",
                        "nameLocation": "3490:9:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 48,
                        "src": "3485:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 38,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3485:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3484:16:0"
                  },
                  "scope": 408,
                  "src": "3349:275:0",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1957
                  ],
                  "body": {
                    "id": 75,
                    "nodeType": "Block",
                    "src": "5142:298:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 73,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 60,
                            "name": "fulfilled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 58,
                            "src": "5228:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 63,
                                    "name": "order",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 52,
                                    "src": "5310:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Order_$4019_calldata_ptr",
                                      "typeString": "struct Order calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_Order_$4019_calldata_ptr",
                                      "typeString": "struct Order calldata"
                                    }
                                  ],
                                  "id": 62,
                                  "name": "_convertOrderToAdvanced",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7010,
                                  "src": "5286:23:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$4019_calldata_ptr_$returns$_t_struct$_AdvancedOrder_$4031_memory_ptr_$",
                                    "typeString": "function (struct Order calldata) pure returns (struct AdvancedOrder memory)"
                                  }
                                },
                                "id": 64,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5286:30:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                  "typeString": "struct AdvancedOrder memory"
                                }
                              },
                              {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 69,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5353:1:0",
                                    "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": 68,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "NewExpression",
                                  "src": "5330:22:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256) pure returns (struct CriteriaResolver memory[] memory)"
                                  },
                                  "typeName": {
                                    "baseType": {
                                      "id": 66,
                                      "nodeType": "UserDefinedTypeName",
                                      "pathNode": {
                                        "id": 65,
                                        "name": "CriteriaResolver",
                                        "nodeType": "IdentifierPath",
                                        "referencedDeclaration": 4053,
                                        "src": "5334:16:0"
                                      },
                                      "referencedDeclaration": 4053,
                                      "src": "5334:16:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                                        "typeString": "struct CriteriaResolver"
                                      }
                                    },
                                    "id": 67,
                                    "nodeType": "ArrayTypeName",
                                    "src": "5334:18:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_storage_$dyn_storage_ptr",
                                      "typeString": "struct CriteriaResolver[]"
                                    }
                                  }
                                },
                                "id": 70,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5330:25:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct CriteriaResolver memory[] memory"
                                }
                              },
                              {
                                "id": 71,
                                "name": "fulfillerConduitKey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 54,
                                "src": "5404:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                  "typeString": "struct AdvancedOrder memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct CriteriaResolver memory[] memory"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 61,
                              "name": "_validateAndFulfillAdvancedOrder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6676,
                              "src": "5240:32:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AdvancedOrder_$4031_memory_ptr_$_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr_$_t_bytes32_$returns$_t_bool_$",
                                "typeString": "function (struct AdvancedOrder memory,struct CriteriaResolver memory[] memory,bytes32) returns (bool)"
                              }
                            },
                            "id": 72,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5240:193:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5228:205:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 74,
                        "nodeType": "ExpressionStatement",
                        "src": "5228:205:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 49,
                    "nodeType": "StructuredDocumentation",
                    "src": "3630:1347:0",
                    "text": " @notice Fulfill an order with an arbitrary number of items for offer and\n         consideration. Note that this function does not support\n         criteria-based orders or partial filling of orders (though\n         filling the remainder of a partially-filled order is supported).\n @param order               The order to fulfill. Note that both the\n                            offerer and the fulfiller must first approve\n                            this contract (or the corresponding conduit if\n                            indicated) to transfer any relevant tokens on\n                            their behalf and that contracts must implement\n                            `onERC1155Received` to receive ERC1155 tokens\n                            as consideration.\n @param fulfillerConduitKey A bytes32 value indicating what conduit, if\n                            any, to source the fulfiller's token approvals\n                            from. The zero hash signifies that no conduit\n                            should be used (and direct approvals set on\n                            Consideration).\n @return fulfilled A boolean indicating whether the order has been\n                   successfully fulfilled."
                  },
                  "functionSelector": "b3a34c4c",
                  "id": 76,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "fulfillOrder",
                  "nameLocation": "4991:12:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 56,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5096:8:0"
                  },
                  "parameters": {
                    "id": 55,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 52,
                        "mutability": "mutable",
                        "name": "order",
                        "nameLocation": "5019:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 76,
                        "src": "5004:20:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Order_$4019_calldata_ptr",
                          "typeString": "struct Order"
                        },
                        "typeName": {
                          "id": 51,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 50,
                            "name": "Order",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4019,
                            "src": "5004:5:0"
                          },
                          "referencedDeclaration": 4019,
                          "src": "5004:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Order_$4019_storage_ptr",
                            "typeString": "struct Order"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 54,
                        "mutability": "mutable",
                        "name": "fulfillerConduitKey",
                        "nameLocation": "5034:19:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 76,
                        "src": "5026:27:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 53,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5026:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5003:51:0"
                  },
                  "returnParameters": {
                    "id": 59,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 58,
                        "mutability": "mutable",
                        "name": "fulfilled",
                        "nameLocation": "5127:9:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 76,
                        "src": "5122:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 57,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5122:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5121:16:0"
                  },
                  "scope": 408,
                  "src": "4982:458:0",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1972
                  ],
                  "body": {
                    "id": 100,
                    "nodeType": "Block",
                    "src": "8146:205:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 98,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 92,
                            "name": "fulfilled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 90,
                            "src": "8199:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 94,
                                "name": "advancedOrder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 80,
                                "src": "8257:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AdvancedOrder_$4031_calldata_ptr",
                                  "typeString": "struct AdvancedOrder calldata"
                                }
                              },
                              {
                                "id": 95,
                                "name": "criteriaResolvers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 84,
                                "src": "8284:17:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "struct CriteriaResolver calldata[] calldata"
                                }
                              },
                              {
                                "id": 96,
                                "name": "fulfillerConduitKey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 86,
                                "src": "8315:19:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_AdvancedOrder_$4031_calldata_ptr",
                                  "typeString": "struct AdvancedOrder calldata"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "struct CriteriaResolver calldata[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 93,
                              "name": "_validateAndFulfillAdvancedOrder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6676,
                              "src": "8211:32:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AdvancedOrder_$4031_memory_ptr_$_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr_$_t_bytes32_$returns$_t_bool_$",
                                "typeString": "function (struct AdvancedOrder memory,struct CriteriaResolver memory[] memory,bytes32) returns (bool)"
                              }
                            },
                            "id": 97,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8211:133:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "8199:145:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 99,
                        "nodeType": "ExpressionStatement",
                        "src": "8199:145:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 77,
                    "nodeType": "StructuredDocumentation",
                    "src": "5446:2470:0",
                    "text": " @notice Fill an order, fully or partially, with an arbitrary number of\n         items for offer and consideration alongside criteria resolvers\n         containing specific token identifiers and associated proofs.\n @param advancedOrder       The order to fulfill along with the fraction\n                            of the order to attempt to fill. Note that\n                            both the offerer and the fulfiller must first\n                            approve this contract (or their conduit if\n                            indicated by the order) to transfer any\n                            relevant tokens on their behalf and that\n                            contracts must implement `onERC1155Received`\n                            to receive ERC1155 tokens as consideration.\n                            Also note that all offer and consideration\n                            components must have no remainder after\n                            multiplication of the respective amount with\n                            the supplied fraction for the partial fill to\n                            be considered valid.\n @param criteriaResolvers   An array where each element contains a\n                            reference to a specific offer or\n                            consideration, a token identifier, and a proof\n                            that the supplied token identifier is\n                            contained in the merkle root held by the item\n                            in question's criteria element. Note that an\n                            empty criteria indicates that any\n                            (transferrable) token identifier on the token\n                            in question is valid and that no associated\n                            proof needs to be supplied.\n @param fulfillerConduitKey A bytes32 value indicating what conduit, if\n                            any, to source the fulfiller's token approvals\n                            from. The zero hash signifies that no conduit\n                            should be used (and direct approvals set on\n                            Consideration).\n @return fulfilled A boolean indicating whether the order has been\n                   successfully fulfilled."
                  },
                  "functionSelector": "df7b0dac",
                  "id": 101,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "fulfillAdvancedOrder",
                  "nameLocation": "7930:20:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 88,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8112:8:0"
                  },
                  "parameters": {
                    "id": 87,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 80,
                        "mutability": "mutable",
                        "name": "advancedOrder",
                        "nameLocation": "7983:13:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 101,
                        "src": "7960:36:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_calldata_ptr",
                          "typeString": "struct AdvancedOrder"
                        },
                        "typeName": {
                          "id": 79,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 78,
                            "name": "AdvancedOrder",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4031,
                            "src": "7960:13:0"
                          },
                          "referencedDeclaration": 4031,
                          "src": "7960:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                            "typeString": "struct AdvancedOrder"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 84,
                        "mutability": "mutable",
                        "name": "criteriaResolvers",
                        "nameLocation": "8034:17:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 101,
                        "src": "8006:45:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct CriteriaResolver[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 82,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 81,
                              "name": "CriteriaResolver",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4053,
                              "src": "8006:16:0"
                            },
                            "referencedDeclaration": 4053,
                            "src": "8006:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                              "typeString": "struct CriteriaResolver"
                            }
                          },
                          "id": 83,
                          "nodeType": "ArrayTypeName",
                          "src": "8006:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_storage_$dyn_storage_ptr",
                            "typeString": "struct CriteriaResolver[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 86,
                        "mutability": "mutable",
                        "name": "fulfillerConduitKey",
                        "nameLocation": "8069:19:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 101,
                        "src": "8061:27:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 85,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "8061:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7950:144:0"
                  },
                  "returnParameters": {
                    "id": 91,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 90,
                        "mutability": "mutable",
                        "name": "fulfilled",
                        "nameLocation": "8135:9:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 101,
                        "src": "8130:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 89,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8130:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8129:16:0"
                  },
                  "scope": 408,
                  "src": "7921:430:0",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2001
                  ],
                  "body": {
                    "id": 147,
                    "nodeType": "Block",
                    "src": "11751:470:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 133,
                                  "name": "orders",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 106,
                                  "src": "11935:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct Order calldata[] calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct Order calldata[] calldata"
                                  }
                                ],
                                "id": 132,
                                "name": "_convertOrdersToAdvanced",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7062,
                                "src": "11910:24:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr_$returns$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$",
                                  "typeString": "function (struct Order calldata[] calldata) pure returns (struct AdvancedOrder memory[] memory)"
                                }
                              },
                              "id": 134,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11910:32:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 139,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12014:1:0",
                                  "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": 138,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "11991:22:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (struct CriteriaResolver memory[] memory)"
                                },
                                "typeName": {
                                  "baseType": {
                                    "id": 136,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 135,
                                      "name": "CriteriaResolver",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 4053,
                                      "src": "11995:16:0"
                                    },
                                    "referencedDeclaration": 4053,
                                    "src": "11995:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                                      "typeString": "struct CriteriaResolver"
                                    }
                                  },
                                  "id": 137,
                                  "nodeType": "ArrayTypeName",
                                  "src": "11995:18:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_storage_$dyn_storage_ptr",
                                    "typeString": "struct CriteriaResolver[]"
                                  }
                                }
                              },
                              "id": 140,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11991:25:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct CriteriaResolver memory[] memory"
                              }
                            },
                            {
                              "id": 141,
                              "name": "offerFulfillments",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 111,
                              "src": "12069:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct FulfillmentComponent calldata[] calldata[] calldata"
                              }
                            },
                            {
                              "id": 142,
                              "name": "considerationFulfillments",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 116,
                              "src": "12104:25:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct FulfillmentComponent calldata[] calldata[] calldata"
                              }
                            },
                            {
                              "id": 143,
                              "name": "fulfillerConduitKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 118,
                              "src": "12147:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 144,
                              "name": "maximumFulfilled",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 120,
                              "src": "12184:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct CriteriaResolver memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct FulfillmentComponent calldata[] calldata[] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct FulfillmentComponent calldata[] calldata[] calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 131,
                            "name": "_fulfillAvailableAdvancedOrders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5655,
                            "src": "11861:31:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr_$_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr_$_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr_$_t_bytes32_$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (struct AdvancedOrder memory[] memory,struct CriteriaResolver memory[] memory,struct FulfillmentComponent calldata[] calldata[] calldata,struct FulfillmentComponent calldata[] calldata[] calldata,bytes32,uint256) returns (bool[] memory,struct Execution memory[] memory)"
                            }
                          },
                          "id": 145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11861:353:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_bool_$dyn_memory_ptr_$_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr_$",
                            "typeString": "tuple(bool[] memory,struct Execution memory[] memory)"
                          }
                        },
                        "functionReturnParameters": 130,
                        "id": 146,
                        "nodeType": "Return",
                        "src": "11842:372:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 102,
                    "nodeType": "StructuredDocumentation",
                    "src": "8357:2984:0",
                    "text": " @notice Attempt to fill a group of orders, each with an arbitrary number\n         of items for offer and consideration. Any order that is not\n         currently active, has already been fully filled, or has been\n         cancelled will be omitted. Remaining offer and consideration\n         items will then be aggregated where possible as indicated by the\n         supplied offer and consideration component arrays and aggregated\n         items will be transferred to the fulfiller or to each intended\n         recipient, respectively. Note that a failing item transfer or an\n         issue with order formatting will cause the entire batch to fail.\n         Note that this function does not support criteria-based orders or\n         partial filling of orders (though filling the remainder of a\n         partially-filled order is supported).\n @param orders                    The orders to fulfill. Note that both\n                                  the offerer and the fulfiller must first\n                                  approve this contract (or the\n                                  corresponding conduit if indicated) to\n                                  transfer any relevant tokens on their\n                                  behalf and that contracts must implement\n                                  `onERC1155Received` to receive ERC1155\n                                  tokens as consideration.\n @param offerFulfillments         An array of FulfillmentComponent arrays\n                                  indicating which offer items to attempt\n                                  to aggregate when preparing executions.\n @param considerationFulfillments An array of FulfillmentComponent arrays\n                                  indicating which consideration items to\n                                  attempt to aggregate when preparing\n                                  executions.\n @param fulfillerConduitKey       A bytes32 value indicating what conduit,\n                                  if any, to source the fulfiller's token\n                                  approvals from. The zero hash signifies\n                                  that no conduit should be used (and\n                                  direct approvals set on Consideration).\n @param maximumFulfilled          The maximum number of orders to fulfill.\n @return availableOrders An array of booleans indicating if each order\n                         with an index corresponding to the index of the\n                         returned boolean was fulfillable or not.\n @return executions      An array of elements indicating the sequence of\n                         transfers performed as part of matching the given\n                         orders."
                  },
                  "functionSelector": "ed98a574",
                  "id": 148,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "fulfillAvailableOrders",
                  "nameLocation": "11355:22:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 122,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "11659:8:0"
                  },
                  "parameters": {
                    "id": 121,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 106,
                        "mutability": "mutable",
                        "name": "orders",
                        "nameLocation": "11404:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 148,
                        "src": "11387:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct Order[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 104,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 103,
                              "name": "Order",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4019,
                              "src": "11387:5:0"
                            },
                            "referencedDeclaration": 4019,
                            "src": "11387:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Order_$4019_storage_ptr",
                              "typeString": "struct Order"
                            }
                          },
                          "id": 105,
                          "nodeType": "ArrayTypeName",
                          "src": "11387:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Order_$4019_storage_$dyn_storage_ptr",
                            "typeString": "struct Order[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 111,
                        "mutability": "mutable",
                        "name": "offerFulfillments",
                        "nameLocation": "11454:17:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 148,
                        "src": "11420:51:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct FulfillmentComponent[][]"
                        },
                        "typeName": {
                          "baseType": {
                            "baseType": {
                              "id": 108,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 107,
                                "name": "FulfillmentComponent",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4067,
                                "src": "11420:20:0"
                              },
                              "referencedDeclaration": 4067,
                              "src": "11420:20:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                                "typeString": "struct FulfillmentComponent"
                              }
                            },
                            "id": 109,
                            "nodeType": "ArrayTypeName",
                            "src": "11420:22:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                              "typeString": "struct FulfillmentComponent[]"
                            }
                          },
                          "id": 110,
                          "nodeType": "ArrayTypeName",
                          "src": "11420:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_$dyn_storage_ptr",
                            "typeString": "struct FulfillmentComponent[][]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 116,
                        "mutability": "mutable",
                        "name": "considerationFulfillments",
                        "nameLocation": "11515:25:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 148,
                        "src": "11481:59:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct FulfillmentComponent[][]"
                        },
                        "typeName": {
                          "baseType": {
                            "baseType": {
                              "id": 113,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 112,
                                "name": "FulfillmentComponent",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4067,
                                "src": "11481:20:0"
                              },
                              "referencedDeclaration": 4067,
                              "src": "11481:20:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                                "typeString": "struct FulfillmentComponent"
                              }
                            },
                            "id": 114,
                            "nodeType": "ArrayTypeName",
                            "src": "11481:22:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                              "typeString": "struct FulfillmentComponent[]"
                            }
                          },
                          "id": 115,
                          "nodeType": "ArrayTypeName",
                          "src": "11481:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_$dyn_storage_ptr",
                            "typeString": "struct FulfillmentComponent[][]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 118,
                        "mutability": "mutable",
                        "name": "fulfillerConduitKey",
                        "nameLocation": "11558:19:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 148,
                        "src": "11550:27:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 117,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11550:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 120,
                        "mutability": "mutable",
                        "name": "maximumFulfilled",
                        "nameLocation": "11595:16:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 148,
                        "src": "11587:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 119,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11587:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11377:240:0"
                  },
                  "returnParameters": {
                    "id": 130,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 125,
                        "mutability": "mutable",
                        "name": "availableOrders",
                        "nameLocation": "11699:15:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 148,
                        "src": "11685:29:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 123,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "11685:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 124,
                          "nodeType": "ArrayTypeName",
                          "src": "11685:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 129,
                        "mutability": "mutable",
                        "name": "executions",
                        "nameLocation": "11735:10:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 148,
                        "src": "11716:29:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Execution[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 127,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 126,
                              "name": "Execution",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4075,
                              "src": "11716:9:0"
                            },
                            "referencedDeclaration": 4075,
                            "src": "11716:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                              "typeString": "struct Execution"
                            }
                          },
                          "id": 128,
                          "nodeType": "ArrayTypeName",
                          "src": "11716:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_storage_$dyn_storage_ptr",
                            "typeString": "struct Execution[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11684:62:0"
                  },
                  "scope": 408,
                  "src": "11346:875:0",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2034
                  ],
                  "body": {
                    "id": 191,
                    "nodeType": "Block",
                    "src": "17070:338:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 183,
                              "name": "advancedOrders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 153,
                              "src": "17189:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              }
                            },
                            {
                              "id": 184,
                              "name": "criteriaResolvers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 157,
                              "src": "17221:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct CriteriaResolver calldata[] calldata"
                              }
                            },
                            {
                              "id": 185,
                              "name": "offerFulfillments",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 162,
                              "src": "17256:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct FulfillmentComponent calldata[] calldata[] calldata"
                              }
                            },
                            {
                              "id": 186,
                              "name": "considerationFulfillments",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 167,
                              "src": "17291:25:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct FulfillmentComponent calldata[] calldata[] calldata"
                              }
                            },
                            {
                              "id": 187,
                              "name": "fulfillerConduitKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 169,
                              "src": "17334:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 188,
                              "name": "maximumFulfilled",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 171,
                              "src": "17371:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct CriteriaResolver calldata[] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct FulfillmentComponent calldata[] calldata[] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct FulfillmentComponent calldata[] calldata[] calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 182,
                            "name": "_fulfillAvailableAdvancedOrders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5655,
                            "src": "17140:31:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr_$_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr_$_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr_$_t_bytes32_$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (struct AdvancedOrder memory[] memory,struct CriteriaResolver memory[] memory,struct FulfillmentComponent calldata[] calldata[] calldata,struct FulfillmentComponent calldata[] calldata[] calldata,bytes32,uint256) returns (bool[] memory,struct Execution memory[] memory)"
                            }
                          },
                          "id": 189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17140:261:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_bool_$dyn_memory_ptr_$_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr_$",
                            "typeString": "tuple(bool[] memory,struct Execution memory[] memory)"
                          }
                        },
                        "functionReturnParameters": 181,
                        "id": 190,
                        "nodeType": "Return",
                        "src": "17121:280:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 149,
                    "nodeType": "StructuredDocumentation",
                    "src": "12227:4356:0",
                    "text": " @notice Attempt to fill a group of orders, fully or partially, with an\n         arbitrary number of items for offer and consideration per order\n         alongside criteria resolvers containing specific token\n         identifiers and associated proofs. Any order that is not\n         currently active, has already been fully filled, or has been\n         cancelled will be omitted. Remaining offer and consideration\n         items will then be aggregated where possible as indicated by the\n         supplied offer and consideration component arrays and aggregated\n         items will be transferred to the fulfiller or to each intended\n         recipient, respectively. Note that a failing item transfer or an\n         issue with order formatting will cause the entire batch to fail.\n @param advancedOrders            The orders to fulfill along with the\n                                  fraction of those orders to attempt to\n                                  fill. Note that both the offerer and the\n                                  fulfiller must first approve this\n                                  contract (or their conduit if indicated\n                                  by the order) to transfer any relevant\n                                  tokens on their behalf and that\n                                  contracts must implement\n                                  `onERC1155Received` in order to receive\n                                  ERC1155 tokens as consideration. Also\n                                  note that all offer and consideration\n                                  components must have no remainder after\n                                  multiplication of the respective amount\n                                  with the supplied fraction for an\n                                  order's partial fill amount to be\n                                  considered valid.\n @param criteriaResolvers         An array where each element contains a\n                                  reference to a specific offer or\n                                  consideration, a token identifier, and a\n                                  proof that the supplied token identifier\n                                  is contained in the merkle root held by\n                                  the item in question's criteria element.\n                                  Note that an empty criteria indicates\n                                  that any (transferrable) token\n                                  identifier on the token in question is\n                                  valid and that no associated proof needs\n                                  to be supplied.\n @param offerFulfillments         An array of FulfillmentComponent arrays\n                                  indicating which offer items to attempt\n                                  to aggregate when preparing executions.\n @param considerationFulfillments An array of FulfillmentComponent arrays\n                                  indicating which consideration items to\n                                  attempt to aggregate when preparing\n                                  executions.\n @param fulfillerConduitKey       A bytes32 value indicating what conduit,\n                                  if any, to source the fulfiller's token\n                                  approvals from. The zero hash signifies\n                                  that no conduit should be used (and\n                                  direct approvals set on Consideration).\n @param maximumFulfilled          The maximum number of orders to fulfill.\n @return availableOrders An array of booleans indicating if each order\n                         with an index corresponding to the index of the\n                         returned boolean was fulfillable or not.\n @return executions      An array of elements indicating the sequence of\n                         transfers performed as part of matching the given\n                         orders."
                  },
                  "functionSelector": "fb4c2af9",
                  "id": 192,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "fulfillAvailableAdvancedOrders",
                  "nameLocation": "16597:30:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 173,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "16978:8:0"
                  },
                  "parameters": {
                    "id": 172,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 153,
                        "mutability": "mutable",
                        "name": "advancedOrders",
                        "nameLocation": "16660:14:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 192,
                        "src": "16637:37:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct AdvancedOrder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 151,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 150,
                              "name": "AdvancedOrder",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4031,
                              "src": "16637:13:0"
                            },
                            "referencedDeclaration": 4031,
                            "src": "16637:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                              "typeString": "struct AdvancedOrder"
                            }
                          },
                          "id": 152,
                          "nodeType": "ArrayTypeName",
                          "src": "16637:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                            "typeString": "struct AdvancedOrder[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 157,
                        "mutability": "mutable",
                        "name": "criteriaResolvers",
                        "nameLocation": "16712:17:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 192,
                        "src": "16684:45:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct CriteriaResolver[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 155,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 154,
                              "name": "CriteriaResolver",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4053,
                              "src": "16684:16:0"
                            },
                            "referencedDeclaration": 4053,
                            "src": "16684:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                              "typeString": "struct CriteriaResolver"
                            }
                          },
                          "id": 156,
                          "nodeType": "ArrayTypeName",
                          "src": "16684:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_storage_$dyn_storage_ptr",
                            "typeString": "struct CriteriaResolver[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 162,
                        "mutability": "mutable",
                        "name": "offerFulfillments",
                        "nameLocation": "16773:17:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 192,
                        "src": "16739:51:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct FulfillmentComponent[][]"
                        },
                        "typeName": {
                          "baseType": {
                            "baseType": {
                              "id": 159,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 158,
                                "name": "FulfillmentComponent",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4067,
                                "src": "16739:20:0"
                              },
                              "referencedDeclaration": 4067,
                              "src": "16739:20:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                                "typeString": "struct FulfillmentComponent"
                              }
                            },
                            "id": 160,
                            "nodeType": "ArrayTypeName",
                            "src": "16739:22:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                              "typeString": "struct FulfillmentComponent[]"
                            }
                          },
                          "id": 161,
                          "nodeType": "ArrayTypeName",
                          "src": "16739:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_$dyn_storage_ptr",
                            "typeString": "struct FulfillmentComponent[][]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 167,
                        "mutability": "mutable",
                        "name": "considerationFulfillments",
                        "nameLocation": "16834:25:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 192,
                        "src": "16800:59:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct FulfillmentComponent[][]"
                        },
                        "typeName": {
                          "baseType": {
                            "baseType": {
                              "id": 164,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 163,
                                "name": "FulfillmentComponent",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4067,
                                "src": "16800:20:0"
                              },
                              "referencedDeclaration": 4067,
                              "src": "16800:20:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                                "typeString": "struct FulfillmentComponent"
                              }
                            },
                            "id": 165,
                            "nodeType": "ArrayTypeName",
                            "src": "16800:22:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                              "typeString": "struct FulfillmentComponent[]"
                            }
                          },
                          "id": 166,
                          "nodeType": "ArrayTypeName",
                          "src": "16800:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_$dyn_storage_ptr",
                            "typeString": "struct FulfillmentComponent[][]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 169,
                        "mutability": "mutable",
                        "name": "fulfillerConduitKey",
                        "nameLocation": "16877:19:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 192,
                        "src": "16869:27:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 168,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "16869:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 171,
                        "mutability": "mutable",
                        "name": "maximumFulfilled",
                        "nameLocation": "16914:16:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 192,
                        "src": "16906:24:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 170,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16906:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16627:309:0"
                  },
                  "returnParameters": {
                    "id": 181,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 176,
                        "mutability": "mutable",
                        "name": "availableOrders",
                        "nameLocation": "17018:15:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 192,
                        "src": "17004:29:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 174,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "17004:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 175,
                          "nodeType": "ArrayTypeName",
                          "src": "17004:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 180,
                        "mutability": "mutable",
                        "name": "executions",
                        "nameLocation": "17054:10:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 192,
                        "src": "17035:29:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Execution[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 178,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 177,
                              "name": "Execution",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4075,
                              "src": "17035:9:0"
                            },
                            "referencedDeclaration": 4075,
                            "src": "17035:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                              "typeString": "struct Execution"
                            }
                          },
                          "id": 179,
                          "nodeType": "ArrayTypeName",
                          "src": "17035:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_storage_$dyn_storage_ptr",
                            "typeString": "struct Execution[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17003:62:0"
                  },
                  "scope": 408,
                  "src": "16588:820:0",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2050
                  ],
                  "body": {
                    "id": 222,
                    "nodeType": "Block",
                    "src": "19080:307:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 211,
                                  "name": "orders",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 197,
                                  "src": "19251:6:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct Order calldata[] calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct Order calldata[] calldata"
                                  }
                                ],
                                "id": 210,
                                "name": "_convertOrdersToAdvanced",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7062,
                                "src": "19226:24:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr_$returns$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$",
                                  "typeString": "function (struct Order calldata[] calldata) pure returns (struct AdvancedOrder memory[] memory)"
                                }
                              },
                              "id": 212,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19226:32:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 217,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19299:1:0",
                                  "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": 216,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "NewExpression",
                                "src": "19276:22:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr_$",
                                  "typeString": "function (uint256) pure returns (struct CriteriaResolver memory[] memory)"
                                },
                                "typeName": {
                                  "baseType": {
                                    "id": 214,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 213,
                                      "name": "CriteriaResolver",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 4053,
                                      "src": "19280:16:0"
                                    },
                                    "referencedDeclaration": 4053,
                                    "src": "19280:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                                      "typeString": "struct CriteriaResolver"
                                    }
                                  },
                                  "id": 215,
                                  "nodeType": "ArrayTypeName",
                                  "src": "19280:18:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_storage_$dyn_storage_ptr",
                                    "typeString": "struct CriteriaResolver[]"
                                  }
                                }
                              },
                              "id": 218,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19276:25:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct CriteriaResolver memory[] memory"
                              }
                            },
                            {
                              "id": 219,
                              "name": "fulfillments",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 201,
                              "src": "19354:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct Fulfillment calldata[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct CriteriaResolver memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct Fulfillment calldata[] calldata"
                              }
                            ],
                            "id": 209,
                            "name": "_matchAdvancedOrders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6438,
                            "src": "19188:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr_$returns$_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (struct AdvancedOrder memory[] memory,struct CriteriaResolver memory[] memory,struct Fulfillment calldata[] calldata) returns (struct Execution memory[] memory)"
                            }
                          },
                          "id": 220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19188:192:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct Execution memory[] memory"
                          }
                        },
                        "functionReturnParameters": 208,
                        "id": 221,
                        "nodeType": "Return",
                        "src": "19169:211:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 193,
                    "nodeType": "StructuredDocumentation",
                    "src": "17414:1490:0",
                    "text": " @notice Match an arbitrary number of orders, each with an arbitrary\n         number of items for offer and consideration along with a set of\n         fulfillments allocating offer components to consideration\n         components. Note that this function does not support\n         criteria-based or partial filling of orders (though filling the\n         remainder of a partially-filled order is supported).\n @param orders            The orders to match. Note that both the offerer\n                          and fulfiller on each order must first approve\n                          this contract (or their conduit if indicated by\n                          the order) to transfer any relevant tokens on\n                          their behalf and each consideration recipient\n                          must implement `onERC1155Received` in order to\n                          receive ERC1155 tokens.\n @param fulfillments      An array of elements allocating offer components\n                          to consideration components. Note that each\n                          consideration component must be fully met in\n                          order for the match operation to be valid.\n @return executions An array of elements indicating the sequence of\n                    transfers performed as part of matching the given\n                    orders."
                  },
                  "functionSelector": "a8174404",
                  "id": 223,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "matchOrders",
                  "nameLocation": "18918:11:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 203,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "19031:8:0"
                  },
                  "parameters": {
                    "id": 202,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 197,
                        "mutability": "mutable",
                        "name": "orders",
                        "nameLocation": "18956:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 223,
                        "src": "18939:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct Order[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 195,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 194,
                              "name": "Order",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4019,
                              "src": "18939:5:0"
                            },
                            "referencedDeclaration": 4019,
                            "src": "18939:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Order_$4019_storage_ptr",
                              "typeString": "struct Order"
                            }
                          },
                          "id": 196,
                          "nodeType": "ArrayTypeName",
                          "src": "18939:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Order_$4019_storage_$dyn_storage_ptr",
                            "typeString": "struct Order[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 201,
                        "mutability": "mutable",
                        "name": "fulfillments",
                        "nameLocation": "18995:12:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 223,
                        "src": "18972:35:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct Fulfillment[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 199,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 198,
                              "name": "Fulfillment",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4062,
                              "src": "18972:11:0"
                            },
                            "referencedDeclaration": 4062,
                            "src": "18972:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Fulfillment_$4062_storage_ptr",
                              "typeString": "struct Fulfillment"
                            }
                          },
                          "id": 200,
                          "nodeType": "ArrayTypeName",
                          "src": "18972:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_storage_$dyn_storage_ptr",
                            "typeString": "struct Fulfillment[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18929:84:0"
                  },
                  "returnParameters": {
                    "id": 208,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 207,
                        "mutability": "mutable",
                        "name": "executions",
                        "nameLocation": "19068:10:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 223,
                        "src": "19049:29:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Execution[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 205,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 204,
                              "name": "Execution",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4075,
                              "src": "19049:9:0"
                            },
                            "referencedDeclaration": 4075,
                            "src": "19049:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                              "typeString": "struct Execution"
                            }
                          },
                          "id": 206,
                          "nodeType": "ArrayTypeName",
                          "src": "19049:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_storage_$dyn_storage_ptr",
                            "typeString": "struct Execution[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19048:31:0"
                  },
                  "scope": 408,
                  "src": "18909:478:0",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2070
                  ],
                  "body": {
                    "id": 250,
                    "nodeType": "Block",
                    "src": "22069:246:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 245,
                              "name": "advancedOrders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 228,
                              "src": "22215:14:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              }
                            },
                            {
                              "id": 246,
                              "name": "criteriaResolvers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 232,
                              "src": "22247:17:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct CriteriaResolver calldata[] calldata"
                              }
                            },
                            {
                              "id": 247,
                              "name": "fulfillments",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 236,
                              "src": "22282:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct Fulfillment calldata[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct CriteriaResolver calldata[] calldata"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct Fulfillment calldata[] calldata"
                              }
                            ],
                            "id": 244,
                            "name": "_matchAdvancedOrders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6438,
                            "src": "22177:20:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr_$returns$_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (struct AdvancedOrder memory[] memory,struct CriteriaResolver memory[] memory,struct Fulfillment calldata[] calldata) returns (struct Execution memory[] memory)"
                            }
                          },
                          "id": 248,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "22177:131:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct Execution memory[] memory"
                          }
                        },
                        "functionReturnParameters": 243,
                        "id": 249,
                        "nodeType": "Return",
                        "src": "22158:150:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 224,
                    "nodeType": "StructuredDocumentation",
                    "src": "19393:2423:0",
                    "text": " @notice Match an arbitrary number of full or partial orders, each with an\n         arbitrary number of items for offer and consideration, supplying\n         criteria resolvers containing specific token identifiers and\n         associated proofs as well as fulfillments allocating offer\n         components to consideration components.\n @param advancedOrders    The advanced orders to match. Note that both the\n                          offerer and fulfiller on each order must first\n                          approve this contract (or their conduit if\n                          indicated by the order) to transfer any relevant\n                          tokens on their behalf and each consideration\n                          recipient must implement `onERC1155Received` in\n                          order to receive ERC1155 tokens. Also note that\n                          the offer and consideration components for each\n                          order must have no remainder after multiplying\n                          the respective amount with the supplied fraction\n                          in order for the group of partial fills to be\n                          considered valid.\n @param criteriaResolvers An array where each element contains a reference\n                          to a specific order as well as that order's\n                          offer or consideration, a token identifier, and\n                          a proof that the supplied token identifier is\n                          contained in the order's merkle root. Note that\n                          an empty root indicates that any (transferrable)\n                          token identifier is valid and that no associated\n                          proof needs to be supplied.\n @param fulfillments      An array of elements allocating offer components\n                          to consideration components. Note that each\n                          consideration component must be fully met in\n                          order for the match operation to be valid.\n @return executions An array of elements indicating the sequence of\n                    transfers performed as part of matching the given\n                    orders."
                  },
                  "functionSelector": "55944a42",
                  "id": 251,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "matchAdvancedOrders",
                  "nameLocation": "21830:19:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 238,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "22020:8:0"
                  },
                  "parameters": {
                    "id": 237,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 228,
                        "mutability": "mutable",
                        "name": "advancedOrders",
                        "nameLocation": "21882:14:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 251,
                        "src": "21859:37:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct AdvancedOrder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 226,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 225,
                              "name": "AdvancedOrder",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4031,
                              "src": "21859:13:0"
                            },
                            "referencedDeclaration": 4031,
                            "src": "21859:13:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                              "typeString": "struct AdvancedOrder"
                            }
                          },
                          "id": 227,
                          "nodeType": "ArrayTypeName",
                          "src": "21859:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                            "typeString": "struct AdvancedOrder[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 232,
                        "mutability": "mutable",
                        "name": "criteriaResolvers",
                        "nameLocation": "21934:17:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 251,
                        "src": "21906:45:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct CriteriaResolver[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 230,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 229,
                              "name": "CriteriaResolver",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4053,
                              "src": "21906:16:0"
                            },
                            "referencedDeclaration": 4053,
                            "src": "21906:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                              "typeString": "struct CriteriaResolver"
                            }
                          },
                          "id": 231,
                          "nodeType": "ArrayTypeName",
                          "src": "21906:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_storage_$dyn_storage_ptr",
                            "typeString": "struct CriteriaResolver[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 236,
                        "mutability": "mutable",
                        "name": "fulfillments",
                        "nameLocation": "21984:12:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 251,
                        "src": "21961:35:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct Fulfillment[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 234,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 233,
                              "name": "Fulfillment",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4062,
                              "src": "21961:11:0"
                            },
                            "referencedDeclaration": 4062,
                            "src": "21961:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Fulfillment_$4062_storage_ptr",
                              "typeString": "struct Fulfillment"
                            }
                          },
                          "id": 235,
                          "nodeType": "ArrayTypeName",
                          "src": "21961:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_storage_$dyn_storage_ptr",
                            "typeString": "struct Fulfillment[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21849:153:0"
                  },
                  "returnParameters": {
                    "id": 243,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 242,
                        "mutability": "mutable",
                        "name": "executions",
                        "nameLocation": "22057:10:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 251,
                        "src": "22038:29:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Execution[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 240,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 239,
                              "name": "Execution",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4075,
                              "src": "22038:9:0"
                            },
                            "referencedDeclaration": 4075,
                            "src": "22038:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                              "typeString": "struct Execution"
                            }
                          },
                          "id": 241,
                          "nodeType": "ArrayTypeName",
                          "src": "22038:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_storage_$dyn_storage_ptr",
                            "typeString": "struct Execution[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22037:31:0"
                  },
                  "scope": 408,
                  "src": "21821:494:0",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2080
                  ],
                  "body": {
                    "id": 268,
                    "nodeType": "Block",
                    "src": "22956:74:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 262,
                            "name": "cancelled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 260,
                            "src": "22996:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 264,
                                "name": "orders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 256,
                                "src": "23016:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_OrderComponents_$3892_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "struct OrderComponents calldata[] calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_struct$_OrderComponents_$3892_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "struct OrderComponents calldata[] calldata"
                                }
                              ],
                              "id": 263,
                              "name": "_cancel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7564,
                              "src": "23008:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_OrderComponents_$3892_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$",
                                "typeString": "function (struct OrderComponents calldata[] calldata) returns (bool)"
                              }
                            },
                            "id": 265,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "23008:15:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "22996:27:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 267,
                        "nodeType": "ExpressionStatement",
                        "src": "22996:27:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 252,
                    "nodeType": "StructuredDocumentation",
                    "src": "22321:508:0",
                    "text": " @notice Cancel an arbitrary number of orders. Note that only the offerer\n         or the zone of a given order may cancel it. Callers should ensure\n         that the intended order was cancelled by calling `getOrderStatus`\n         and confirming that `isCancelled` returns `true`.\n @param orders The orders to cancel.\n @return cancelled A boolean indicating whether the supplied orders have\n                   been successfully cancelled."
                  },
                  "functionSelector": "fd9f1e10",
                  "id": 269,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "cancel",
                  "nameLocation": "22843:6:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 258,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "22910:8:0"
                  },
                  "parameters": {
                    "id": 257,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 256,
                        "mutability": "mutable",
                        "name": "orders",
                        "nameLocation": "22877:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 269,
                        "src": "22850:33:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_OrderComponents_$3892_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct OrderComponents[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 254,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 253,
                              "name": "OrderComponents",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 3892,
                              "src": "22850:15:0"
                            },
                            "referencedDeclaration": 3892,
                            "src": "22850:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OrderComponents_$3892_storage_ptr",
                              "typeString": "struct OrderComponents"
                            }
                          },
                          "id": 255,
                          "nodeType": "ArrayTypeName",
                          "src": "22850:17:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_OrderComponents_$3892_storage_$dyn_storage_ptr",
                            "typeString": "struct OrderComponents[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22849:35:0"
                  },
                  "returnParameters": {
                    "id": 261,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 260,
                        "mutability": "mutable",
                        "name": "cancelled",
                        "nameLocation": "22941:9:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 269,
                        "src": "22936:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 259,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "22936:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22935:16:0"
                  },
                  "scope": 408,
                  "src": "22834:196:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2090
                  ],
                  "body": {
                    "id": 286,
                    "nodeType": "Block",
                    "src": "23984:78:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 284,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 280,
                            "name": "validated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 278,
                            "src": "24026:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 282,
                                "name": "orders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 274,
                                "src": "24048:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "struct Order calldata[] calldata"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "struct Order calldata[] calldata"
                                }
                              ],
                              "id": 281,
                              "name": "_validate",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7670,
                              "src": "24038:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bool_$",
                                "typeString": "function (struct Order calldata[] calldata) returns (bool)"
                              }
                            },
                            "id": 283,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24038:17:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "24026:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 285,
                        "nodeType": "ExpressionStatement",
                        "src": "24026:29:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 270,
                    "nodeType": "StructuredDocumentation",
                    "src": "23036:829:0",
                    "text": " @notice Validate an arbitrary number of orders, thereby registering their\n         signatures as valid and allowing the fulfiller to skip signature\n         verification on fulfillment. Note that validated orders may still\n         be unfulfillable due to invalid item amounts or other factors;\n         callers should determine whether validated orders are fulfillable\n         by simulating the fulfillment call prior to execution. Also note\n         that anyone can validate a signed order, but only the offerer can\n         validate an order without supplying a signature.\n @param orders The orders to validate.\n @return validated A boolean indicating whether the supplied orders have\n                   been successfully validated."
                  },
                  "functionSelector": "88147732",
                  "id": 287,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validate",
                  "nameLocation": "23879:8:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 276,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "23938:8:0"
                  },
                  "parameters": {
                    "id": 275,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 274,
                        "mutability": "mutable",
                        "name": "orders",
                        "nameLocation": "23905:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 287,
                        "src": "23888:23:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct Order[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 272,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 271,
                              "name": "Order",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4019,
                              "src": "23888:5:0"
                            },
                            "referencedDeclaration": 4019,
                            "src": "23888:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Order_$4019_storage_ptr",
                              "typeString": "struct Order"
                            }
                          },
                          "id": 273,
                          "nodeType": "ArrayTypeName",
                          "src": "23888:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Order_$4019_storage_$dyn_storage_ptr",
                            "typeString": "struct Order[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23887:25:0"
                  },
                  "returnParameters": {
                    "id": 279,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 278,
                        "mutability": "mutable",
                        "name": "validated",
                        "nameLocation": "23969:9:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 287,
                        "src": "23964:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 277,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "23964:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "23963:16:0"
                  },
                  "scope": 408,
                  "src": "23870:192:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2096
                  ],
                  "body": {
                    "id": 299,
                    "nodeType": "Block",
                    "src": "24388:106:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 294,
                            "name": "newNonce",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 292,
                            "src": "24459:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 295,
                              "name": "_incrementNonce",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5545,
                              "src": "24470:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_uint256_$",
                                "typeString": "function () returns (uint256)"
                              }
                            },
                            "id": 296,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24470:17:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "24459:28:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 298,
                        "nodeType": "ExpressionStatement",
                        "src": "24459:28:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 288,
                    "nodeType": "StructuredDocumentation",
                    "src": "24068:244:0",
                    "text": " @notice Cancel all orders from a given offerer with a given zone in bulk\n         by incrementing a nonce. Note that only the offerer may increment\n         the nonce.\n @return newNonce The new nonce."
                  },
                  "functionSelector": "627cdcb9",
                  "id": 300,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "incrementNonce",
                  "nameLocation": "24326:14:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 290,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "24352:8:0"
                  },
                  "parameters": {
                    "id": 289,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "24340:2:0"
                  },
                  "returnParameters": {
                    "id": 293,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 292,
                        "mutability": "mutable",
                        "name": "newNonce",
                        "nameLocation": "24378:8:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 300,
                        "src": "24370:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 291,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "24370:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24369:18:0"
                  },
                  "scope": 408,
                  "src": "24317:177:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2105
                  ],
                  "body": {
                    "id": 342,
                    "nodeType": "Block",
                    "src": "24819:564:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 310,
                            "name": "orderHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 308,
                            "src": "24910:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 313,
                                      "name": "order",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 304,
                                      "src": "24985:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                        "typeString": "struct OrderComponents calldata"
                                      }
                                    },
                                    "id": 314,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "offerer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3866,
                                    "src": "24985:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 315,
                                      "name": "order",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 304,
                                      "src": "25016:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                        "typeString": "struct OrderComponents calldata"
                                      }
                                    },
                                    "id": 316,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "zone",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3868,
                                    "src": "25016:10:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 317,
                                      "name": "order",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 304,
                                      "src": "25044:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                        "typeString": "struct OrderComponents calldata"
                                      }
                                    },
                                    "id": 318,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "offer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3872,
                                    "src": "25044:11:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "struct OfferItem calldata[] calldata"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 319,
                                      "name": "order",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 304,
                                      "src": "25073:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                        "typeString": "struct OrderComponents calldata"
                                      }
                                    },
                                    "id": 320,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "consideration",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3876,
                                    "src": "25073:19:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "struct ConsiderationItem calldata[] calldata"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 321,
                                      "name": "order",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 304,
                                      "src": "25110:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                        "typeString": "struct OrderComponents calldata"
                                      }
                                    },
                                    "id": 322,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "orderType",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3879,
                                    "src": "25110:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_OrderType_$3815",
                                      "typeString": "enum OrderType"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 323,
                                      "name": "order",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 304,
                                      "src": "25143:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                        "typeString": "struct OrderComponents calldata"
                                      }
                                    },
                                    "id": 324,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "startTime",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3881,
                                    "src": "25143:15:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 325,
                                      "name": "order",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 304,
                                      "src": "25176:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                        "typeString": "struct OrderComponents calldata"
                                      }
                                    },
                                    "id": 326,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "endTime",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3883,
                                    "src": "25176:13:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 327,
                                      "name": "order",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 304,
                                      "src": "25207:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                        "typeString": "struct OrderComponents calldata"
                                      }
                                    },
                                    "id": 328,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "zoneHash",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3885,
                                    "src": "25207:14:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 329,
                                      "name": "order",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 304,
                                      "src": "25239:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                        "typeString": "struct OrderComponents calldata"
                                      }
                                    },
                                    "id": 330,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "salt",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3887,
                                    "src": "25239:10:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 331,
                                      "name": "order",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 304,
                                      "src": "25267:5:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                        "typeString": "struct OrderComponents calldata"
                                      }
                                    },
                                    "id": 332,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "conduitKey",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3889,
                                    "src": "25267:16:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "expression": {
                                        "id": 333,
                                        "name": "order",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 304,
                                        "src": "25301:5:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                          "typeString": "struct OrderComponents calldata"
                                        }
                                      },
                                      "id": 334,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "consideration",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3876,
                                      "src": "25301:19:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "struct ConsiderationItem calldata[] calldata"
                                      }
                                    },
                                    "id": 335,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "25301:26:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "struct OfferItem calldata[] calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "struct ConsiderationItem calldata[] calldata"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_OrderType_$3815",
                                      "typeString": "enum OrderType"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 312,
                                  "name": "OrderParameters",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4013,
                                  "src": "24952:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_struct$_OrderParameters_$4013_storage_ptr_$",
                                    "typeString": "type(struct OrderParameters storage pointer)"
                                  }
                                },
                                "id": 336,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "structConstructorCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "24952:389:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                  "typeString": "struct OrderParameters memory"
                                }
                              },
                              {
                                "expression": {
                                  "id": 337,
                                  "name": "order",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 304,
                                  "src": "25355:5:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                    "typeString": "struct OrderComponents calldata"
                                  }
                                },
                                "id": 338,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "nonce",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3891,
                                "src": "25355:11:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                  "typeString": "struct OrderParameters memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 311,
                              "name": "_deriveOrderHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5384,
                              "src": "24922:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_OrderParameters_$4013_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                "typeString": "function (struct OrderParameters memory,uint256) view returns (bytes32)"
                              }
                            },
                            "id": 339,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "24922:454:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "24910:466:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 341,
                        "nodeType": "ExpressionStatement",
                        "src": "24910:466:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 301,
                    "nodeType": "StructuredDocumentation",
                    "src": "24500:173:0",
                    "text": " @notice Retrieve the order hash for a given order.\n @param order The components of the order.\n @return orderHash The order hash."
                  },
                  "functionSelector": "79df72bd",
                  "id": 343,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getOrderHash",
                  "nameLocation": "24687:12:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 306,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "24770:8:0"
                  },
                  "parameters": {
                    "id": 305,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 304,
                        "mutability": "mutable",
                        "name": "order",
                        "nameLocation": "24725:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 343,
                        "src": "24700:30:0",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                          "typeString": "struct OrderComponents"
                        },
                        "typeName": {
                          "id": 303,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 302,
                            "name": "OrderComponents",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3892,
                            "src": "24700:15:0"
                          },
                          "referencedDeclaration": 3892,
                          "src": "24700:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_OrderComponents_$3892_storage_ptr",
                            "typeString": "struct OrderComponents"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24699:32:0"
                  },
                  "returnParameters": {
                    "id": 309,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 308,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "24804:9:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 343,
                        "src": "24796:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 307,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "24796:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "24795:19:0"
                  },
                  "scope": 408,
                  "src": "24678:705:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2119
                  ],
                  "body": {
                    "id": 362,
                    "nodeType": "Block",
                    "src": "26515:109:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 359,
                              "name": "orderHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 346,
                              "src": "26607:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 358,
                            "name": "_getOrderStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7702,
                            "src": "26591:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$_t_bool_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (bytes32) view returns (bool,bool,uint256,uint256)"
                            }
                          },
                          "id": 360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "26591:26:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(bool,bool,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 357,
                        "id": 361,
                        "nodeType": "Return",
                        "src": "26584:33:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 344,
                    "nodeType": "StructuredDocumentation",
                    "src": "25389:876:0",
                    "text": " @notice Retrieve the status of a given order by hash, including whether\n         the order has been cancelled or validated and the fraction of the\n         order that has been filled.\n @param orderHash The order hash in question.\n @return isValidated A boolean indicating whether the order in question\n                     has been validated (i.e. previously approved or\n                     partially filled).\n @return isCancelled A boolean indicating whether the order in question\n                     has been cancelled.\n @return totalFilled The total portion of the order that has been filled\n                     (i.e. the \"numerator\").\n @return totalSize   The total size of the order that is either filled or\n                     unfilled (i.e. the \"denominator\")."
                  },
                  "functionSelector": "46423aa7",
                  "id": 363,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getOrderStatus",
                  "nameLocation": "26279:14:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 348,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "26351:8:0"
                  },
                  "parameters": {
                    "id": 347,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 346,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "26302:9:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 363,
                        "src": "26294:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 345,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "26294:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26293:19:0"
                  },
                  "returnParameters": {
                    "id": 357,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 350,
                        "mutability": "mutable",
                        "name": "isValidated",
                        "nameLocation": "26395:11:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 363,
                        "src": "26390:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 349,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "26390:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 352,
                        "mutability": "mutable",
                        "name": "isCancelled",
                        "nameLocation": "26425:11:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 363,
                        "src": "26420:16:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 351,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "26420:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 354,
                        "mutability": "mutable",
                        "name": "totalFilled",
                        "nameLocation": "26458:11:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 363,
                        "src": "26450:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 353,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26450:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 356,
                        "mutability": "mutable",
                        "name": "totalSize",
                        "nameLocation": "26491:9:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 363,
                        "src": "26483:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 355,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26483:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26376:134:0"
                  },
                  "scope": 408,
                  "src": "26270:354:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2127
                  ],
                  "body": {
                    "id": 378,
                    "nodeType": "Block",
                    "src": "26928:97:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 372,
                            "name": "nonce",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 370,
                            "src": "26992:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 374,
                                "name": "offerer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 366,
                                "src": "27010:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 373,
                              "name": "_getNonce",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5560,
                              "src": "27000:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view returns (uint256)"
                              }
                            },
                            "id": 375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27000:18:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "26992:26:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 377,
                        "nodeType": "ExpressionStatement",
                        "src": "26992:26:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 364,
                    "nodeType": "StructuredDocumentation",
                    "src": "26630:175:0",
                    "text": " @notice Retrieve the current nonce for a given offerer.\n @param offerer The offerer in question.\n @return nonce The current nonce."
                  },
                  "functionSelector": "2d0335ab",
                  "id": 379,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getNonce",
                  "nameLocation": "26819:8:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 368,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "26883:8:0"
                  },
                  "parameters": {
                    "id": 367,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 366,
                        "mutability": "mutable",
                        "name": "offerer",
                        "nameLocation": "26836:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 379,
                        "src": "26828:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 365,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "26828:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26827:17:0"
                  },
                  "returnParameters": {
                    "id": 371,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 370,
                        "mutability": "mutable",
                        "name": "nonce",
                        "nameLocation": "26917:5:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 379,
                        "src": "26909:13:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 369,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "26909:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26908:15:0"
                  },
                  "scope": 408,
                  "src": "26810:215:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2137
                  ],
                  "body": {
                    "id": 393,
                    "nodeType": "Block",
                    "src": "27542:91:0",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 390,
                            "name": "_information",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5452,
                            "src": "27612:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$_t_bytes32_$_t_address_$",
                              "typeString": "function () view returns (string memory,bytes32,address)"
                            }
                          },
                          "id": 391,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "27612:14:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_string_memory_ptr_$_t_bytes32_$_t_address_$",
                            "typeString": "tuple(string memory,bytes32,address)"
                          }
                        },
                        "functionReturnParameters": 389,
                        "id": 392,
                        "nodeType": "Return",
                        "src": "27605:21:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 380,
                    "nodeType": "StructuredDocumentation",
                    "src": "27031:294:0",
                    "text": " @notice Retrieve configuration information for this contract.\n @return version           The contract version.\n @return domainSeparator   The domain separator for this contract.\n @return conduitController The conduit Controller set for this contract."
                  },
                  "functionSelector": "f47b7740",
                  "id": 394,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "information",
                  "nameLocation": "27339:11:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 382,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "27391:8:0"
                  },
                  "parameters": {
                    "id": 381,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27350:2:0"
                  },
                  "returnParameters": {
                    "id": 389,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 384,
                        "mutability": "mutable",
                        "name": "version",
                        "nameLocation": "27444:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 394,
                        "src": "27430:21:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 383,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "27430:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 386,
                        "mutability": "mutable",
                        "name": "domainSeparator",
                        "nameLocation": "27473:15:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 394,
                        "src": "27465:23:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 385,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "27465:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 388,
                        "mutability": "mutable",
                        "name": "conduitController",
                        "nameLocation": "27510:17:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 394,
                        "src": "27502:25:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 387,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "27502:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27416:121:0"
                  },
                  "scope": 408,
                  "src": "27330:303:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    2143
                  ],
                  "body": {
                    "id": 406,
                    "nodeType": "Block",
                    "src": "27880:83:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 404,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 401,
                            "name": "contractName",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 399,
                            "src": "27934:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 402,
                              "name": "_name",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3255,
                              "src": "27949:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$__$returns$_t_string_memory_ptr_$",
                                "typeString": "function () pure returns (string memory)"
                              }
                            },
                            "id": 403,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "27949:7:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "27934:22:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 405,
                        "nodeType": "ExpressionStatement",
                        "src": "27934:22:0"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 395,
                    "nodeType": "StructuredDocumentation",
                    "src": "27639:124:0",
                    "text": " @notice Retrieve the name of this contract.\n @return contractName The name of this contract."
                  },
                  "functionSelector": "06fdde03",
                  "id": 407,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "27777:4:0",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 397,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "27822:8:0"
                  },
                  "parameters": {
                    "id": 396,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "27781:2:0"
                  },
                  "returnParameters": {
                    "id": 400,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 399,
                        "mutability": "mutable",
                        "name": "contractName",
                        "nameLocation": "27862:12:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 407,
                        "src": "27848:26:0",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 398,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "27848:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "27847:28:0"
                  },
                  "scope": 408,
                  "src": "27768:195:0",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 409,
              "src": "1157:26808:0",
              "usedErrors": [
                1541,
                1856,
                1859,
                1866,
                1869,
                1874,
                1883,
                1886,
                1893,
                1896,
                1901,
                1906,
                1909,
                1912,
                1917,
                1920,
                1923,
                2150,
                2153,
                2156,
                2159,
                2162,
                2165,
                2168,
                2192,
                2195,
                2198,
                2201,
                2208,
                2217,
                2220,
                2223,
                2226,
                2233,
                2236,
                2249,
                2264,
                2275,
                2280,
                2289
              ]
            }
          ],
          "src": "32:27934:0"
        },
        "id": 0
      },
      "seaport/contracts/Seaport.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/Seaport.sol",
          "exportedSymbols": {
            "Consideration": [
              408
            ],
            "Seaport": [
              445
            ]
          },
          "id": 446,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 410,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:1"
            },
            {
              "absolutePath": "seaport/contracts/Consideration.sol",
              "file": "./Consideration.sol",
              "id": 412,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 446,
              "sourceUnit": 409,
              "src": "57:52:1",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 411,
                    "name": "Consideration",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 408,
                    "src": "66:13:1",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 414,
                    "name": "Consideration",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 408,
                    "src": "791:13:1"
                  },
                  "id": 415,
                  "nodeType": "InheritanceSpecifier",
                  "src": "791:13:1"
                }
              ],
              "canonicalName": "Seaport",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 413,
                "nodeType": "StructuredDocumentation",
                "src": "111:659:1",
                "text": " @title Seaport\n @author 0age\n @custom:coauthor d1ll0n\n @custom:coauthor transmissions11\n @custom:version 1\n @notice Seaport is a generalized ETH/ERC20/ERC721/ERC1155 marketplace. It\n         minimizes external calls to the greatest extent possible and provides\n         lightweight methods for common routes as well as more flexible\n         methods for composing advanced orders or groups of orders. Each order\n         contains an arbitrary number of items that may be spent (the \"offer\")\n         along with an arbitrary number of items that must be received back by\n         the indicated recipients (the \"consideration\")."
              },
              "fullyImplemented": true,
              "id": 445,
              "linearizedBaseContracts": [
                445,
                408,
                6541,
                5325,
                2202,
                7063,
                2491,
                1542,
                4450,
                2169,
                3152,
                7714,
                8592,
                5018,
                7981,
                8379,
                7917,
                5505,
                2290,
                2227,
                2594,
                2281,
                5561,
                7768,
                2209,
                5465,
                3384,
                1924,
                2144
              ],
              "name": "Seaport",
              "nameLocation": "780:7:1",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 424,
                    "nodeType": "Block",
                    "src": "1242:2:1",
                    "statements": []
                  },
                  "documentation": {
                    "id": 416,
                    "nodeType": "StructuredDocumentation",
                    "src": "811:354:1",
                    "text": " @notice Derive and set hashes, reference chainId, and associated domain\n         separator during deployment.\n @param conduitController A contract that deploys conduits, or proxies\n                          that may optionally be used to transfer approved\n                          ERC20/721/1155 tokens."
                  },
                  "id": 425,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 421,
                          "name": "conduitController",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 418,
                          "src": "1223:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 422,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 420,
                        "name": "Consideration",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 408,
                        "src": "1209:13:1"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1209:32:1"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 419,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 418,
                        "mutability": "mutable",
                        "name": "conduitController",
                        "nameLocation": "1190:17:1",
                        "nodeType": "VariableDeclaration",
                        "scope": 425,
                        "src": "1182:25:1",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 417,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1182:7:1",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1181:27:1"
                  },
                  "returnParameters": {
                    "id": 423,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1242:0:1"
                  },
                  "scope": 445,
                  "src": "1170:74:1",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    3255
                  ],
                  "body": {
                    "id": 433,
                    "nodeType": "Block",
                    "src": "1476:181:1",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1539:112:1",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1560:1:1",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1563:4:1",
                                    "type": "",
                                    "value": "0x20"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1553:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1553:15:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1553:15:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1588:4:1",
                                    "type": "",
                                    "value": "0x27"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1594:18:1",
                                    "type": "",
                                    "value": "0x07536561706f7274"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1581:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1581:32:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1581:32:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1633:1:1",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1636:4:1",
                                    "type": "",
                                    "value": "0x60"
                                  }
                                ],
                                "functionName": {
                                  "name": "return",
                                  "nodeType": "YulIdentifier",
                                  "src": "1626:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1626:15:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1626:15:1"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [],
                        "id": 432,
                        "nodeType": "InlineAssembly",
                        "src": "1530:121:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 426,
                    "nodeType": "StructuredDocumentation",
                    "src": "1250:157:1",
                    "text": " @dev Internal pure function to retrieve and return the name of this\n      contract.\n @return The name of this contract."
                  },
                  "id": 434,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_name",
                  "nameLocation": "1421:5:1",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 428,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1443:8:1"
                  },
                  "parameters": {
                    "id": 427,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1426:2:1"
                  },
                  "returnParameters": {
                    "id": 431,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 430,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 434,
                        "src": "1461:13:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 429,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1461:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1460:15:1"
                  },
                  "scope": 445,
                  "src": "1412:245:1",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "baseFunctions": [
                    3264
                  ],
                  "body": {
                    "id": 443,
                    "nodeType": "Block",
                    "src": "1969:77:1",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "536561706f7274",
                          "id": 441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2030:9:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_32b5c112df393a49218d7552f96b2eeb829dfb4272f4f24eef510a586b85feef",
                            "typeString": "literal_string \"Seaport\""
                          },
                          "value": "Seaport"
                        },
                        "functionReturnParameters": 440,
                        "id": 442,
                        "nodeType": "Return",
                        "src": "2023:16:1"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 435,
                    "nodeType": "StructuredDocumentation",
                    "src": "1663:231:1",
                    "text": " @dev Internal pure function to retrieve the name of this contract as a\n      string that will be used to derive the name hash in the constructor.\n @return The name of this contract as a string."
                  },
                  "id": 444,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_nameString",
                  "nameLocation": "1908:11:1",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 437,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1936:8:1"
                  },
                  "parameters": {
                    "id": 436,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1919:2:1"
                  },
                  "returnParameters": {
                    "id": 440,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 439,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 444,
                        "src": "1954:13:1",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 438,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "1954:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1953:15:1"
                  },
                  "scope": 445,
                  "src": "1899:147:1",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 446,
              "src": "771:1277:1",
              "usedErrors": [
                1541,
                1856,
                1859,
                1866,
                1869,
                1874,
                1883,
                1886,
                1893,
                1896,
                1901,
                1906,
                1909,
                1912,
                1917,
                1920,
                1923,
                2150,
                2153,
                2156,
                2159,
                2162,
                2165,
                2168,
                2192,
                2195,
                2198,
                2201,
                2208,
                2217,
                2220,
                2223,
                2226,
                2233,
                2236,
                2249,
                2264,
                2275,
                2280,
                2289
              ]
            }
          ],
          "src": "32:2017:1"
        },
        "id": 1
      },
      "seaport/contracts/conduit/Conduit.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/conduit/Conduit.sol",
          "exportedSymbols": {
            "Conduit": [
              739
            ],
            "ConduitBatch1155Transfer": [
              1482
            ],
            "ConduitInterface": [
              1801
            ],
            "ConduitItemType": [
              1451
            ],
            "ConduitTransfer": [
              1469
            ],
            "TokenTransferrer": [
              7981
            ]
          },
          "id": 740,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 447,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:2"
            },
            {
              "absolutePath": "seaport/contracts/interfaces/ConduitInterface.sol",
              "file": "../interfaces/ConduitInterface.sol",
              "id": 449,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 740,
              "sourceUnit": 1802,
              "src": "58:70:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 448,
                    "name": "ConduitInterface",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1801,
                    "src": "67:16:2",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/conduit/lib/ConduitEnums.sol",
              "file": "./lib/ConduitEnums.sol",
              "id": 451,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 740,
              "sourceUnit": 1452,
              "src": "130:57:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 450,
                    "name": "ConduitItemType",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1451,
                    "src": "139:15:2",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/TokenTransferrer.sol",
              "file": "../lib/TokenTransferrer.sol",
              "id": 453,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 740,
              "sourceUnit": 7982,
              "src": "189:63:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 452,
                    "name": "TokenTransferrer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7981,
                    "src": "198:16:2",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/conduit/lib/ConduitStructs.sol",
              "file": "./lib/ConduitStructs.sol",
              "id": 456,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 740,
              "sourceUnit": 1483,
              "src": "273:93:2",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 454,
                    "name": "ConduitTransfer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1469,
                    "src": "286:15:2",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 455,
                    "name": "ConduitBatch1155Transfer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1482,
                    "src": "307:24:2",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 458,
                    "name": "ConduitInterface",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1801,
                    "src": "1060:16:2"
                  },
                  "id": 459,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1060:16:2"
                },
                {
                  "baseName": {
                    "id": 460,
                    "name": "TokenTransferrer",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7981,
                    "src": "1078:16:2"
                  },
                  "id": 461,
                  "nodeType": "InheritanceSpecifier",
                  "src": "1078:16:2"
                }
              ],
              "canonicalName": "Conduit",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 457,
                "nodeType": "StructuredDocumentation",
                "src": "368:671:2",
                "text": " @title Conduit\n @author 0age\n @notice This contract serves as an originator for \"proxied\" transfers. Each\n         conduit is deployed and controlled by a \"conduit controller\" that can\n         add and remove \"channels\" or contracts that can instruct the conduit\n         to transfer approved ERC20/721/1155 tokens. *IMPORTANT NOTE: each\n         conduit has an owner that can arbitrarily add or remove channels, and\n         a malicious or negligent owner can add a channel that allows for any\n         approved ERC20/721/1155 tokens to be taken immediately — be extremely\n         cautious with what conduits you give token approvals to!*"
              },
              "fullyImplemented": true,
              "id": 739,
              "linearizedBaseContracts": [
                739,
                7981,
                2281,
                1801
              ],
              "name": "Conduit",
              "nameLocation": "1049:7:2",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 463,
                  "mutability": "immutable",
                  "name": "_controller",
                  "nameLocation": "1208:11:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 739,
                  "src": "1182:37:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 462,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1182:7:2",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 467,
                  "mutability": "mutable",
                  "name": "_channels",
                  "nameLocation": "1300:9:2",
                  "nodeType": "VariableDeclaration",
                  "scope": 739,
                  "src": "1267:42:2",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                    "typeString": "mapping(address => bool)"
                  },
                  "typeName": {
                    "id": 466,
                    "keyType": {
                      "id": 464,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1275:7:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "1267:24:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                      "typeString": "mapping(address => bool)"
                    },
                    "valueType": {
                      "id": 465,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "1286:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 476,
                    "nodeType": "Block",
                    "src": "1417:88:2",
                    "statements": [
                      {
                        "expression": {
                          "id": 474,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 471,
                            "name": "_controller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 463,
                            "src": "1474:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 472,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1488:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 473,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "1488:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1474:24:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 475,
                        "nodeType": "ExpressionStatement",
                        "src": "1474:24:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 468,
                    "nodeType": "StructuredDocumentation",
                    "src": "1316:82:2",
                    "text": " @notice In the constructor, set the deployer as the controller."
                  },
                  "id": 477,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 469,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1414:2:2"
                  },
                  "returnParameters": {
                    "id": 470,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1417:0:2"
                  },
                  "scope": 739,
                  "src": "1403:102:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1768
                  ],
                  "body": {
                    "id": 533,
                    "nodeType": "Block",
                    "src": "1997:848:2",
                    "statements": [
                      {
                        "condition": {
                          "id": 492,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "2066:22:2",
                          "subExpression": {
                            "baseExpression": {
                              "id": 488,
                              "name": "_channels",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 467,
                              "src": "2067:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 491,
                            "indexExpression": {
                              "expression": {
                                "id": 489,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2077:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "2077:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2067:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 497,
                        "nodeType": "IfStatement",
                        "src": "2062:75:2",
                        "trueBody": {
                          "id": 496,
                          "nodeType": "Block",
                          "src": "2090:47:2",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 493,
                                  "name": "ChannelClosed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1742,
                                  "src": "2111:13:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 494,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2111:15:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 495,
                              "nodeType": "RevertStatement",
                              "src": "2104:22:2"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          499
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 499,
                            "mutability": "mutable",
                            "name": "totalStandardTransfers",
                            "nameLocation": "2229:22:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 533,
                            "src": "2221:30:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 498,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2221:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 502,
                        "initialValue": {
                          "expression": {
                            "id": 500,
                            "name": "transfers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 482,
                            "src": "2254:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_ConduitTransfer_$1469_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "struct ConduitTransfer calldata[] calldata"
                            }
                          },
                          "id": 501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "2254:16:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2221:49:2"
                      },
                      {
                        "body": {
                          "id": 525,
                          "nodeType": "Block",
                          "src": "2370:346:2",
                          "statements": [
                            {
                              "assignments": [
                                512
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 512,
                                  "mutability": "mutable",
                                  "name": "standardTransfer",
                                  "nameLocation": "2459:16:2",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 525,
                                  "src": "2434:41:2",
                                  "stateVariable": false,
                                  "storageLocation": "calldata",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                    "typeString": "struct ConduitTransfer"
                                  },
                                  "typeName": {
                                    "id": 511,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 510,
                                      "name": "ConduitTransfer",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 1469,
                                      "src": "2434:15:2"
                                    },
                                    "referencedDeclaration": 1469,
                                    "src": "2434:15:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ConduitTransfer_$1469_storage_ptr",
                                      "typeString": "struct ConduitTransfer"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 516,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 513,
                                  "name": "transfers",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 482,
                                  "src": "2478:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_ConduitTransfer_$1469_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct ConduitTransfer calldata[] calldata"
                                  }
                                },
                                "id": 515,
                                "indexExpression": {
                                  "id": 514,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 504,
                                  "src": "2488:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2478:12:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                  "typeString": "struct ConduitTransfer calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2434:56:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 518,
                                    "name": "standardTransfer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 512,
                                    "src": "2552:16:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                      "typeString": "struct ConduitTransfer calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                      "typeString": "struct ConduitTransfer calldata"
                                    }
                                  ],
                                  "id": 517,
                                  "name": "_transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 738,
                                  "src": "2542:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ConduitTransfer_$1469_calldata_ptr_$returns$__$",
                                    "typeString": "function (struct ConduitTransfer calldata)"
                                  }
                                },
                                "id": 519,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2542:27:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 520,
                              "nodeType": "ExpressionStatement",
                              "src": "2542:27:2"
                            },
                            {
                              "id": 524,
                              "nodeType": "UncheckedBlock",
                              "src": "2660:46:2",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 522,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": true,
                                    "src": "2688:3:2",
                                    "subExpression": {
                                      "id": 521,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 504,
                                      "src": "2690:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 523,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2688:3:2"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 507,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 504,
                            "src": "2340:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 508,
                            "name": "totalStandardTransfers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 499,
                            "src": "2344:22:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2340:26:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 526,
                        "initializationExpression": {
                          "assignments": [
                            504
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 504,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "2333:1:2",
                              "nodeType": "VariableDeclaration",
                              "scope": 526,
                              "src": "2325:9:2",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 503,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "2325:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 506,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 505,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2337:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "2325:13:2"
                        },
                        "nodeType": "ForStatement",
                        "src": "2320:396:2"
                      },
                      {
                        "expression": {
                          "id": 531,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 527,
                            "name": "magicValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 486,
                            "src": "2804:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 528,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "2817:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Conduit_$739",
                                  "typeString": "contract Conduit"
                                }
                              },
                              "id": 529,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "execute",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 534,
                              "src": "2817:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_struct$_ConduitTransfer_$1469_memory_ptr_$dyn_memory_ptr_$returns$_t_bytes4_$",
                                "typeString": "function (struct ConduitTransfer memory[] memory) external returns (bytes4)"
                              }
                            },
                            "id": 530,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "2817:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "2804:34:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 532,
                        "nodeType": "ExpressionStatement",
                        "src": "2804:34:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 478,
                    "nodeType": "StructuredDocumentation",
                    "src": "1511:352:2",
                    "text": " @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\n         with an open channel can call this function.\n @param transfers The ERC20/721/1155 transfers to perform.\n @return magicValue A magic value indicating that the transfers were\n                    performed successfully."
                  },
                  "functionSelector": "4ce34aa2",
                  "id": 534,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "execute",
                  "nameLocation": "1877:7:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 484,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "1948:8:2"
                  },
                  "parameters": {
                    "id": 483,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 482,
                        "mutability": "mutable",
                        "name": "transfers",
                        "nameLocation": "1912:9:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 534,
                        "src": "1885:36:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ConduitTransfer_$1469_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct ConduitTransfer[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 480,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 479,
                              "name": "ConduitTransfer",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 1469,
                              "src": "1885:15:2"
                            },
                            "referencedDeclaration": 1469,
                            "src": "1885:15:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ConduitTransfer_$1469_storage_ptr",
                              "typeString": "struct ConduitTransfer"
                            }
                          },
                          "id": 481,
                          "nodeType": "ArrayTypeName",
                          "src": "1885:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_ConduitTransfer_$1469_storage_$dyn_storage_ptr",
                            "typeString": "struct ConduitTransfer[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1884:38:2"
                  },
                  "returnParameters": {
                    "id": 487,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 486,
                        "mutability": "mutable",
                        "name": "magicValue",
                        "nameLocation": "1981:10:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 534,
                        "src": "1974:17:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 485,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1974:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1973:19:2"
                  },
                  "scope": 739,
                  "src": "1868:977:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1778
                  ],
                  "body": {
                    "id": 565,
                    "nodeType": "Block",
                    "src": "3343:375:2",
                    "statements": [
                      {
                        "condition": {
                          "id": 549,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "3412:22:2",
                          "subExpression": {
                            "baseExpression": {
                              "id": 545,
                              "name": "_channels",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 467,
                              "src": "3413:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 548,
                            "indexExpression": {
                              "expression": {
                                "id": 546,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3423:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 547,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "3423:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3413:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 554,
                        "nodeType": "IfStatement",
                        "src": "3408:75:2",
                        "trueBody": {
                          "id": 553,
                          "nodeType": "Block",
                          "src": "3436:47:2",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 550,
                                  "name": "ChannelClosed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1742,
                                  "src": "3457:13:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 551,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3457:15:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 552,
                              "nodeType": "RevertStatement",
                              "src": "3450:22:2"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 556,
                              "name": "batchTransfers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 539,
                              "src": "3564:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_ConduitBatch1155Transfer_$1482_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct ConduitBatch1155Transfer calldata[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_ConduitBatch1155Transfer_$1482_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct ConduitBatch1155Transfer calldata[] calldata"
                              }
                            ],
                            "id": 555,
                            "name": "_performERC1155BatchTransfers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7980,
                            "src": "3534:29:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_ConduitBatch1155Transfer_$1482_calldata_ptr_$dyn_calldata_ptr_$returns$__$",
                              "typeString": "function (struct ConduitBatch1155Transfer calldata[] calldata)"
                            }
                          },
                          "id": 557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3534:45:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 558,
                        "nodeType": "ExpressionStatement",
                        "src": "3534:45:2"
                      },
                      {
                        "expression": {
                          "id": 563,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 559,
                            "name": "magicValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 543,
                            "src": "3668:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 560,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "3681:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Conduit_$739",
                                  "typeString": "contract Conduit"
                                }
                              },
                              "id": 561,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "executeBatch1155",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 566,
                              "src": "3681:21:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_struct$_ConduitBatch1155Transfer_$1482_memory_ptr_$dyn_memory_ptr_$returns$_t_bytes4_$",
                                "typeString": "function (struct ConduitBatch1155Transfer memory[] memory) external returns (bytes4)"
                              }
                            },
                            "id": 562,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "3681:30:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "3668:43:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 564,
                        "nodeType": "ExpressionStatement",
                        "src": "3668:43:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 535,
                    "nodeType": "StructuredDocumentation",
                    "src": "2851:349:2",
                    "text": " @notice Execute a sequence of batch 1155 transfers. Only a caller with an\n         open channel can call this function.\n @param batchTransfers The 1155 batch transfers to perform.\n @return magicValue A magic value indicating that the transfers were\n                    performed successfully."
                  },
                  "functionSelector": "8df25d92",
                  "id": 566,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "executeBatch1155",
                  "nameLocation": "3214:16:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 541,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "3306:8:2"
                  },
                  "parameters": {
                    "id": 540,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 539,
                        "mutability": "mutable",
                        "name": "batchTransfers",
                        "nameLocation": "3276:14:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 566,
                        "src": "3240:50:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ConduitBatch1155Transfer_$1482_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct ConduitBatch1155Transfer[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 537,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 536,
                              "name": "ConduitBatch1155Transfer",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 1482,
                              "src": "3240:24:2"
                            },
                            "referencedDeclaration": 1482,
                            "src": "3240:24:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ConduitBatch1155Transfer_$1482_storage_ptr",
                              "typeString": "struct ConduitBatch1155Transfer"
                            }
                          },
                          "id": 538,
                          "nodeType": "ArrayTypeName",
                          "src": "3240:26:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_ConduitBatch1155Transfer_$1482_storage_$dyn_storage_ptr",
                            "typeString": "struct ConduitBatch1155Transfer[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3230:66:2"
                  },
                  "returnParameters": {
                    "id": 544,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 543,
                        "mutability": "mutable",
                        "name": "magicValue",
                        "nameLocation": "3331:10:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 566,
                        "src": "3324:17:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 542,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "3324:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3323:19:2"
                  },
                  "scope": 739,
                  "src": "3205:513:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1792
                  ],
                  "body": {
                    "id": 630,
                    "nodeType": "Block",
                    "src": "4367:983:2",
                    "statements": [
                      {
                        "condition": {
                          "id": 585,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "4436:22:2",
                          "subExpression": {
                            "baseExpression": {
                              "id": 581,
                              "name": "_channels",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 467,
                              "src": "4437:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 584,
                            "indexExpression": {
                              "expression": {
                                "id": 582,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4447:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4447:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4437:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 590,
                        "nodeType": "IfStatement",
                        "src": "4432:75:2",
                        "trueBody": {
                          "id": 589,
                          "nodeType": "Block",
                          "src": "4460:47:2",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 586,
                                  "name": "ChannelClosed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1742,
                                  "src": "4481:13:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 587,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4481:15:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 588,
                              "nodeType": "RevertStatement",
                              "src": "4474:22:2"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          592
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 592,
                            "mutability": "mutable",
                            "name": "totalStandardTransfers",
                            "nameLocation": "4599:22:2",
                            "nodeType": "VariableDeclaration",
                            "scope": 630,
                            "src": "4591:30:2",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 591,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4591:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 595,
                        "initialValue": {
                          "expression": {
                            "id": 593,
                            "name": "standardTransfers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 571,
                            "src": "4624:17:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_ConduitTransfer_$1469_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "struct ConduitTransfer calldata[] calldata"
                            }
                          },
                          "id": 594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "4624:24:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4591:57:2"
                      },
                      {
                        "body": {
                          "id": 618,
                          "nodeType": "Block",
                          "src": "4757:354:2",
                          "statements": [
                            {
                              "assignments": [
                                605
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 605,
                                  "mutability": "mutable",
                                  "name": "standardTransfer",
                                  "nameLocation": "4846:16:2",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 618,
                                  "src": "4821:41:2",
                                  "stateVariable": false,
                                  "storageLocation": "calldata",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                    "typeString": "struct ConduitTransfer"
                                  },
                                  "typeName": {
                                    "id": 604,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 603,
                                      "name": "ConduitTransfer",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 1469,
                                      "src": "4821:15:2"
                                    },
                                    "referencedDeclaration": 1469,
                                    "src": "4821:15:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ConduitTransfer_$1469_storage_ptr",
                                      "typeString": "struct ConduitTransfer"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 609,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 606,
                                  "name": "standardTransfers",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 571,
                                  "src": "4865:17:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_ConduitTransfer_$1469_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct ConduitTransfer calldata[] calldata"
                                  }
                                },
                                "id": 608,
                                "indexExpression": {
                                  "id": 607,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 597,
                                  "src": "4883:1:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4865:20:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                  "typeString": "struct ConduitTransfer calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4821:64:2"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 611,
                                    "name": "standardTransfer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 605,
                                    "src": "4947:16:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                      "typeString": "struct ConduitTransfer calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                      "typeString": "struct ConduitTransfer calldata"
                                    }
                                  ],
                                  "id": 610,
                                  "name": "_transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 738,
                                  "src": "4937:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ConduitTransfer_$1469_calldata_ptr_$returns$__$",
                                    "typeString": "function (struct ConduitTransfer calldata)"
                                  }
                                },
                                "id": 612,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4937:27:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 613,
                              "nodeType": "ExpressionStatement",
                              "src": "4937:27:2"
                            },
                            {
                              "id": 617,
                              "nodeType": "UncheckedBlock",
                              "src": "5055:46:2",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 615,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": true,
                                    "src": "5083:3:2",
                                    "subExpression": {
                                      "id": 614,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 597,
                                      "src": "5085:1:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 616,
                                  "nodeType": "ExpressionStatement",
                                  "src": "5083:3:2"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 602,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 600,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 597,
                            "src": "4727:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 601,
                            "name": "totalStandardTransfers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 592,
                            "src": "4731:22:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4727:26:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 619,
                        "initializationExpression": {
                          "assignments": [
                            597
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 597,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "4720:1:2",
                              "nodeType": "VariableDeclaration",
                              "scope": 619,
                              "src": "4712:9:2",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 596,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4712:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 599,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 598,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4724:1:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "4712:13:2"
                        },
                        "nodeType": "ForStatement",
                        "src": "4707:404:2"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 621,
                              "name": "batchTransfers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 575,
                              "src": "5192:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_ConduitBatch1155Transfer_$1482_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct ConduitBatch1155Transfer calldata[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_ConduitBatch1155Transfer_$1482_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct ConduitBatch1155Transfer calldata[] calldata"
                              }
                            ],
                            "id": 620,
                            "name": "_performERC1155BatchTransfers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7980,
                            "src": "5162:29:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_ConduitBatch1155Transfer_$1482_calldata_ptr_$dyn_calldata_ptr_$returns$__$",
                              "typeString": "function (struct ConduitBatch1155Transfer calldata[] calldata)"
                            }
                          },
                          "id": 622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5162:45:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 623,
                        "nodeType": "ExpressionStatement",
                        "src": "5162:45:2"
                      },
                      {
                        "expression": {
                          "id": 628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 624,
                            "name": "magicValue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 579,
                            "src": "5296:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "id": 625,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "5309:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Conduit_$739",
                                  "typeString": "contract Conduit"
                                }
                              },
                              "id": 626,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "executeWithBatch1155",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 631,
                              "src": "5309:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_struct$_ConduitTransfer_$1469_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_ConduitBatch1155Transfer_$1482_memory_ptr_$dyn_memory_ptr_$returns$_t_bytes4_$",
                                "typeString": "function (struct ConduitTransfer memory[] memory,struct ConduitBatch1155Transfer memory[] memory) external returns (bytes4)"
                              }
                            },
                            "id": 627,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "5309:34:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "5296:47:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "id": 629,
                        "nodeType": "ExpressionStatement",
                        "src": "5296:47:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 567,
                    "nodeType": "StructuredDocumentation",
                    "src": "3724:442:2",
                    "text": " @notice Execute a sequence of transfers, both single and batch 1155. Only\n         a caller with an open channel can call this function.\n @param standardTransfers The ERC20/721/1155 transfers to perform.\n @param batchTransfers    The 1155 batch transfers to perform.\n @return magicValue A magic value indicating that the transfers were\n                    performed successfully."
                  },
                  "functionSelector": "899e104c",
                  "id": 631,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "executeWithBatch1155",
                  "nameLocation": "4180:20:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 577,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4330:8:2"
                  },
                  "parameters": {
                    "id": 576,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 571,
                        "mutability": "mutable",
                        "name": "standardTransfers",
                        "nameLocation": "4237:17:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 631,
                        "src": "4210:44:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ConduitTransfer_$1469_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct ConduitTransfer[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 569,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 568,
                              "name": "ConduitTransfer",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 1469,
                              "src": "4210:15:2"
                            },
                            "referencedDeclaration": 1469,
                            "src": "4210:15:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ConduitTransfer_$1469_storage_ptr",
                              "typeString": "struct ConduitTransfer"
                            }
                          },
                          "id": 570,
                          "nodeType": "ArrayTypeName",
                          "src": "4210:17:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_ConduitTransfer_$1469_storage_$dyn_storage_ptr",
                            "typeString": "struct ConduitTransfer[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 575,
                        "mutability": "mutable",
                        "name": "batchTransfers",
                        "nameLocation": "4300:14:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 631,
                        "src": "4264:50:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ConduitBatch1155Transfer_$1482_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct ConduitBatch1155Transfer[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 573,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 572,
                              "name": "ConduitBatch1155Transfer",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 1482,
                              "src": "4264:24:2"
                            },
                            "referencedDeclaration": 1482,
                            "src": "4264:24:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ConduitBatch1155Transfer_$1482_storage_ptr",
                              "typeString": "struct ConduitBatch1155Transfer"
                            }
                          },
                          "id": 574,
                          "nodeType": "ArrayTypeName",
                          "src": "4264:26:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_ConduitBatch1155Transfer_$1482_storage_$dyn_storage_ptr",
                            "typeString": "struct ConduitBatch1155Transfer[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4200:120:2"
                  },
                  "returnParameters": {
                    "id": 580,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 579,
                        "mutability": "mutable",
                        "name": "magicValue",
                        "nameLocation": "4355:10:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 631,
                        "src": "4348:17:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 578,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "4348:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4347:19:2"
                  },
                  "scope": 739,
                  "src": "4171:1179:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1800
                  ],
                  "body": {
                    "id": 660,
                    "nodeType": "Block",
                    "src": "5654:337:2",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 643,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 640,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "5738:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 641,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "5738:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 642,
                            "name": "_controller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 463,
                            "src": "5752:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "5738:25:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 648,
                        "nodeType": "IfStatement",
                        "src": "5734:82:2",
                        "trueBody": {
                          "id": 647,
                          "nodeType": "Block",
                          "src": "5765:51:2",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 644,
                                  "name": "InvalidController",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1748,
                                  "src": "5786:17:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 645,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5786:19:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 646,
                              "nodeType": "RevertStatement",
                              "src": "5779:26:2"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 653,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 649,
                              "name": "_channels",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 467,
                              "src": "5871:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                                "typeString": "mapping(address => bool)"
                              }
                            },
                            "id": 651,
                            "indexExpression": {
                              "id": 650,
                              "name": "channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 634,
                              "src": "5881:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5871:18:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 652,
                            "name": "isOpen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 636,
                            "src": "5892:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5871:27:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 654,
                        "nodeType": "ExpressionStatement",
                        "src": "5871:27:2"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 656,
                              "name": "channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 634,
                              "src": "5968:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 657,
                              "name": "isOpen",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 636,
                              "src": "5977:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 655,
                            "name": "ChannelUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1758,
                            "src": "5953:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,bool)"
                            }
                          },
                          "id": 658,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5953:31:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 659,
                        "nodeType": "EmitStatement",
                        "src": "5948:36:2"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 632,
                    "nodeType": "StructuredDocumentation",
                    "src": "5356:222:2",
                    "text": " @notice Open or close a given channel. Only callable by the controller.\n @param channel The channel to open or close.\n @param isOpen  The status of the channel (either open or closed)."
                  },
                  "functionSelector": "c4e8fcb5",
                  "id": 661,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updateChannel",
                  "nameLocation": "5592:13:2",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 638,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "5645:8:2"
                  },
                  "parameters": {
                    "id": 637,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 634,
                        "mutability": "mutable",
                        "name": "channel",
                        "nameLocation": "5614:7:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 661,
                        "src": "5606:15:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 633,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5606:7:2",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 636,
                        "mutability": "mutable",
                        "name": "isOpen",
                        "nameLocation": "5628:6:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 661,
                        "src": "5623:11:2",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 635,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5623:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5605:30:2"
                  },
                  "returnParameters": {
                    "id": 639,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5654:0:2"
                  },
                  "scope": 739,
                  "src": "5583:408:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 737,
                    "nodeType": "Block",
                    "src": "6206:1077:2",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_ConduitItemType_$1451",
                            "typeString": "enum ConduitItemType"
                          },
                          "id": 672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 668,
                              "name": "item",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 665,
                              "src": "6285:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                "typeString": "struct ConduitTransfer calldata"
                              }
                            },
                            "id": 669,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "itemType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1458,
                            "src": "6285:13:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ConduitItemType_$1451",
                              "typeString": "enum ConduitItemType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 670,
                              "name": "ConduitItemType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1451,
                              "src": "6302:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ConduitItemType_$1451_$",
                                "typeString": "type(enum ConduitItemType)"
                              }
                            },
                            "id": 671,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "ERC20",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1448,
                            "src": "6302:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ConduitItemType_$1451",
                              "typeString": "enum ConduitItemType"
                            }
                          },
                          "src": "6285:38:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_enum$_ConduitItemType_$1451",
                              "typeString": "enum ConduitItemType"
                            },
                            "id": 689,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 685,
                                "name": "item",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 665,
                                "src": "6463:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                  "typeString": "struct ConduitTransfer calldata"
                                }
                              },
                              "id": 686,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "itemType",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1458,
                              "src": "6463:13:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ConduitItemType_$1451",
                                "typeString": "enum ConduitItemType"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 687,
                                "name": "ConduitItemType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1451,
                                "src": "6480:15:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ConduitItemType_$1451_$",
                                  "typeString": "type(enum ConduitItemType)"
                                }
                              },
                              "id": 688,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "ERC721",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1449,
                              "src": "6480:22:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ConduitItemType_$1451",
                                "typeString": "enum ConduitItemType"
                              }
                            },
                            "src": "6463:39:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_enum$_ConduitItemType_$1451",
                                "typeString": "enum ConduitItemType"
                              },
                              "id": 715,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 711,
                                  "name": "item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 665,
                                  "src": "6901:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                    "typeString": "struct ConduitTransfer calldata"
                                  }
                                },
                                "id": 712,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "itemType",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1458,
                                "src": "6901:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ConduitItemType_$1451",
                                  "typeString": "enum ConduitItemType"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 713,
                                  "name": "ConduitItemType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1451,
                                  "src": "6918:15:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ConduitItemType_$1451_$",
                                    "typeString": "type(enum ConduitItemType)"
                                  }
                                },
                                "id": 714,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "ERC1155",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1450,
                                "src": "6918:23:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ConduitItemType_$1451",
                                  "typeString": "enum ConduitItemType"
                                }
                              },
                              "src": "6901:40:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 733,
                              "nodeType": "Block",
                              "src": "7192:85:2",
                              "statements": [
                                {
                                  "errorCall": {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 730,
                                      "name": "InvalidItemType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1745,
                                      "src": "7249:15:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 731,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7249:17:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 732,
                                  "nodeType": "RevertStatement",
                                  "src": "7242:24:2"
                                }
                              ]
                            },
                            "id": 734,
                            "nodeType": "IfStatement",
                            "src": "6897:380:2",
                            "trueBody": {
                              "id": 729,
                              "nodeType": "Block",
                              "src": "6943:243:2",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 717,
                                          "name": "item",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 665,
                                          "src": "7037:4:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                            "typeString": "struct ConduitTransfer calldata"
                                          }
                                        },
                                        "id": 718,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "token",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1460,
                                        "src": "7037:10:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 719,
                                          "name": "item",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 665,
                                          "src": "7065:4:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                            "typeString": "struct ConduitTransfer calldata"
                                          }
                                        },
                                        "id": 720,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "from",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1462,
                                        "src": "7065:9:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 721,
                                          "name": "item",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 665,
                                          "src": "7092:4:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                            "typeString": "struct ConduitTransfer calldata"
                                          }
                                        },
                                        "id": 722,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "to",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1464,
                                        "src": "7092:7:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 723,
                                          "name": "item",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 665,
                                          "src": "7117:4:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                            "typeString": "struct ConduitTransfer calldata"
                                          }
                                        },
                                        "id": 724,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "identifier",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1466,
                                        "src": "7117:15:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 725,
                                          "name": "item",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 665,
                                          "src": "7150:4:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                            "typeString": "struct ConduitTransfer calldata"
                                          }
                                        },
                                        "id": 726,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "amount",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1468,
                                        "src": "7150:11:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 716,
                                      "name": "_performERC1155Transfer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7970,
                                      "src": "6996:23:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                        "typeString": "function (address,address,address,uint256,uint256)"
                                      }
                                    },
                                    "id": 727,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6996:179:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 728,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6996:179:2"
                                }
                              ]
                            }
                          },
                          "id": 735,
                          "nodeType": "IfStatement",
                          "src": "6459:818:2",
                          "trueBody": {
                            "id": 710,
                            "nodeType": "Block",
                            "src": "6504:387:2",
                            "statements": [
                              {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 693,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 690,
                                      "name": "item",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 665,
                                      "src": "6592:4:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                        "typeString": "struct ConduitTransfer calldata"
                                      }
                                    },
                                    "id": 691,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1468,
                                    "src": "6592:11:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 692,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6607:1:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6592:16:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 698,
                                "nodeType": "IfStatement",
                                "src": "6588:91:2",
                                "trueBody": {
                                  "id": 697,
                                  "nodeType": "Block",
                                  "src": "6610:69:2",
                                  "statements": [
                                    {
                                      "errorCall": {
                                        "arguments": [],
                                        "expression": {
                                          "argumentTypes": [],
                                          "id": 694,
                                          "name": "InvalidERC721TransferAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2233,
                                          "src": "6635:27:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                            "typeString": "function () pure"
                                          }
                                        },
                                        "id": 695,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "6635:29:2",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 696,
                                      "nodeType": "RevertStatement",
                                      "src": "6628:36:2"
                                    }
                                  ]
                                }
                              },
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 700,
                                        "name": "item",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 665,
                                        "src": "6771:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                          "typeString": "struct ConduitTransfer calldata"
                                        }
                                      },
                                      "id": 701,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "token",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1460,
                                      "src": "6771:10:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 702,
                                        "name": "item",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 665,
                                        "src": "6799:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                          "typeString": "struct ConduitTransfer calldata"
                                        }
                                      },
                                      "id": 703,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "from",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1462,
                                      "src": "6799:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 704,
                                        "name": "item",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 665,
                                        "src": "6826:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                          "typeString": "struct ConduitTransfer calldata"
                                        }
                                      },
                                      "id": 705,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "to",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1464,
                                      "src": "6826:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 706,
                                        "name": "item",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 665,
                                        "src": "6851:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                          "typeString": "struct ConduitTransfer calldata"
                                        }
                                      },
                                      "id": 707,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "identifier",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1466,
                                      "src": "6851:15:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 699,
                                    "name": "_performERC721Transfer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7954,
                                    "src": "6731:22:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                      "typeString": "function (address,address,address,uint256)"
                                    }
                                  },
                                  "id": 708,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6731:149:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 709,
                                "nodeType": "ExpressionStatement",
                                "src": "6731:149:2"
                              }
                            ]
                          }
                        },
                        "id": 736,
                        "nodeType": "IfStatement",
                        "src": "6281:996:2",
                        "trueBody": {
                          "id": 684,
                          "nodeType": "Block",
                          "src": "6325:128:2",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 674,
                                      "name": "item",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 665,
                                      "src": "6398:4:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                        "typeString": "struct ConduitTransfer calldata"
                                      }
                                    },
                                    "id": 675,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "token",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1460,
                                    "src": "6398:10:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 676,
                                      "name": "item",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 665,
                                      "src": "6410:4:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                        "typeString": "struct ConduitTransfer calldata"
                                      }
                                    },
                                    "id": 677,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "from",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1462,
                                    "src": "6410:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 678,
                                      "name": "item",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 665,
                                      "src": "6421:4:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                        "typeString": "struct ConduitTransfer calldata"
                                      }
                                    },
                                    "id": 679,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "to",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1464,
                                    "src": "6421:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 680,
                                      "name": "item",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 665,
                                      "src": "6430:4:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                                        "typeString": "struct ConduitTransfer calldata"
                                      }
                                    },
                                    "id": 681,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1468,
                                    "src": "6430:11:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 673,
                                  "name": "_performERC20Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7940,
                                  "src": "6376:21:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256)"
                                  }
                                },
                                "id": 682,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6376:66:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 683,
                              "nodeType": "ExpressionStatement",
                              "src": "6376:66:2"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 662,
                    "nodeType": "StructuredDocumentation",
                    "src": "5997:145:2",
                    "text": " @dev Internal function to transfer a given ERC20/721/1155 item.\n @param item The ERC20/721/1155 item to transfer."
                  },
                  "id": 738,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "6156:9:2",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 666,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 665,
                        "mutability": "mutable",
                        "name": "item",
                        "nameLocation": "6191:4:2",
                        "nodeType": "VariableDeclaration",
                        "scope": 738,
                        "src": "6166:29:2",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ConduitTransfer_$1469_calldata_ptr",
                          "typeString": "struct ConduitTransfer"
                        },
                        "typeName": {
                          "id": 664,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 663,
                            "name": "ConduitTransfer",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 1469,
                            "src": "6166:15:2"
                          },
                          "referencedDeclaration": 1469,
                          "src": "6166:15:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ConduitTransfer_$1469_storage_ptr",
                            "typeString": "struct ConduitTransfer"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6165:31:2"
                  },
                  "returnParameters": {
                    "id": 667,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6206:0:2"
                  },
                  "scope": 739,
                  "src": "6147:1136:2",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 740,
              "src": "1040:6245:2",
              "usedErrors": [
                1742,
                1745,
                1748,
                1751,
                2233,
                2236,
                2249,
                2264,
                2275,
                2280
              ]
            }
          ],
          "src": "32:7254:2"
        },
        "id": 2
      },
      "seaport/contracts/conduit/ConduitController.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/conduit/ConduitController.sol",
          "exportedSymbols": {
            "Conduit": [
              739
            ],
            "ConduitController": [
              1444
            ],
            "ConduitControllerInterface": [
              1733
            ],
            "ConduitInterface": [
              1801
            ]
          },
          "id": 1445,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 741,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:3"
            },
            {
              "absolutePath": "seaport/contracts/interfaces/ConduitControllerInterface.sol",
              "file": "../interfaces/ConduitControllerInterface.sol",
              "id": 743,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1445,
              "sourceUnit": 1734,
              "src": "77:91:3",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 742,
                    "name": "ConduitControllerInterface",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1733,
                    "src": "87:26:3",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/interfaces/ConduitInterface.sol",
              "file": "../interfaces/ConduitInterface.sol",
              "id": 745,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1445,
              "sourceUnit": 1802,
              "src": "170:70:3",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 744,
                    "name": "ConduitInterface",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1801,
                    "src": "179:16:3",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/conduit/Conduit.sol",
              "file": "./Conduit.sol",
              "id": 747,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1445,
              "sourceUnit": 740,
              "src": "242:40:3",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 746,
                    "name": "Conduit",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 739,
                    "src": "251:7:3",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 749,
                    "name": "ConduitControllerInterface",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1733,
                    "src": "586:26:3"
                  },
                  "id": 750,
                  "nodeType": "InheritanceSpecifier",
                  "src": "586:26:3"
                }
              ],
              "canonicalName": "ConduitController",
              "contractDependencies": [
                739
              ],
              "contractKind": "contract",
              "documentation": {
                "id": 748,
                "nodeType": "StructuredDocumentation",
                "src": "284:271:3",
                "text": " @title ConduitController\n @author 0age\n @notice ConduitController enables deploying and managing new conduits, or\n         contracts that allow registered callers (or open \"channels\") to\n         transfer approved ERC20/721/1155 tokens on their behalf."
              },
              "fullyImplemented": true,
              "id": 1444,
              "linearizedBaseContracts": [
                1444,
                1733
              ],
              "name": "ConduitController",
              "nameLocation": "565:17:3",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 755,
                  "mutability": "mutable",
                  "name": "_conduits",
                  "nameLocation": "743:9:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 1444,
                  "src": "696:56:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                    "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties)"
                  },
                  "typeName": {
                    "id": 754,
                    "keyType": {
                      "id": 751,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "704:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "696:37:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                      "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties)"
                    },
                    "valueType": {
                      "id": 753,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 752,
                        "name": "ConduitProperties",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 1559,
                        "src": "715:17:3"
                      },
                      "referencedDeclaration": 1559,
                      "src": "715:17:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage_ptr",
                        "typeString": "struct ConduitControllerInterface.ConduitProperties"
                      }
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 757,
                  "mutability": "immutable",
                  "name": "_CONDUIT_CREATION_CODE_HASH",
                  "nameLocation": "867:27:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 1444,
                  "src": "840:54:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 756,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "840:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 759,
                  "mutability": "immutable",
                  "name": "_CONDUIT_RUNTIME_CODE_HASH",
                  "nameLocation": "927:26:3",
                  "nodeType": "VariableDeclaration",
                  "scope": 1444,
                  "src": "900:53:3",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 758,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "900:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 793,
                    "nodeType": "Block",
                    "src": "1135:434:3",
                    "statements": [
                      {
                        "expression": {
                          "id": 770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 763,
                            "name": "_CONDUIT_CREATION_CODE_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 757,
                            "src": "1222:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 766,
                                      "name": "Conduit",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 739,
                                      "src": "1267:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Conduit_$739_$",
                                        "typeString": "type(contract Conduit)"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_type$_t_contract$_Conduit_$739_$",
                                        "typeString": "type(contract Conduit)"
                                      }
                                    ],
                                    "id": 765,
                                    "name": "type",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -27,
                                    "src": "1262:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                      "typeString": "function () pure"
                                    }
                                  },
                                  "id": 767,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1262:13:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_meta_type_t_contract$_Conduit_$739",
                                    "typeString": "type(contract Conduit)"
                                  }
                                },
                                "id": 768,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "creationCode",
                                "nodeType": "MemberAccess",
                                "src": "1262:26:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 764,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "1252:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 769,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1252:37:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1222:67:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 771,
                        "nodeType": "ExpressionStatement",
                        "src": "1222:67:3"
                      },
                      {
                        "assignments": [
                          774
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 774,
                            "mutability": "mutable",
                            "name": "zeroConduit",
                            "nameLocation": "1368:11:3",
                            "nodeType": "VariableDeclaration",
                            "scope": 793,
                            "src": "1360:19:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Conduit_$739",
                              "typeString": "contract Conduit"
                            },
                            "typeName": {
                              "id": 773,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 772,
                                "name": "Conduit",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 739,
                                "src": "1360:7:3"
                              },
                              "referencedDeclaration": 739,
                              "src": "1360:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Conduit_$739",
                                "typeString": "contract Conduit"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 784,
                        "initialValue": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 777,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1382:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Conduit_$739_$",
                                "typeString": "function () returns (contract Conduit)"
                              },
                              "typeName": {
                                "id": 776,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 775,
                                  "name": "Conduit",
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 739,
                                  "src": "1386:7:3"
                                },
                                "referencedDeclaration": 739,
                                "src": "1386:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Conduit_$739",
                                  "typeString": "contract Conduit"
                                }
                              }
                            },
                            "id": 782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "salt"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 780,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1409:1:3",
                                    "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": 779,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1401:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes32_$",
                                    "typeString": "type(bytes32)"
                                  },
                                  "typeName": {
                                    "id": 778,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1401:7:3",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 781,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1401:10:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "src": "1382:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Conduit_$739_$salt",
                              "typeString": "function () returns (contract Conduit)"
                            }
                          },
                          "id": 783,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1382:33:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Conduit_$739",
                            "typeString": "contract Conduit"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1360:55:3"
                      },
                      {
                        "expression": {
                          "id": 791,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 785,
                            "name": "_CONDUIT_RUNTIME_CODE_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 759,
                            "src": "1504:26:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 788,
                                  "name": "zeroConduit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 774,
                                  "src": "1541:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_Conduit_$739",
                                    "typeString": "contract Conduit"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_Conduit_$739",
                                    "typeString": "contract Conduit"
                                  }
                                ],
                                "id": 787,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1533:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 786,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1533:7:3",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 789,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1533:20:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 790,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "codehash",
                            "nodeType": "MemberAccess",
                            "src": "1533:29:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "1504:58:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 792,
                        "nodeType": "ExpressionStatement",
                        "src": "1504:58:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 760,
                    "nodeType": "StructuredDocumentation",
                    "src": "960:156:3",
                    "text": " @dev Initialize contract by deploying a conduit and setting the creation\n      code and runtime code hashes as immutable arguments."
                  },
                  "id": 794,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 761,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1132:2:3"
                  },
                  "returnParameters": {
                    "id": 762,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1135:0:3"
                  },
                  "scope": 1444,
                  "src": "1121:448:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "baseFunctions": [
                    1623
                  ],
                  "body": {
                    "id": 895,
                    "nodeType": "Block",
                    "src": "2465:1691:3",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 817,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "id": 811,
                                        "name": "conduitKey",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 797,
                                        "src": "2582:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 810,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2574:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes20_$",
                                        "typeString": "type(bytes20)"
                                      },
                                      "typeName": {
                                        "id": 809,
                                        "name": "bytes20",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2574:7:3",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 812,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2574:19:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes20",
                                      "typeString": "bytes20"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes20",
                                      "typeString": "bytes20"
                                    }
                                  ],
                                  "id": 808,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2566:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 807,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2566:7:3",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 813,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2566:28:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 806,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2558:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 805,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2558:7:3",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 814,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2558:37:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "id": 815,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2599:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 816,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "2599:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2558:51:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 822,
                        "nodeType": "IfStatement",
                        "src": "2554:181:3",
                        "trueBody": {
                          "id": 821,
                          "nodeType": "Block",
                          "src": "2611:124:3",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 818,
                                  "name": "InvalidCreator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1585,
                                  "src": "2708:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 819,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2708:16:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 820,
                              "nodeType": "RevertStatement",
                              "src": "2701:23:3"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 848,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 823,
                            "name": "conduit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 803,
                            "src": "2822:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "hexValue": "30786666",
                                                    "id": 835,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "2995:4:3",
                                                    "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": 834,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "2988:6:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_bytes1_$",
                                                    "typeString": "type(bytes1)"
                                                  },
                                                  "typeName": {
                                                    "id": 833,
                                                    "name": "bytes1",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2988:6:3",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 836,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2988:12:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                }
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 839,
                                                    "name": "this",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -28,
                                                    "src": "3038:4:3",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_contract$_ConduitController_$1444",
                                                      "typeString": "contract ConduitController"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_contract$_ConduitController_$1444",
                                                      "typeString": "contract ConduitController"
                                                    }
                                                  ],
                                                  "id": 838,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "3030:7:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                  },
                                                  "typeName": {
                                                    "id": 837,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3030:7:3",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 840,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3030:13:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 841,
                                                "name": "conduitKey",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 797,
                                                "src": "3073:10:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              {
                                                "id": 842,
                                                "name": "_CONDUIT_CREATION_CODE_HASH",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 757,
                                                "src": "3113:27:3",
                                                "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": 831,
                                                "name": "abi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -1,
                                                "src": "2942:3:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_abi",
                                                  "typeString": "abi"
                                                }
                                              },
                                              "id": 832,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "encodePacked",
                                              "nodeType": "MemberAccess",
                                              "src": "2942:16:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function () pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 843,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2942:224:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 830,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -8,
                                          "src": "2907:9:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 844,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2907:281:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 829,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2878:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 828,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2878:7:3",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 845,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2878:328:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 827,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2853:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 826,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2853:7:3",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 846,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2853:367:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 825,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2832:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 824,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2832:7:3",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 847,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2832:398:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2822:408:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 849,
                        "nodeType": "ExpressionStatement",
                        "src": "2822:408:3"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 850,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 803,
                              "src": "3325:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 851,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "codehash",
                            "nodeType": "MemberAccess",
                            "src": "3325:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 852,
                            "name": "_CONDUIT_RUNTIME_CODE_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 759,
                            "src": "3345:26:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "3325:46:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 859,
                        "nodeType": "IfStatement",
                        "src": "3321:193:3",
                        "trueBody": {
                          "id": 858,
                          "nodeType": "Block",
                          "src": "3373:141:3",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 855,
                                    "name": "conduit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 803,
                                    "src": "3495:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 854,
                                  "name": "ConduitAlreadyExists",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1593,
                                  "src": "3474:20:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
                                    "typeString": "function (address) pure"
                                  }
                                },
                                "id": 856,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3474:29:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 857,
                              "nodeType": "RevertStatement",
                              "src": "3467:36:3"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 862,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "3601:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Conduit_$739_$",
                                "typeString": "function () returns (contract Conduit)"
                              },
                              "typeName": {
                                "id": 861,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 860,
                                  "name": "Conduit",
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 739,
                                  "src": "3605:7:3"
                                },
                                "referencedDeclaration": 739,
                                "src": "3605:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Conduit_$739",
                                  "typeString": "contract Conduit"
                                }
                              }
                            },
                            "id": 864,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "names": [
                              "salt"
                            ],
                            "nodeType": "FunctionCallOptions",
                            "options": [
                              {
                                "id": 863,
                                "name": "conduitKey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 797,
                                "src": "3620:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "src": "3601:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Conduit_$739_$salt",
                              "typeString": "function () returns (contract Conduit)"
                            }
                          },
                          "id": 865,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3601:33:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Conduit_$739",
                            "typeString": "contract Conduit"
                          }
                        },
                        "id": 866,
                        "nodeType": "ExpressionStatement",
                        "src": "3601:33:3"
                      },
                      {
                        "expression": {
                          "id": 872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 867,
                                "name": "_conduits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 755,
                                "src": "3716:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                  "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                }
                              },
                              "id": 869,
                              "indexExpression": {
                                "id": 868,
                                "name": "conduit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 803,
                                "src": "3726:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3716:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                              }
                            },
                            "id": 870,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1549,
                            "src": "3716:24:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 871,
                            "name": "initialOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 799,
                            "src": "3743:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3716:39:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 873,
                        "nodeType": "ExpressionStatement",
                        "src": "3716:39:3"
                      },
                      {
                        "expression": {
                          "id": 879,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 874,
                                "name": "_conduits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 755,
                                "src": "3846:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                  "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                }
                              },
                              "id": 876,
                              "indexExpression": {
                                "id": 875,
                                "name": "conduit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 803,
                                "src": "3856:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3846:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                              }
                            },
                            "id": 877,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "key",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1547,
                            "src": "3846:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 878,
                            "name": "conduitKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 797,
                            "src": "3871:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "3846:35:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 880,
                        "nodeType": "ExpressionStatement",
                        "src": "3846:35:3"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 882,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 803,
                              "src": "3980:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 883,
                              "name": "conduitKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 797,
                              "src": "3989:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 881,
                            "name": "NewConduit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1566,
                            "src": "3969:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                              "typeString": "function (address,bytes32)"
                            }
                          },
                          "id": 884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3969:31:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 885,
                        "nodeType": "EmitStatement",
                        "src": "3964:36:3"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 887,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 803,
                              "src": "4115:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 890,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4132:1:3",
                                  "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": 889,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "4124:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 888,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4124:7:3",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 891,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4124:10:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 892,
                              "name": "initialOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 799,
                              "src": "4136:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 886,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1575,
                            "src": "4094:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4094:55:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 894,
                        "nodeType": "EmitStatement",
                        "src": "4089:60:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 795,
                    "nodeType": "StructuredDocumentation",
                    "src": "1575:748:3",
                    "text": " @notice Deploy a new conduit using a supplied conduit key and assigning\n         an initial owner for the deployed conduit. Note that the first\n         twenty bytes of the supplied conduit key must match the caller\n         and that a new conduit cannot be created if one has already been\n         deployed using the same conduit key.\n @param conduitKey   The conduit key used to deploy the conduit. Note that\n                     the first twenty bytes of the conduit key must match\n                     the caller of this contract.\n @param initialOwner The initial owner to set for the new conduit.\n @return conduit The address of the newly deployed conduit."
                  },
                  "functionSelector": "794593bc",
                  "id": 896,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "createConduit",
                  "nameLocation": "2337:13:3",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 801,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "2418:8:3"
                  },
                  "parameters": {
                    "id": 800,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 797,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "2359:10:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 896,
                        "src": "2351:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 796,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2351:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 799,
                        "mutability": "mutable",
                        "name": "initialOwner",
                        "nameLocation": "2379:12:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 896,
                        "src": "2371:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 798,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2371:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2350:42:3"
                  },
                  "returnParameters": {
                    "id": 804,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 803,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "2452:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 896,
                        "src": "2444:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 802,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2444:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2443:17:3"
                  },
                  "scope": 1444,
                  "src": "2328:1828:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1633
                  ],
                  "body": {
                    "id": 1028,
                    "nodeType": "Block",
                    "src": "5001:2654:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 908,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 899,
                              "src": "5117:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 907,
                            "name": "_assertCallerIsConduitOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1422,
                            "src": "5089:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5089:36:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 910,
                        "nodeType": "ExpressionStatement",
                        "src": "5089:36:3"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 915,
                              "name": "channel",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 901,
                              "src": "5227:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 916,
                              "name": "isOpen",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 903,
                              "src": "5236:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "id": 912,
                                  "name": "conduit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 899,
                                  "src": "5204:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 911,
                                "name": "ConduitInterface",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1801,
                                "src": "5187:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ConduitInterface_$1801_$",
                                  "typeString": "type(contract ConduitInterface)"
                                }
                              },
                              "id": 913,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5187:25:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ConduitInterface_$1801",
                                "typeString": "contract ConduitInterface"
                              }
                            },
                            "id": 914,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "updateChannel",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1800,
                            "src": "5187:39:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bool_$returns$__$",
                              "typeString": "function (address,bool) external"
                            }
                          },
                          "id": 917,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5187:56:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 918,
                        "nodeType": "ExpressionStatement",
                        "src": "5187:56:3"
                      },
                      {
                        "assignments": [
                          921
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 921,
                            "mutability": "mutable",
                            "name": "conduitProperties",
                            "nameLocation": "5359:17:3",
                            "nodeType": "VariableDeclaration",
                            "scope": 1028,
                            "src": "5333:43:3",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage_ptr",
                              "typeString": "struct ConduitControllerInterface.ConduitProperties"
                            },
                            "typeName": {
                              "id": 920,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 919,
                                "name": "ConduitProperties",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 1559,
                                "src": "5333:17:3"
                              },
                              "referencedDeclaration": 1559,
                              "src": "5333:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage_ptr",
                                "typeString": "struct ConduitControllerInterface.ConduitProperties"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 925,
                        "initialValue": {
                          "baseExpression": {
                            "id": 922,
                            "name": "_conduits",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 755,
                            "src": "5379:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                              "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                            }
                          },
                          "id": 924,
                          "indexExpression": {
                            "id": 923,
                            "name": "conduit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 899,
                            "src": "5389:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5379:18:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                            "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5333:64:3"
                      },
                      {
                        "assignments": [
                          927
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 927,
                            "mutability": "mutable",
                            "name": "channelIndexPlusOne",
                            "nameLocation": "5497:19:3",
                            "nodeType": "VariableDeclaration",
                            "scope": 1028,
                            "src": "5489:27:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 926,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5489:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 933,
                        "initialValue": {
                          "components": [
                            {
                              "baseExpression": {
                                "expression": {
                                  "id": 928,
                                  "name": "conduitProperties",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 921,
                                  "src": "5533:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage_ptr",
                                    "typeString": "struct ConduitControllerInterface.ConduitProperties storage pointer"
                                  }
                                },
                                "id": 929,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "channelIndexesPlusOne",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1558,
                                "src": "5533:39:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 931,
                              "indexExpression": {
                                "id": 930,
                                "name": "channel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 901,
                                "src": "5573:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5533:48:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 932,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5519:72:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5489:102:3"
                      },
                      {
                        "assignments": [
                          935
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 935,
                            "mutability": "mutable",
                            "name": "channelPreviouslyOpen",
                            "nameLocation": "5684:21:3",
                            "nodeType": "VariableDeclaration",
                            "scope": 1028,
                            "src": "5679:26:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 934,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "5679:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 939,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 938,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 936,
                            "name": "channelIndexPlusOne",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 927,
                            "src": "5708:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 937,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5731:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "5708:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5679:53:3"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 943,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 940,
                            "name": "isOpen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 903,
                            "src": "5823:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "id": 942,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "5833:22:3",
                            "subExpression": {
                              "id": 941,
                              "name": "channelPreviouslyOpen",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 935,
                              "src": "5834:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5823:32:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 967,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 965,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "6212:7:3",
                              "subExpression": {
                                "id": 964,
                                "name": "isOpen",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 903,
                                "src": "6213:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "id": 966,
                              "name": "channelPreviouslyOpen",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 935,
                              "src": "6223:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "6212:32:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 1026,
                          "nodeType": "IfStatement",
                          "src": "6208:1441:3",
                          "trueBody": {
                            "id": 1025,
                            "nodeType": "Block",
                            "src": "6246:1403:3",
                            "statements": [
                              {
                                "assignments": [
                                  969
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 969,
                                    "mutability": "mutable",
                                    "name": "removedChannelIndex",
                                    "nameLocation": "6427:19:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1025,
                                    "src": "6419:27:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 968,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6419:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 973,
                                "initialValue": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 972,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 970,
                                    "name": "channelIndexPlusOne",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 927,
                                    "src": "6449:19:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 971,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6471:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6449:23:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "6419:53:3"
                              },
                              {
                                "assignments": [
                                  975
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 975,
                                    "mutability": "mutable",
                                    "name": "finalChannelIndex",
                                    "nameLocation": "6575:17:3",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 1025,
                                    "src": "6567:25:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 974,
                                      "name": "uint256",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "6567:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 981,
                                "initialValue": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 980,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "expression": {
                                        "id": 976,
                                        "name": "conduitProperties",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 921,
                                        "src": "6595:17:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage_ptr",
                                          "typeString": "struct ConduitControllerInterface.ConduitProperties storage pointer"
                                        }
                                      },
                                      "id": 977,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "channels",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1554,
                                      "src": "6595:26:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                        "typeString": "address[] storage ref"
                                      }
                                    },
                                    "id": 978,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "6595:33:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 979,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6631:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6595:37:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "6567:65:3"
                              },
                              {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 984,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 982,
                                    "name": "finalChannelIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 975,
                                    "src": "6729:17:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "id": 983,
                                    "name": "removedChannelIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 969,
                                    "src": "6750:19:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "6729:40:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 1011,
                                "nodeType": "IfStatement",
                                "src": "6725:640:3",
                                "trueBody": {
                                  "id": 1010,
                                  "nodeType": "Block",
                                  "src": "6771:594:3",
                                  "statements": [
                                    {
                                      "assignments": [
                                        986
                                      ],
                                      "declarations": [
                                        {
                                          "constant": false,
                                          "id": 986,
                                          "mutability": "mutable",
                                          "name": "finalChannel",
                                          "nameLocation": "6877:12:3",
                                          "nodeType": "VariableDeclaration",
                                          "scope": 1010,
                                          "src": "6869:20:3",
                                          "stateVariable": false,
                                          "storageLocation": "default",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          "typeName": {
                                            "id": 985,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "6869:7:3",
                                            "stateMutability": "nonpayable",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "visibility": "internal"
                                        }
                                      ],
                                      "id": 992,
                                      "initialValue": {
                                        "components": [
                                          {
                                            "baseExpression": {
                                              "expression": {
                                                "id": 987,
                                                "name": "conduitProperties",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 921,
                                                "src": "6914:17:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage_ptr",
                                                  "typeString": "struct ConduitControllerInterface.ConduitProperties storage pointer"
                                                }
                                              },
                                              "id": 988,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "channels",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 1554,
                                              "src": "6914:26:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                "typeString": "address[] storage ref"
                                              }
                                            },
                                            "id": 990,
                                            "indexExpression": {
                                              "id": 989,
                                              "name": "finalChannelIndex",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 975,
                                              "src": "6941:17:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "6914:45:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "id": 991,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "6892:85:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "VariableDeclarationStatement",
                                      "src": "6869:108:3"
                                    },
                                    {
                                      "expression": {
                                        "id": 999,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "baseExpression": {
                                            "expression": {
                                              "id": 993,
                                              "name": "conduitProperties",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 921,
                                              "src": "7076:17:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage_ptr",
                                                "typeString": "struct ConduitControllerInterface.ConduitProperties storage pointer"
                                              }
                                            },
                                            "id": 996,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "channels",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1554,
                                            "src": "7076:26:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                              "typeString": "address[] storage ref"
                                            }
                                          },
                                          "id": 997,
                                          "indexExpression": {
                                            "id": 995,
                                            "name": "removedChannelIndex",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 969,
                                            "src": "7103:19:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "nodeType": "IndexAccess",
                                          "src": "7076:47:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "id": 998,
                                          "name": "finalChannel",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 986,
                                          "src": "7126:12:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "src": "7076:62:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "id": 1000,
                                      "nodeType": "ExpressionStatement",
                                      "src": "7076:62:3"
                                    },
                                    {
                                      "expression": {
                                        "id": 1008,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "baseExpression": {
                                            "expression": {
                                              "id": 1001,
                                              "name": "conduitProperties",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 921,
                                              "src": "7235:17:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage_ptr",
                                                "typeString": "struct ConduitControllerInterface.ConduitProperties storage pointer"
                                              }
                                            },
                                            "id": 1004,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "channelIndexesPlusOne",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1558,
                                            "src": "7235:39:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                              "typeString": "mapping(address => uint256)"
                                            }
                                          },
                                          "id": 1005,
                                          "indexExpression": {
                                            "id": 1003,
                                            "name": "finalChannel",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 986,
                                            "src": "7275:12:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "nodeType": "IndexAccess",
                                          "src": "7235:53:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                          "components": [
                                            {
                                              "id": 1006,
                                              "name": "channelIndexPlusOne",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 927,
                                              "src": "7313:19:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "id": 1007,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "7291:59:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "7235:115:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 1009,
                                      "nodeType": "ExpressionStatement",
                                      "src": "7235:115:3"
                                    }
                                  ]
                                }
                              },
                              {
                                "expression": {
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "expression": {
                                        "id": 1012,
                                        "name": "conduitProperties",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 921,
                                        "src": "7459:17:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage_ptr",
                                          "typeString": "struct ConduitControllerInterface.ConduitProperties storage pointer"
                                        }
                                      },
                                      "id": 1015,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "channels",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1554,
                                      "src": "7459:26:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                        "typeString": "address[] storage ref"
                                      }
                                    },
                                    "id": 1016,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pop",
                                    "nodeType": "MemberAccess",
                                    "src": "7459:30:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$",
                                      "typeString": "function (address[] storage pointer)"
                                    }
                                  },
                                  "id": 1017,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7459:32:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 1018,
                                "nodeType": "ExpressionStatement",
                                "src": "7459:32:3"
                              },
                              {
                                "expression": {
                                  "id": 1023,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "delete",
                                  "prefix": true,
                                  "src": "7583:55:3",
                                  "subExpression": {
                                    "baseExpression": {
                                      "expression": {
                                        "id": 1019,
                                        "name": "conduitProperties",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 921,
                                        "src": "7590:17:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage_ptr",
                                          "typeString": "struct ConduitControllerInterface.ConduitProperties storage pointer"
                                        }
                                      },
                                      "id": 1020,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "channelIndexesPlusOne",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 1558,
                                      "src": "7590:39:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                        "typeString": "mapping(address => uint256)"
                                      }
                                    },
                                    "id": 1022,
                                    "indexExpression": {
                                      "id": 1021,
                                      "name": "channel",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 901,
                                      "src": "7630:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": true,
                                    "nodeType": "IndexAccess",
                                    "src": "7590:48:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 1024,
                                "nodeType": "ExpressionStatement",
                                "src": "7583:55:3"
                              }
                            ]
                          }
                        },
                        "id": 1027,
                        "nodeType": "IfStatement",
                        "src": "5819:1830:3",
                        "trueBody": {
                          "id": 963,
                          "nodeType": "Block",
                          "src": "5857:345:3",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 949,
                                    "name": "channel",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 901,
                                    "src": "5973:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "expression": {
                                      "id": 944,
                                      "name": "conduitProperties",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 921,
                                      "src": "5941:17:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage_ptr",
                                        "typeString": "struct ConduitControllerInterface.ConduitProperties storage pointer"
                                      }
                                    },
                                    "id": 947,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "channels",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1554,
                                    "src": "5941:26:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 948,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "push",
                                  "nodeType": "MemberAccess",
                                  "src": "5941:31:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_address_$dyn_storage_ptr_$_t_address_$returns$__$bound_to$_t_array$_t_address_$dyn_storage_ptr_$",
                                    "typeString": "function (address[] storage pointer,address)"
                                  }
                                },
                                "id": 950,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5941:40:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 951,
                              "nodeType": "ExpressionStatement",
                              "src": "5941:40:3"
                            },
                            {
                              "expression": {
                                "id": 961,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "baseExpression": {
                                    "expression": {
                                      "id": 952,
                                      "name": "conduitProperties",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 921,
                                      "src": "6075:17:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage_ptr",
                                        "typeString": "struct ConduitControllerInterface.ConduitProperties storage pointer"
                                      }
                                    },
                                    "id": 955,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "channelIndexesPlusOne",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 1558,
                                    "src": "6075:39:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 956,
                                  "indexExpression": {
                                    "id": 954,
                                    "name": "channel",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 901,
                                    "src": "6115:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "6075:48:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "components": [
                                    {
                                      "expression": {
                                        "expression": {
                                          "id": 957,
                                          "name": "conduitProperties",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 921,
                                          "src": "6144:17:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage_ptr",
                                            "typeString": "struct ConduitControllerInterface.ConduitProperties storage pointer"
                                          }
                                        },
                                        "id": 958,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "channels",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 1554,
                                        "src": "6144:26:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                          "typeString": "address[] storage ref"
                                        }
                                      },
                                      "id": 959,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "6144:33:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 960,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "6126:65:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6075:116:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 962,
                              "nodeType": "ExpressionStatement",
                              "src": "6075:116:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 897,
                    "nodeType": "StructuredDocumentation",
                    "src": "4162:716:3",
                    "text": " @notice Open or close a channel on a given conduit, thereby allowing the\n         specified account to execute transfers against that conduit.\n         Extreme care must be taken when updating channels, as malicious\n         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\n         tokens where the token holder has granted the conduit approval.\n         Only the owner of the conduit in question may call this function.\n @param conduit The conduit for which to open or close the channel.\n @param channel The channel to open or close on the conduit.\n @param isOpen  A boolean indicating whether to open or close the channel."
                  },
                  "functionSelector": "13ad9cab",
                  "id": 1029,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updateChannel",
                  "nameLocation": "4892:13:3",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 905,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "4992:8:3"
                  },
                  "parameters": {
                    "id": 904,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 899,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "4923:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1029,
                        "src": "4915:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 898,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4915:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 901,
                        "mutability": "mutable",
                        "name": "channel",
                        "nameLocation": "4948:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1029,
                        "src": "4940:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 900,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4940:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 903,
                        "mutability": "mutable",
                        "name": "isOpen",
                        "nameLocation": "4970:6:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1029,
                        "src": "4965:11:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 902,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4965:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4905:77:3"
                  },
                  "returnParameters": {
                    "id": 906,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5001:0:3"
                  },
                  "scope": 1444,
                  "src": "4883:2772:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1641
                  ],
                  "body": {
                    "id": 1066,
                    "nodeType": "Block",
                    "src": "8185:604:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1039,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1032,
                              "src": "8301:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1038,
                            "name": "_assertCallerIsConduitOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1422,
                            "src": "8273:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 1040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8273:36:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1041,
                        "nodeType": "ExpressionStatement",
                        "src": "8273:36:3"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1042,
                            "name": "newPotentialOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1034,
                            "src": "8393:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 1045,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8422:1:3",
                                "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": 1044,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8414:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1043,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8414:7:3",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1046,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8414:10:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "8393:31:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1053,
                        "nodeType": "IfStatement",
                        "src": "8389:108:3",
                        "trueBody": {
                          "id": 1052,
                          "nodeType": "Block",
                          "src": "8426:71:3",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 1049,
                                    "name": "conduit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1032,
                                    "src": "8478:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1048,
                                  "name": "NewPotentialOwnerIsZeroAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1603,
                                  "src": "8447:30:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
                                    "typeString": "function (address) pure"
                                  }
                                },
                                "id": 1050,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8447:39:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1051,
                              "nodeType": "RevertStatement",
                              "src": "8440:46:3"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1055,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1032,
                              "src": "8613:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 1056,
                              "name": "newPotentialOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1034,
                              "src": "8622:17:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1054,
                            "name": "PotentialOwnerUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1582,
                            "src": "8591:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 1057,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8591:49:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1058,
                        "nodeType": "EmitStatement",
                        "src": "8586:54:3"
                      },
                      {
                        "expression": {
                          "id": 1064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 1059,
                                "name": "_conduits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 755,
                                "src": "8729:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                  "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                }
                              },
                              "id": 1061,
                              "indexExpression": {
                                "id": 1060,
                                "name": "conduit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1032,
                                "src": "8739:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8729:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                              }
                            },
                            "id": 1062,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "potentialOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1551,
                            "src": "8729:33:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1063,
                            "name": "newPotentialOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1034,
                            "src": "8765:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "8729:53:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1065,
                        "nodeType": "ExpressionStatement",
                        "src": "8729:53:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1030,
                    "nodeType": "StructuredDocumentation",
                    "src": "7661:410:3",
                    "text": " @notice Initiate conduit ownership transfer by assigning a new potential\n         owner for the given conduit. Once set, the new potential owner\n         may call `acceptOwnership` to claim ownership of the conduit.\n         Only the owner of the conduit in question may call this function.\n @param conduit The conduit for which to initiate ownership transfer."
                  },
                  "functionSelector": "6d435421",
                  "id": 1067,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferOwnership",
                  "nameLocation": "8085:17:3",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1036,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "8172:8:3"
                  },
                  "parameters": {
                    "id": 1035,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1032,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "8111:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1067,
                        "src": "8103:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1031,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8103:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1034,
                        "mutability": "mutable",
                        "name": "newPotentialOwner",
                        "nameLocation": "8128:17:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1067,
                        "src": "8120:25:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1033,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8120:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8102:44:3"
                  },
                  "returnParameters": {
                    "id": 1037,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8185:0:3"
                  },
                  "scope": 1444,
                  "src": "8076:713:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1647
                  ],
                  "body": {
                    "id": 1092,
                    "nodeType": "Block",
                    "src": "9121:386:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1075,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1070,
                              "src": "9237:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1074,
                            "name": "_assertCallerIsConduitOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1422,
                            "src": "9209:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 1076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9209:36:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1077,
                        "nodeType": "ExpressionStatement",
                        "src": "9209:36:3"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1079,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1070,
                              "src": "9362:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1082,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9379:1:3",
                                  "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": 1081,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9371:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1080,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9371:7:3",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1083,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9371:10:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1078,
                            "name": "PotentialOwnerUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1582,
                            "src": "9340:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 1084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9340:42:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1085,
                        "nodeType": "EmitStatement",
                        "src": "9335:47:3"
                      },
                      {
                        "expression": {
                          "id": 1090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "9460:40:3",
                          "subExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 1086,
                                "name": "_conduits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 755,
                                "src": "9467:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                  "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                }
                              },
                              "id": 1088,
                              "indexExpression": {
                                "id": 1087,
                                "name": "conduit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1070,
                                "src": "9477:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "9467:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                              }
                            },
                            "id": 1089,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "potentialOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1551,
                            "src": "9467:33:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1091,
                        "nodeType": "ExpressionStatement",
                        "src": "9460:40:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1068,
                    "nodeType": "StructuredDocumentation",
                    "src": "8795:253:3",
                    "text": " @notice Clear the currently set potential owner, if any, from a conduit.\n         Only the owner of the conduit in question may call this function.\n @param conduit The conduit for which to cancel ownership transfer."
                  },
                  "functionSelector": "7b37e561",
                  "id": 1093,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "cancelOwnershipTransfer",
                  "nameLocation": "9062:23:3",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1072,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9112:8:3"
                  },
                  "parameters": {
                    "id": 1071,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1070,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "9094:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1093,
                        "src": "9086:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1069,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9086:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9085:17:3"
                  },
                  "returnParameters": {
                    "id": 1073,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9121:0:3"
                  },
                  "scope": 1444,
                  "src": "9053:454:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1653
                  ],
                  "body": {
                    "id": 1149,
                    "nodeType": "Block",
                    "src": "9842:952:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1101,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1096,
                              "src": "9928:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1100,
                            "name": "_assertConduitExists",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1443,
                            "src": "9907:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 1102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9907:29:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1103,
                        "nodeType": "ExpressionStatement",
                        "src": "9907:29:3"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 1104,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "10029:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1105,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "10029:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 1106,
                                "name": "_conduits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 755,
                                "src": "10043:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                  "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                }
                              },
                              "id": 1108,
                              "indexExpression": {
                                "id": 1107,
                                "name": "conduit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1096,
                                "src": "10053:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10043:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                              }
                            },
                            "id": 1109,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "potentialOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1551,
                            "src": "10043:33:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "10029:47:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1116,
                        "nodeType": "IfStatement",
                        "src": "10025:200:3",
                        "trueBody": {
                          "id": 1115,
                          "nodeType": "Block",
                          "src": "10078:147:3",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 1112,
                                    "name": "conduit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1096,
                                    "src": "10206:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1111,
                                  "name": "CallerIsNotNewPotentialOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1608,
                                  "src": "10177:28:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
                                    "typeString": "function (address) pure"
                                  }
                                },
                                "id": 1113,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10177:37:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1114,
                              "nodeType": "RevertStatement",
                              "src": "10170:44:3"
                            }
                          ]
                        }
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1118,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1096,
                              "src": "10341:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "hexValue": "30",
                                  "id": 1121,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10358:1:3",
                                  "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": 1120,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10350:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1119,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10350:7:3",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 1122,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10350:10:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1117,
                            "name": "PotentialOwnerUpdated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1582,
                            "src": "10319:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address)"
                            }
                          },
                          "id": 1123,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10319:42:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1124,
                        "nodeType": "EmitStatement",
                        "src": "10314:47:3"
                      },
                      {
                        "expression": {
                          "id": 1129,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "10439:40:3",
                          "subExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 1125,
                                "name": "_conduits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 755,
                                "src": "10446:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                  "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                }
                              },
                              "id": 1127,
                              "indexExpression": {
                                "id": 1126,
                                "name": "conduit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1096,
                                "src": "10456:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10446:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                              }
                            },
                            "id": 1128,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "potentialOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1551,
                            "src": "10446:33:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1130,
                        "nodeType": "ExpressionStatement",
                        "src": "10439:40:3"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 1132,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1096,
                              "src": "10605:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "baseExpression": {
                                  "id": 1133,
                                  "name": "_conduits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 755,
                                  "src": "10626:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                    "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                  }
                                },
                                "id": 1135,
                                "indexExpression": {
                                  "id": 1134,
                                  "name": "conduit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1096,
                                  "src": "10636:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "10626:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                  "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                                }
                              },
                              "id": 1136,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "owner",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1549,
                              "src": "10626:24:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 1137,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "10664:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1138,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "10664:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1131,
                            "name": "OwnershipTransferred",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1575,
                            "src": "10571:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (address,address,address)"
                            }
                          },
                          "id": 1139,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10571:113:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1140,
                        "nodeType": "EmitStatement",
                        "src": "10566:118:3"
                      },
                      {
                        "expression": {
                          "id": 1147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 1141,
                                "name": "_conduits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 755,
                                "src": "10750:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                  "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                }
                              },
                              "id": 1143,
                              "indexExpression": {
                                "id": 1142,
                                "name": "conduit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1096,
                                "src": "10760:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "10750:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                              }
                            },
                            "id": 1144,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1549,
                            "src": "10750:24:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 1145,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "10777:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "10777:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "10750:37:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1148,
                        "nodeType": "ExpressionStatement",
                        "src": "10750:37:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1094,
                    "nodeType": "StructuredDocumentation",
                    "src": "9513:264:3",
                    "text": " @notice Accept ownership of a supplied conduit. Only accounts that the\n         current owner has set as the new potential owner may call this\n         function.\n @param conduit The conduit for which to accept ownership."
                  },
                  "functionSelector": "51710e45",
                  "id": 1150,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "acceptOwnership",
                  "nameLocation": "9791:15:3",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1098,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "9833:8:3"
                  },
                  "parameters": {
                    "id": 1097,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1096,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "9815:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1150,
                        "src": "9807:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1095,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9807:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9806:17:3"
                  },
                  "returnParameters": {
                    "id": 1099,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9842:0:3"
                  },
                  "scope": 1444,
                  "src": "9782:1012:3",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1661
                  ],
                  "body": {
                    "id": 1170,
                    "nodeType": "Block",
                    "src": "11146:210:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1160,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1153,
                              "src": "11232:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1159,
                            "name": "_assertConduitExists",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1443,
                            "src": "11211:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 1161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11211:29:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1162,
                        "nodeType": "ExpressionStatement",
                        "src": "11211:29:3"
                      },
                      {
                        "expression": {
                          "id": 1168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1163,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1157,
                            "src": "11317:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 1164,
                                "name": "_conduits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 755,
                                "src": "11325:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                  "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                }
                              },
                              "id": 1166,
                              "indexExpression": {
                                "id": 1165,
                                "name": "conduit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1153,
                                "src": "11335:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11325:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                              }
                            },
                            "id": 1167,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1549,
                            "src": "11325:24:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "11317:32:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1169,
                        "nodeType": "ExpressionStatement",
                        "src": "11317:32:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1151,
                    "nodeType": "StructuredDocumentation",
                    "src": "10800:224:3",
                    "text": " @notice Retrieve the current owner of a deployed conduit.\n @param conduit The conduit for which to retrieve the associated owner.\n @return owner The owner of the supplied conduit."
                  },
                  "functionSelector": "14afd79e",
                  "id": 1171,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nameLocation": "11038:7:3",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1155,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "11101:8:3"
                  },
                  "parameters": {
                    "id": 1154,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1153,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "11054:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1171,
                        "src": "11046:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1152,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11046:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11045:17:3"
                  },
                  "returnParameters": {
                    "id": 1158,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1157,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "11135:5:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1171,
                        "src": "11127:13:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1156,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11127:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11126:15:3"
                  },
                  "scope": 1444,
                  "src": "11029:327:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1669
                  ],
                  "body": {
                    "id": 1198,
                    "nodeType": "Block",
                    "src": "11796:258:3",
                    "statements": [
                      {
                        "expression": {
                          "id": 1185,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1180,
                            "name": "conduitKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1178,
                            "src": "11880:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 1181,
                                "name": "_conduits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 755,
                                "src": "11893:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                  "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                }
                              },
                              "id": 1183,
                              "indexExpression": {
                                "id": 1182,
                                "name": "conduit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1174,
                                "src": "11903:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "11893:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                              }
                            },
                            "id": 1184,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "key",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1547,
                            "src": "11893:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "11880:35:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1186,
                        "nodeType": "ExpressionStatement",
                        "src": "11880:35:3"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 1192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1187,
                            "name": "conduitKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1178,
                            "src": "11979:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 1190,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12001:1:3",
                                "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": 1189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11993:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 1188,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "11993:7:3",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1191,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11993:10:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "11979:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1197,
                        "nodeType": "IfStatement",
                        "src": "11975:73:3",
                        "trueBody": {
                          "id": 1196,
                          "nodeType": "Block",
                          "src": "12005:43:3",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 1193,
                                  "name": "NoConduit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1588,
                                  "src": "12026:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 1194,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12026:11:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1195,
                              "nodeType": "RevertStatement",
                              "src": "12019:18:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1172,
                    "nodeType": "StructuredDocumentation",
                    "src": "11362:308:3",
                    "text": " @notice Retrieve the conduit key for a deployed conduit via reverse\n         lookup.\n @param conduit The conduit for which to retrieve the associated conduit\n                key.\n @return conduitKey The conduit key used to deploy the supplied conduit."
                  },
                  "functionSelector": "93790f44",
                  "id": 1199,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getKey",
                  "nameLocation": "11684:6:3",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1176,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "11746:8:3"
                  },
                  "parameters": {
                    "id": 1175,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1174,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "11699:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1199,
                        "src": "11691:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1173,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11691:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11690:17:3"
                  },
                  "returnParameters": {
                    "id": 1179,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1178,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "11780:10:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1199,
                        "src": "11772:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1177,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11772:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11771:20:3"
                  },
                  "scope": 1444,
                  "src": "11675:379:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1679
                  ],
                  "body": {
                    "id": 1245,
                    "nodeType": "Block",
                    "src": "12656:646:3",
                    "statements": [
                      {
                        "expression": {
                          "id": 1235,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1210,
                            "name": "conduit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1206,
                            "src": "12743:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "hexValue": "30786666",
                                                    "id": 1222,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "12916:4:3",
                                                    "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": 1221,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "12909:6:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_bytes1_$",
                                                    "typeString": "type(bytes1)"
                                                  },
                                                  "typeName": {
                                                    "id": 1220,
                                                    "name": "bytes1",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12909:6:3",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 1223,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "12909:12:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                }
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "id": 1226,
                                                    "name": "this",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": -28,
                                                    "src": "12959:4:3",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_contract$_ConduitController_$1444",
                                                      "typeString": "contract ConduitController"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_contract$_ConduitController_$1444",
                                                      "typeString": "contract ConduitController"
                                                    }
                                                  ],
                                                  "id": 1225,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "12951:7:3",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                  },
                                                  "typeName": {
                                                    "id": 1224,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "12951:7:3",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 1227,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "12951:13:3",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              },
                                              {
                                                "id": 1228,
                                                "name": "conduitKey",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1202,
                                                "src": "12994:10:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              {
                                                "id": 1229,
                                                "name": "_CONDUIT_CREATION_CODE_HASH",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 757,
                                                "src": "13034:27:3",
                                                "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": 1218,
                                                "name": "abi",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -1,
                                                "src": "12863:3:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_abi",
                                                  "typeString": "abi"
                                                }
                                              },
                                              "id": 1219,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "encodePacked",
                                              "nodeType": "MemberAccess",
                                              "src": "12863:16:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                "typeString": "function () pure returns (bytes memory)"
                                              }
                                            },
                                            "id": 1230,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "12863:224:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 1217,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -8,
                                          "src": "12828:9:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 1231,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "12828:281:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 1216,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "12799:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 1215,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12799:7:3",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 1232,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12799:328:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 1214,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12774:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint160_$",
                                    "typeString": "type(uint160)"
                                  },
                                  "typeName": {
                                    "id": 1213,
                                    "name": "uint160",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12774:7:3",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 1233,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12774:367:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              ],
                              "id": 1212,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12753:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1211,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12753:7:3",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12753:398:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12743:408:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1236,
                        "nodeType": "ExpressionStatement",
                        "src": "12743:408:3"
                      },
                      {
                        "expression": {
                          "id": 1243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1237,
                            "name": "exists",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1208,
                            "src": "13238:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "components": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "id": 1241,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 1238,
                                    "name": "conduit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1206,
                                    "src": "13248:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 1239,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "codehash",
                                  "nodeType": "MemberAccess",
                                  "src": "13248:16:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "id": 1240,
                                  "name": "_CONDUIT_RUNTIME_CODE_HASH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 759,
                                  "src": "13268:26:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "src": "13248:46:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 1242,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "13247:48:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "13238:57:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1244,
                        "nodeType": "ExpressionStatement",
                        "src": "13238:57:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1200,
                    "nodeType": "StructuredDocumentation",
                    "src": "12060:453:3",
                    "text": " @notice Derive the conduit associated with a given conduit key and\n         determine whether that conduit exists (i.e. whether it has been\n         deployed).\n @param conduitKey The conduit key used to derive the conduit.\n @return conduit The derived address of the conduit.\n @return exists  A boolean indicating whether the derived conduit has been\n                 deployed or not."
                  },
                  "functionSelector": "6e9bfd9f",
                  "id": 1246,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getConduit",
                  "nameLocation": "12527:10:3",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1204,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "12596:8:3"
                  },
                  "parameters": {
                    "id": 1203,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1202,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "12546:10:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1246,
                        "src": "12538:18:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1201,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12538:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12537:20:3"
                  },
                  "returnParameters": {
                    "id": 1209,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1206,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "12630:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1246,
                        "src": "12622:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1205,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12622:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1208,
                        "mutability": "mutable",
                        "name": "exists",
                        "nameLocation": "12644:6:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1246,
                        "src": "12639:11:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1207,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "12639:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12621:30:3"
                  },
                  "scope": 1444,
                  "src": "12518:784:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1687
                  ],
                  "body": {
                    "id": 1266,
                    "nodeType": "Block",
                    "src": "13909:238:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1256,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1249,
                              "src": "13995:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1255,
                            "name": "_assertConduitExists",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1443,
                            "src": "13974:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 1257,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13974:29:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1258,
                        "nodeType": "ExpressionStatement",
                        "src": "13974:29:3"
                      },
                      {
                        "expression": {
                          "id": 1264,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1259,
                            "name": "potentialOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1253,
                            "src": "14090:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 1260,
                                "name": "_conduits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 755,
                                "src": "14107:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                  "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                }
                              },
                              "id": 1262,
                              "indexExpression": {
                                "id": 1261,
                                "name": "conduit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1249,
                                "src": "14117:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14107:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                              }
                            },
                            "id": 1263,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "potentialOwner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1551,
                            "src": "14107:33:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "14090:50:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1265,
                        "nodeType": "ExpressionStatement",
                        "src": "14090:50:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1247,
                    "nodeType": "StructuredDocumentation",
                    "src": "13308:460:3",
                    "text": " @notice Retrieve the potential owner, if any, for a given conduit. The\n         current owner may set a new potential owner via\n         `transferOwnership` and that owner may then accept ownership of\n         the conduit in question via `acceptOwnership`.\n @param conduit The conduit for which to retrieve the potential owner.\n @return potentialOwner The potential owner, if any, for the conduit."
                  },
                  "functionSelector": "906c87cc",
                  "id": 1267,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPotentialOwner",
                  "nameLocation": "13782:17:3",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1251,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "13855:8:3"
                  },
                  "parameters": {
                    "id": 1250,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1249,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "13808:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1267,
                        "src": "13800:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1248,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13800:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13799:17:3"
                  },
                  "returnParameters": {
                    "id": 1254,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1253,
                        "mutability": "mutable",
                        "name": "potentialOwner",
                        "nameLocation": "13889:14:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1267,
                        "src": "13881:22:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1252,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13881:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13880:24:3"
                  },
                  "scope": 1444,
                  "src": "13773:374:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1697
                  ],
                  "body": {
                    "id": 1293,
                    "nodeType": "Block",
                    "src": "14645:251:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1279,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1270,
                              "src": "14731:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1278,
                            "name": "_assertConduitExists",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1443,
                            "src": "14710:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 1280,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14710:29:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1281,
                        "nodeType": "ExpressionStatement",
                        "src": "14710:29:3"
                      },
                      {
                        "expression": {
                          "id": 1291,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1282,
                            "name": "isOpen",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1276,
                            "src": "14826:6:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1290,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "baseExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 1283,
                                    "name": "_conduits",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 755,
                                    "src": "14835:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                      "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                    }
                                  },
                                  "id": 1285,
                                  "indexExpression": {
                                    "id": 1284,
                                    "name": "conduit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1270,
                                    "src": "14845:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "14835:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                    "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                                  }
                                },
                                "id": 1286,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "channelIndexesPlusOne",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1558,
                                "src": "14835:40:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 1288,
                              "indexExpression": {
                                "id": 1287,
                                "name": "channel",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1272,
                                "src": "14876:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14835:49:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 1289,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14888:1:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "14835:54:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "14826:63:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1292,
                        "nodeType": "ExpressionStatement",
                        "src": "14826:63:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1268,
                    "nodeType": "StructuredDocumentation",
                    "src": "14153:346:3",
                    "text": " @notice Retrieve the status (either open or closed) of a given channel on\n         a conduit.\n @param conduit The conduit for which to retrieve the channel status.\n @param channel The channel for which to retrieve the status.\n @return isOpen The status of the channel on the given conduit."
                  },
                  "functionSelector": "33bc8572",
                  "id": 1294,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getChannelStatus",
                  "nameLocation": "14513:16:3",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1274,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "14602:8:3"
                  },
                  "parameters": {
                    "id": 1273,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1270,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "14538:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1294,
                        "src": "14530:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1269,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14530:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1272,
                        "mutability": "mutable",
                        "name": "channel",
                        "nameLocation": "14555:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1294,
                        "src": "14547:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1271,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14547:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14529:34:3"
                  },
                  "returnParameters": {
                    "id": 1277,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1276,
                        "mutability": "mutable",
                        "name": "isOpen",
                        "nameLocation": "14633:6:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1294,
                        "src": "14628:11:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1275,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "14628:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14627:13:3"
                  },
                  "scope": 1444,
                  "src": "14504:392:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1705
                  ],
                  "body": {
                    "id": 1315,
                    "nodeType": "Block",
                    "src": "15306:240:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1304,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1297,
                              "src": "15392:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1303,
                            "name": "_assertConduitExists",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1443,
                            "src": "15371:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 1305,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15371:29:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1306,
                        "nodeType": "ExpressionStatement",
                        "src": "15371:29:3"
                      },
                      {
                        "expression": {
                          "id": 1313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1307,
                            "name": "totalChannels",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1301,
                            "src": "15489:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "expression": {
                                "baseExpression": {
                                  "id": 1308,
                                  "name": "_conduits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 755,
                                  "src": "15505:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                    "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                  }
                                },
                                "id": 1310,
                                "indexExpression": {
                                  "id": 1309,
                                  "name": "conduit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1297,
                                  "src": "15515:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "15505:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                  "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                                }
                              },
                              "id": 1311,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "channels",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1554,
                              "src": "15505:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 1312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "15505:34:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "15489:50:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1314,
                        "nodeType": "ExpressionStatement",
                        "src": "15489:50:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1295,
                    "nodeType": "StructuredDocumentation",
                    "src": "14902:265:3",
                    "text": " @notice Retrieve the total number of open channels for a given conduit.\n @param conduit The conduit for which to retrieve the total channel count.\n @return totalChannels The total number of open channels for the conduit."
                  },
                  "functionSelector": "4e3f9580",
                  "id": 1316,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTotalChannels",
                  "nameLocation": "15181:16:3",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1299,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "15253:8:3"
                  },
                  "parameters": {
                    "id": 1298,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1297,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "15206:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1316,
                        "src": "15198:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1296,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15198:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15197:17:3"
                  },
                  "returnParameters": {
                    "id": 1302,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1301,
                        "mutability": "mutable",
                        "name": "totalChannels",
                        "nameLocation": "15287:13:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1316,
                        "src": "15279:21:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1300,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15279:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15278:23:3"
                  },
                  "scope": 1444,
                  "src": "15172:374:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1715
                  ],
                  "body": {
                    "id": 1357,
                    "nodeType": "Block",
                    "src": "16165:524:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1328,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1319,
                              "src": "16251:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1327,
                            "name": "_assertConduitExists",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1443,
                            "src": "16230:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 1329,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16230:29:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1330,
                        "nodeType": "ExpressionStatement",
                        "src": "16230:29:3"
                      },
                      {
                        "assignments": [
                          1332
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 1332,
                            "mutability": "mutable",
                            "name": "totalChannels",
                            "nameLocation": "16356:13:3",
                            "nodeType": "VariableDeclaration",
                            "scope": 1357,
                            "src": "16348:21:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 1331,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "16348:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 1338,
                        "initialValue": {
                          "expression": {
                            "expression": {
                              "baseExpression": {
                                "id": 1333,
                                "name": "_conduits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 755,
                                "src": "16372:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                  "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                }
                              },
                              "id": 1335,
                              "indexExpression": {
                                "id": 1334,
                                "name": "conduit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1319,
                                "src": "16382:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16372:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                              }
                            },
                            "id": 1336,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "channels",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1554,
                            "src": "16372:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "id": 1337,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "16372:34:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16348:58:3"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 1339,
                            "name": "channelIndex",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1321,
                            "src": "16480:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "id": 1340,
                            "name": "totalChannels",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1332,
                            "src": "16496:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "16480:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1347,
                        "nodeType": "IfStatement",
                        "src": "16476:93:3",
                        "trueBody": {
                          "id": 1346,
                          "nodeType": "Block",
                          "src": "16511:58:3",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 1343,
                                    "name": "conduit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1319,
                                    "src": "16550:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1342,
                                  "name": "ChannelOutOfRange",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1613,
                                  "src": "16532:17:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
                                    "typeString": "function (address) pure"
                                  }
                                },
                                "id": 1344,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16532:26:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1345,
                              "nodeType": "RevertStatement",
                              "src": "16525:33:3"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 1355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1348,
                            "name": "channel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1325,
                            "src": "16631:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "expression": {
                                "baseExpression": {
                                  "id": 1349,
                                  "name": "_conduits",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 755,
                                  "src": "16641:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                    "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                  }
                                },
                                "id": 1351,
                                "indexExpression": {
                                  "id": 1350,
                                  "name": "conduit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1319,
                                  "src": "16651:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16641:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                  "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                                }
                              },
                              "id": 1352,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "channels",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1554,
                              "src": "16641:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 1354,
                            "indexExpression": {
                              "id": 1353,
                              "name": "channelIndex",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1321,
                              "src": "16669:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "16641:41:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "16631:51:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1356,
                        "nodeType": "ExpressionStatement",
                        "src": "16631:51:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1317,
                    "nodeType": "StructuredDocumentation",
                    "src": "15552:464:3",
                    "text": " @notice Retrieve an open channel at a specific index for a given conduit.\n         Note that the index of a channel can change as a result of other\n         channels being closed on the conduit.\n @param conduit      The conduit for which to retrieve the open channel.\n @param channelIndex The index of the channel in question.\n @return channel The open channel, if any, at the specified channel index."
                  },
                  "functionSelector": "027cc764",
                  "id": 1358,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getChannel",
                  "nameLocation": "16030:10:3",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1323,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "16118:8:3"
                  },
                  "parameters": {
                    "id": 1322,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1319,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "16049:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1358,
                        "src": "16041:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1318,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16041:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1321,
                        "mutability": "mutable",
                        "name": "channelIndex",
                        "nameLocation": "16066:12:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1358,
                        "src": "16058:20:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1320,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "16058:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16040:39:3"
                  },
                  "returnParameters": {
                    "id": 1326,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1325,
                        "mutability": "mutable",
                        "name": "channel",
                        "nameLocation": "16152:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1358,
                        "src": "16144:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1324,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16144:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16143:17:3"
                  },
                  "scope": 1444,
                  "src": "16021:668:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1724
                  ],
                  "body": {
                    "id": 1379,
                    "nodeType": "Block",
                    "src": "17197:223:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1369,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1361,
                              "src": "17283:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1368,
                            "name": "_assertConduitExists",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1443,
                            "src": "17262:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 1370,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17262:29:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1371,
                        "nodeType": "ExpressionStatement",
                        "src": "17262:29:3"
                      },
                      {
                        "expression": {
                          "id": 1377,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1372,
                            "name": "channels",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1366,
                            "src": "17375:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                              "typeString": "address[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 1373,
                                "name": "_conduits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 755,
                                "src": "17386:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                  "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                }
                              },
                              "id": 1375,
                              "indexExpression": {
                                "id": 1374,
                                "name": "conduit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1361,
                                "src": "17396:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "17386:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                              }
                            },
                            "id": 1376,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "channels",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1554,
                            "src": "17386:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_storage",
                              "typeString": "address[] storage ref"
                            }
                          },
                          "src": "17375:38:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                            "typeString": "address[] memory"
                          }
                        },
                        "id": 1378,
                        "nodeType": "ExpressionStatement",
                        "src": "17375:38:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1359,
                    "nodeType": "StructuredDocumentation",
                    "src": "16695:364:3",
                    "text": " @notice Retrieve all open channels for a given conduit. Note that calling\n         this function for a conduit with many channels will revert with\n         an out-of-gas error.\n @param conduit The conduit for which to retrieve open channels.\n @return channels An array of open channels on the given conduit."
                  },
                  "functionSelector": "8b9e028b",
                  "id": 1380,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getChannels",
                  "nameLocation": "17073:11:3",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1363,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "17140:8:3"
                  },
                  "parameters": {
                    "id": 1362,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1361,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "17093:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1380,
                        "src": "17085:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1360,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17085:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17084:17:3"
                  },
                  "returnParameters": {
                    "id": 1367,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1366,
                        "mutability": "mutable",
                        "name": "channels",
                        "nameLocation": "17183:8:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1380,
                        "src": "17166:25:3",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1364,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "17166:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1365,
                          "nodeType": "ArrayTypeName",
                          "src": "17166:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17165:27:3"
                  },
                  "scope": 1444,
                  "src": "17064:356:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "baseFunctions": [
                    1732
                  ],
                  "body": {
                    "id": 1397,
                    "nodeType": "Block",
                    "src": "17665:247:3",
                    "statements": [
                      {
                        "expression": {
                          "id": 1391,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1389,
                            "name": "creationCodeHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1385,
                            "src": "17740:16:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1390,
                            "name": "_CONDUIT_CREATION_CODE_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 757,
                            "src": "17759:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "17740:46:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1392,
                        "nodeType": "ExpressionStatement",
                        "src": "17740:46:3"
                      },
                      {
                        "expression": {
                          "id": 1395,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 1393,
                            "name": "runtimeCodeHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1387,
                            "src": "17861:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 1394,
                            "name": "_CONDUIT_RUNTIME_CODE_HASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 759,
                            "src": "17879:26:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "17861:44:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 1396,
                        "nodeType": "ExpressionStatement",
                        "src": "17861:44:3"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1381,
                    "nodeType": "StructuredDocumentation",
                    "src": "17426:83:3",
                    "text": " @dev Retrieve the conduit creation code and runtime code hashes."
                  },
                  "functionSelector": "0a96ad39",
                  "id": 1398,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getConduitCodeHashes",
                  "nameLocation": "17523:20:3",
                  "nodeType": "FunctionDefinition",
                  "overrides": {
                    "id": 1383,
                    "nodeType": "OverrideSpecifier",
                    "overrides": [],
                    "src": "17584:8:3"
                  },
                  "parameters": {
                    "id": 1382,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17543:2:3"
                  },
                  "returnParameters": {
                    "id": 1388,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1385,
                        "mutability": "mutable",
                        "name": "creationCodeHash",
                        "nameLocation": "17618:16:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1398,
                        "src": "17610:24:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1384,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "17610:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1387,
                        "mutability": "mutable",
                        "name": "runtimeCodeHash",
                        "nameLocation": "17644:15:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1398,
                        "src": "17636:23:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1386,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "17636:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17609:51:3"
                  },
                  "scope": 1444,
                  "src": "17514:398:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 1421,
                    "nodeType": "Block",
                    "src": "18182:356:3",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 1405,
                              "name": "conduit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1401,
                              "src": "18268:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 1404,
                            "name": "_assertConduitExists",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1443,
                            "src": "18247:20:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$",
                              "typeString": "function (address) view"
                            }
                          },
                          "id": 1406,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18247:29:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 1407,
                        "nodeType": "ExpressionStatement",
                        "src": "18247:29:3"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 1414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 1408,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "18367:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1409,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "18367:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 1410,
                                "name": "_conduits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 755,
                                "src": "18381:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                  "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                }
                              },
                              "id": 1412,
                              "indexExpression": {
                                "id": 1411,
                                "name": "conduit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1401,
                                "src": "18391:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18381:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                              }
                            },
                            "id": 1413,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "owner",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1549,
                            "src": "18381:24:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "18367:38:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1420,
                        "nodeType": "IfStatement",
                        "src": "18363:169:3",
                        "trueBody": {
                          "id": 1419,
                          "nodeType": "Block",
                          "src": "18407:125:3",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 1416,
                                    "name": "conduit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1401,
                                    "src": "18513:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 1415,
                                  "name": "CallerIsNotOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1598,
                                  "src": "18496:16:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
                                    "typeString": "function (address) pure"
                                  }
                                },
                                "id": 1417,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18496:25:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1418,
                              "nodeType": "RevertStatement",
                              "src": "18489:32:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1399,
                    "nodeType": "StructuredDocumentation",
                    "src": "17918:191:3",
                    "text": " @dev Internal view function to revert if the caller is not the owner of a\n      given conduit.\n @param conduit The conduit for which to assert ownership."
                  },
                  "id": 1422,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_assertCallerIsConduitOwner",
                  "nameLocation": "18123:27:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1402,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1401,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "18159:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1422,
                        "src": "18151:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1400,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18151:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18150:17:3"
                  },
                  "returnParameters": {
                    "id": 1403,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18182:0:3"
                  },
                  "scope": 1444,
                  "src": "18114:424:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 1442,
                    "nodeType": "Block",
                    "src": "18773:228:3",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 1436,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "baseExpression": {
                                "id": 1428,
                                "name": "_conduits",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 755,
                                "src": "18861:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_ConduitProperties_$1559_storage_$",
                                  "typeString": "mapping(address => struct ConduitControllerInterface.ConduitProperties storage ref)"
                                }
                              },
                              "id": 1430,
                              "indexExpression": {
                                "id": 1429,
                                "name": "conduit",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1425,
                                "src": "18871:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18861:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ConduitProperties_$1559_storage",
                                "typeString": "struct ConduitControllerInterface.ConduitProperties storage ref"
                              }
                            },
                            "id": 1431,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "key",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 1547,
                            "src": "18861:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 1434,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18895:1:3",
                                "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": 1433,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "18887:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 1432,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "18887:7:3",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 1435,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18887:10:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "18861:36:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 1441,
                        "nodeType": "IfStatement",
                        "src": "18857:138:3",
                        "trueBody": {
                          "id": 1440,
                          "nodeType": "Block",
                          "src": "18899:96:3",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 1437,
                                  "name": "NoConduit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1588,
                                  "src": "18973:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 1438,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18973:11:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 1439,
                              "nodeType": "RevertStatement",
                              "src": "18966:18:3"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 1423,
                    "nodeType": "StructuredDocumentation",
                    "src": "18544:163:3",
                    "text": " @dev Internal view function to revert if a given conduit does not exist.\n @param conduit The conduit for which to assert existence."
                  },
                  "id": 1443,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_assertConduitExists",
                  "nameLocation": "18721:20:3",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1426,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1425,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "18750:7:3",
                        "nodeType": "VariableDeclaration",
                        "scope": 1443,
                        "src": "18742:15:3",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1424,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18742:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18741:17:3"
                  },
                  "returnParameters": {
                    "id": 1427,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "18773:0:3"
                  },
                  "scope": 1444,
                  "src": "18712:289:3",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 1445,
              "src": "556:18447:3",
              "usedErrors": [
                1585,
                1588,
                1593,
                1598,
                1603,
                1608,
                1613
              ]
            }
          ],
          "src": "32:18972:3"
        },
        "id": 3
      },
      "seaport/contracts/conduit/lib/ConduitEnums.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/conduit/lib/ConduitEnums.sol",
          "exportedSymbols": {
            "ConduitItemType": [
              1451
            ]
          },
          "id": 1452,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1446,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:4"
            },
            {
              "canonicalName": "ConduitItemType",
              "id": 1451,
              "members": [
                {
                  "id": 1447,
                  "name": "NATIVE",
                  "nameLocation": "85:6:4",
                  "nodeType": "EnumValue",
                  "src": "85:6:4"
                },
                {
                  "id": 1448,
                  "name": "ERC20",
                  "nameLocation": "107:5:4",
                  "nodeType": "EnumValue",
                  "src": "107:5:4"
                },
                {
                  "id": 1449,
                  "name": "ERC721",
                  "nameLocation": "118:6:4",
                  "nodeType": "EnumValue",
                  "src": "118:6:4"
                },
                {
                  "id": 1450,
                  "name": "ERC1155",
                  "nameLocation": "130:7:4",
                  "nodeType": "EnumValue",
                  "src": "130:7:4"
                }
              ],
              "name": "ConduitItemType",
              "nameLocation": "63:15:4",
              "nodeType": "EnumDefinition",
              "src": "58:81:4"
            }
          ],
          "src": "32:108:4"
        },
        "id": 4
      },
      "seaport/contracts/conduit/lib/ConduitStructs.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/conduit/lib/ConduitStructs.sol",
          "exportedSymbols": {
            "ConduitBatch1155Transfer": [
              1482
            ],
            "ConduitItemType": [
              1451
            ],
            "ConduitTransfer": [
              1469
            ]
          },
          "id": 1483,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1453,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:5"
            },
            {
              "absolutePath": "seaport/contracts/conduit/lib/ConduitEnums.sol",
              "file": "./ConduitEnums.sol",
              "id": 1455,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1483,
              "sourceUnit": 1452,
              "src": "58:53:5",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1454,
                    "name": "ConduitItemType",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1451,
                    "src": "67:15:5",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "canonicalName": "ConduitTransfer",
              "id": 1469,
              "members": [
                {
                  "constant": false,
                  "id": 1458,
                  "mutability": "mutable",
                  "name": "itemType",
                  "nameLocation": "158:8:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1469,
                  "src": "142:24:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ConduitItemType_$1451",
                    "typeString": "enum ConduitItemType"
                  },
                  "typeName": {
                    "id": 1457,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 1456,
                      "name": "ConduitItemType",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1451,
                      "src": "142:15:5"
                    },
                    "referencedDeclaration": 1451,
                    "src": "142:15:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ConduitItemType_$1451",
                      "typeString": "enum ConduitItemType"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1460,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "180:5:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1469,
                  "src": "172:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1459,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "172:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1462,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "199:4:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1469,
                  "src": "191:12:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1461,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "191:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1464,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "217:2:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1469,
                  "src": "209:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1463,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "209:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1466,
                  "mutability": "mutable",
                  "name": "identifier",
                  "nameLocation": "233:10:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1469,
                  "src": "225:18:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1465,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "225:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1468,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "257:6:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1469,
                  "src": "249:14:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1467,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "249:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "ConduitTransfer",
              "nameLocation": "120:15:5",
              "nodeType": "StructDefinition",
              "scope": 1483,
              "src": "113:153:5",
              "visibility": "public"
            },
            {
              "canonicalName": "ConduitBatch1155Transfer",
              "id": 1482,
              "members": [
                {
                  "constant": false,
                  "id": 1471,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "314:5:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1482,
                  "src": "306:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1470,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "306:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1473,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "333:4:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1482,
                  "src": "325:12:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1472,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "325:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1475,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "351:2:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1482,
                  "src": "343:10:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1474,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "343:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1478,
                  "mutability": "mutable",
                  "name": "ids",
                  "nameLocation": "369:3:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1482,
                  "src": "359:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1476,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "359:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1477,
                    "nodeType": "ArrayTypeName",
                    "src": "359:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1481,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nameLocation": "388:7:5",
                  "nodeType": "VariableDeclaration",
                  "scope": 1482,
                  "src": "378:17:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 1479,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "378:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 1480,
                    "nodeType": "ArrayTypeName",
                    "src": "378:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "ConduitBatch1155Transfer",
              "nameLocation": "275:24:5",
              "nodeType": "StructDefinition",
              "scope": 1483,
              "src": "268:130:5",
              "visibility": "public"
            }
          ],
          "src": "32:367:5"
        },
        "id": 5
      },
      "seaport/contracts/interfaces/AbridgedTokenInterfaces.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/interfaces/AbridgedTokenInterfaces.sol",
          "exportedSymbols": {
            "ERC1155Interface": [
              1535
            ],
            "ERC20Interface": [
              1496
            ],
            "ERC721Interface": [
              1506
            ]
          },
          "id": 1536,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1484,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:6"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ERC20Interface",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 1496,
              "linearizedBaseContracts": [
                1496
              ],
              "name": "ERC20Interface",
              "nameLocation": "68:14:6",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "23b872dd",
                  "id": 1495,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "98:12:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1486,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1495,
                        "src": "120:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1485,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "120:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1488,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1495,
                        "src": "137:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1487,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "137:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1490,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1495,
                        "src": "154:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1489,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "154:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "110:57:6"
                  },
                  "returnParameters": {
                    "id": 1494,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1493,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1495,
                        "src": "186:4:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1492,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "186:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "185:6:6"
                  },
                  "scope": 1496,
                  "src": "89:103:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1536,
              "src": "58:136:6",
              "usedErrors": []
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ERC721Interface",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 1506,
              "linearizedBaseContracts": [
                1506
              ],
              "name": "ERC721Interface",
              "nameLocation": "206:15:6",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "23b872dd",
                  "id": 1505,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferFrom",
                  "nameLocation": "237:12:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1503,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1498,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1505,
                        "src": "259:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1497,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "259:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1500,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1505,
                        "src": "276:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1499,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "276:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1502,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 1505,
                        "src": "293:7:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1501,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "293:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "249:57:6"
                  },
                  "returnParameters": {
                    "id": 1504,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "315:0:6"
                  },
                  "scope": 1506,
                  "src": "228:88:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1536,
              "src": "196:122:6",
              "usedErrors": []
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ERC1155Interface",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 1535,
              "linearizedBaseContracts": [
                1535
              ],
              "name": "ERC1155Interface",
              "nameLocation": "330:16:6",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "f242432a",
                  "id": 1519,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeTransferFrom",
                  "nameLocation": "362:16:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1517,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1508,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "396:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1519,
                        "src": "388:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1507,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "388:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1510,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "418:2:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1519,
                        "src": "410:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1509,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "410:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1512,
                        "mutability": "mutable",
                        "name": "id",
                        "nameLocation": "438:2:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1519,
                        "src": "430:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1511,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "430:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1514,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "458:6:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1519,
                        "src": "450:14:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1513,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "450:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1516,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "489:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1519,
                        "src": "474:19:6",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1515,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "474:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "378:121:6"
                  },
                  "returnParameters": {
                    "id": 1518,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "508:0:6"
                  },
                  "scope": 1535,
                  "src": "353:156:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "2eb2c2d6",
                  "id": 1534,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "safeBatchTransferFrom",
                  "nameLocation": "524:21:6",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1532,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1521,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "563:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1534,
                        "src": "555:12:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1520,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "555:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1523,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "585:2:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1534,
                        "src": "577:10:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1522,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "577:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1526,
                        "mutability": "mutable",
                        "name": "ids",
                        "nameLocation": "616:3:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1534,
                        "src": "597:22:6",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1524,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "597:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1525,
                          "nodeType": "ArrayTypeName",
                          "src": "597:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1529,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "648:7:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1534,
                        "src": "629:26:6",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1527,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "629:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1528,
                          "nodeType": "ArrayTypeName",
                          "src": "629:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1531,
                        "mutability": "mutable",
                        "name": "data",
                        "nameLocation": "680:4:6",
                        "nodeType": "VariableDeclaration",
                        "scope": 1534,
                        "src": "665:19:6",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 1530,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "665:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "545:145:6"
                  },
                  "returnParameters": {
                    "id": 1533,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "699:0:6"
                  },
                  "scope": 1535,
                  "src": "515:185:6",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1536,
              "src": "320:382:6",
              "usedErrors": []
            }
          ],
          "src": "32:671:6"
        },
        "id": 6
      },
      "seaport/contracts/interfaces/AmountDerivationErrors.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/interfaces/AmountDerivationErrors.sol",
          "exportedSymbols": {
            "AmountDerivationErrors": [
              1542
            ]
          },
          "id": 1543,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1537,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:7"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "AmountDerivationErrors",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1538,
                "nodeType": "StructuredDocumentation",
                "src": "58:136:7",
                "text": " @title AmountDerivationErrors\n @author 0age\n @notice AmountDerivationErrors contains errors related to amount derivation."
              },
              "fullyImplemented": true,
              "id": 1542,
              "linearizedBaseContracts": [
                1542
              ],
              "name": "AmountDerivationErrors",
              "nameLocation": "205:22:7",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1539,
                    "nodeType": "StructuredDocumentation",
                    "src": "234:166:7",
                    "text": " @dev Revert with an error when attempting to apply a fraction as part of\n      a partial fill that does not divide the target amount cleanly."
                  },
                  "errorSelector": "c63cf089",
                  "id": 1541,
                  "name": "InexactFraction",
                  "nameLocation": "411:15:7",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1540,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "426:2:7"
                  },
                  "src": "405:24:7"
                }
              ],
              "scope": 1543,
              "src": "195:236:7",
              "usedErrors": [
                1541
              ]
            }
          ],
          "src": "32:400:7"
        },
        "id": 7
      },
      "seaport/contracts/interfaces/ConduitControllerInterface.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/interfaces/ConduitControllerInterface.sol",
          "exportedSymbols": {
            "ConduitControllerInterface": [
              1733
            ]
          },
          "id": 1734,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1544,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:8"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ConduitControllerInterface",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1545,
                "nodeType": "StructuredDocumentation",
                "src": "58:208:8",
                "text": " @title ConduitControllerInterface\n @author 0age\n @notice ConduitControllerInterface contains all external function interfaces,\n         structs, events, and errors for the conduit controller."
              },
              "fullyImplemented": false,
              "id": 1733,
              "linearizedBaseContracts": [
                1733
              ],
              "name": "ConduitControllerInterface",
              "nameLocation": "277:26:8",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "canonicalName": "ConduitControllerInterface.ConduitProperties",
                  "id": 1559,
                  "members": [
                    {
                      "constant": false,
                      "id": 1547,
                      "mutability": "mutable",
                      "name": "key",
                      "nameLocation": "497:3:8",
                      "nodeType": "VariableDeclaration",
                      "scope": 1559,
                      "src": "489:11:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1546,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "489:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1549,
                      "mutability": "mutable",
                      "name": "owner",
                      "nameLocation": "518:5:8",
                      "nodeType": "VariableDeclaration",
                      "scope": 1559,
                      "src": "510:13:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1548,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "510:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1551,
                      "mutability": "mutable",
                      "name": "potentialOwner",
                      "nameLocation": "541:14:8",
                      "nodeType": "VariableDeclaration",
                      "scope": 1559,
                      "src": "533:22:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1550,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "533:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1554,
                      "mutability": "mutable",
                      "name": "channels",
                      "nameLocation": "575:8:8",
                      "nodeType": "VariableDeclaration",
                      "scope": 1559,
                      "src": "565:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 1552,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "565:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 1553,
                        "nodeType": "ArrayTypeName",
                        "src": "565:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1558,
                      "mutability": "mutable",
                      "name": "channelIndexesPlusOne",
                      "nameLocation": "621:21:8",
                      "nodeType": "VariableDeclaration",
                      "scope": 1559,
                      "src": "593:49:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      },
                      "typeName": {
                        "id": 1557,
                        "keyType": {
                          "id": 1555,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "601:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Mapping",
                        "src": "593:27:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        },
                        "valueType": {
                          "id": 1556,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "612:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "name": "ConduitProperties",
                  "nameLocation": "461:17:8",
                  "nodeType": "StructDefinition",
                  "scope": 1733,
                  "src": "454:195:8",
                  "visibility": "public"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1560,
                    "nodeType": "StructuredDocumentation",
                    "src": "655:204:8",
                    "text": " @dev Emit an event whenever a new conduit is created.\n @param conduit    The newly created conduit.\n @param conduitKey The conduit key used to create the new conduit."
                  },
                  "eventSelector": "4397af6128d529b8ae0442f99db1296d5136062597a15bbc61c1b2a6431a7d15",
                  "id": 1566,
                  "name": "NewConduit",
                  "nameLocation": "870:10:8",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1565,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1562,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "889:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1566,
                        "src": "881:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1561,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "881:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1564,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "906:10:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1566,
                        "src": "898:18:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1563,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "898:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "880:37:8"
                  },
                  "src": "864:54:8"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1567,
                    "nodeType": "StructuredDocumentation",
                    "src": "924:318:8",
                    "text": " @dev Emit an event whenever conduit ownership is transferred.\n @param conduit       The conduit for which ownership has been\n                      transferred.\n @param previousOwner The previous owner of the conduit.\n @param newOwner      The new owner of the conduit."
                  },
                  "eventSelector": "c8894f26f396ce8c004245c8b7cd1b92103a6e4302fcbab883987149ac01b7ec",
                  "id": 1575,
                  "name": "OwnershipTransferred",
                  "nameLocation": "1253:20:8",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1574,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1569,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "1299:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1575,
                        "src": "1283:23:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1568,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1283:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1571,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "previousOwner",
                        "nameLocation": "1332:13:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1575,
                        "src": "1316:29:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1570,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1316:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1573,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newOwner",
                        "nameLocation": "1371:8:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1575,
                        "src": "1355:24:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1572,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1355:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1273:112:8"
                  },
                  "src": "1247:139:8"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1576,
                    "nodeType": "StructuredDocumentation",
                    "src": "1392:323:8",
                    "text": " @dev Emit an event whenever a conduit owner registers a new potential\n      owner for that conduit.\n @param conduit           The conduit for which ownership may now be\n                          transferred.\n @param newPotentialOwner The new potential owner of the conduit."
                  },
                  "eventSelector": "d4116aaf34f80123d0229f02f46f776b386a377dbb3404be10fdf4e81ba9cdb6",
                  "id": 1582,
                  "name": "PotentialOwnerUpdated",
                  "nameLocation": "1726:21:8",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1581,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1578,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "1773:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1582,
                        "src": "1757:23:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1577,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1757:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1580,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "newPotentialOwner",
                        "nameLocation": "1806:17:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1582,
                        "src": "1790:33:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1579,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1790:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1747:82:8"
                  },
                  "src": "1720:110:8"
                },
                {
                  "documentation": {
                    "id": 1583,
                    "nodeType": "StructuredDocumentation",
                    "src": "1836:207:8",
                    "text": " @dev Revert with an error when attempting to create a new conduit using a\n      conduit key where the last twenty bytes of the key do not match the\n      address of the caller."
                  },
                  "errorSelector": "cb6e5344",
                  "id": 1585,
                  "name": "InvalidCreator",
                  "nameLocation": "2054:14:8",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1584,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2068:2:8"
                  },
                  "src": "2048:23:8"
                },
                {
                  "documentation": {
                    "id": 1586,
                    "nodeType": "StructuredDocumentation",
                    "src": "2077:124:8",
                    "text": " @dev Revert with an error when attempting to interact with a conduit that\n      does not yet exist."
                  },
                  "errorSelector": "4ca82090",
                  "id": 1588,
                  "name": "NoConduit",
                  "nameLocation": "2212:9:8",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1587,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2221:2:8"
                  },
                  "src": "2206:18:8"
                },
                {
                  "documentation": {
                    "id": 1589,
                    "nodeType": "StructuredDocumentation",
                    "src": "2230:113:8",
                    "text": " @dev Revert with an error when attempting to create a conduit that\n      already exists."
                  },
                  "errorSelector": "6328ccb2",
                  "id": 1593,
                  "name": "ConduitAlreadyExists",
                  "nameLocation": "2354:20:8",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1592,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1591,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "2383:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1593,
                        "src": "2375:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1590,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2375:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2374:17:8"
                  },
                  "src": "2348:44:8"
                },
                {
                  "documentation": {
                    "id": 1594,
                    "nodeType": "StructuredDocumentation",
                    "src": "2398:199:8",
                    "text": " @dev Revert with an error when attempting to update channels or transfer\n      ownership of a conduit when the caller is not the owner of the\n      conduit in question."
                  },
                  "errorSelector": "d4ed9a17",
                  "id": 1598,
                  "name": "CallerIsNotOwner",
                  "nameLocation": "2608:16:8",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1597,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1596,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "2633:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1598,
                        "src": "2625:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1595,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2625:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2624:17:8"
                  },
                  "src": "2602:40:8"
                },
                {
                  "documentation": {
                    "id": 1599,
                    "nodeType": "StructuredDocumentation",
                    "src": "2648:138:8",
                    "text": " @dev Revert with an error when attempting to register a new potential\n      owner and supplying the null address."
                  },
                  "errorSelector": "a388d263",
                  "id": 1603,
                  "name": "NewPotentialOwnerIsZeroAddress",
                  "nameLocation": "2797:30:8",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1602,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1601,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "2836:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1603,
                        "src": "2828:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1600,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2828:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2827:17:8"
                  },
                  "src": "2791:54:8"
                },
                {
                  "documentation": {
                    "id": 1604,
                    "nodeType": "StructuredDocumentation",
                    "src": "2851:199:8",
                    "text": " @dev Revert with an error when attempting to claim ownership of a conduit\n      with a caller that is not the current potential owner for the\n      conduit in question."
                  },
                  "errorSelector": "88c3a115",
                  "id": 1608,
                  "name": "CallerIsNotNewPotentialOwner",
                  "nameLocation": "3061:28:8",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1607,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1606,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "3098:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1608,
                        "src": "3090:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1605,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3090:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3089:17:8"
                  },
                  "src": "3055:52:8"
                },
                {
                  "documentation": {
                    "id": 1609,
                    "nodeType": "StructuredDocumentation",
                    "src": "3113:131:8",
                    "text": " @dev Revert with an error when attempting to retrieve a channel using an\n      index that is out of range."
                  },
                  "errorSelector": "6ceb340b",
                  "id": 1613,
                  "name": "ChannelOutOfRange",
                  "nameLocation": "3255:17:8",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1612,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1611,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "3281:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1613,
                        "src": "3273:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1610,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3273:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3272:17:8"
                  },
                  "src": "3249:41:8"
                },
                {
                  "documentation": {
                    "id": 1614,
                    "nodeType": "StructuredDocumentation",
                    "src": "3296:746:8",
                    "text": " @notice Deploy a new conduit using a supplied conduit key and assigning\n         an initial owner for the deployed conduit. Note that the last\n         twenty bytes of the supplied conduit key must match the caller\n         and that a new conduit cannot be created if one has already been\n         deployed using the same conduit key.\n @param conduitKey   The conduit key used to deploy the conduit. Note that\n                     the last twenty bytes of the conduit key must match\n                     the caller of this contract.\n @param initialOwner The initial owner to set for the new conduit.\n @return conduit The address of the newly deployed conduit."
                  },
                  "functionSelector": "794593bc",
                  "id": 1623,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "createConduit",
                  "nameLocation": "4056:13:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1619,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1616,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "4078:10:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1623,
                        "src": "4070:18:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1615,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4070:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1618,
                        "mutability": "mutable",
                        "name": "initialOwner",
                        "nameLocation": "4098:12:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1623,
                        "src": "4090:20:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1617,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4090:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4069:42:8"
                  },
                  "returnParameters": {
                    "id": 1622,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1621,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "4154:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1623,
                        "src": "4146:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1620,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4146:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4145:17:8"
                  },
                  "scope": 1733,
                  "src": "4047:116:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1624,
                    "nodeType": "StructuredDocumentation",
                    "src": "4169:716:8",
                    "text": " @notice Open or close a channel on a given conduit, thereby allowing the\n         specified account to execute transfers against that conduit.\n         Extreme care must be taken when updating channels, as malicious\n         or vulnerable channels can transfer any ERC20, ERC721 and ERC1155\n         tokens where the token holder has granted the conduit approval.\n         Only the owner of the conduit in question may call this function.\n @param conduit The conduit for which to open or close the channel.\n @param channel The channel to open or close on the conduit.\n @param isOpen  A boolean indicating whether to open or close the channel."
                  },
                  "functionSelector": "13ad9cab",
                  "id": 1633,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updateChannel",
                  "nameLocation": "4899:13:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1631,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1626,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "4930:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1633,
                        "src": "4922:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1625,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4922:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1628,
                        "mutability": "mutable",
                        "name": "channel",
                        "nameLocation": "4955:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1633,
                        "src": "4947:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1627,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4947:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1630,
                        "mutability": "mutable",
                        "name": "isOpen",
                        "nameLocation": "4977:6:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1633,
                        "src": "4972:11:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1629,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4972:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4912:77:8"
                  },
                  "returnParameters": {
                    "id": 1632,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4998:0:8"
                  },
                  "scope": 1733,
                  "src": "4890:109:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1634,
                    "nodeType": "StructuredDocumentation",
                    "src": "5005:410:8",
                    "text": " @notice Initiate conduit ownership transfer by assigning a new potential\n         owner for the given conduit. Once set, the new potential owner\n         may call `acceptOwnership` to claim ownership of the conduit.\n         Only the owner of the conduit in question may call this function.\n @param conduit The conduit for which to initiate ownership transfer."
                  },
                  "functionSelector": "6d435421",
                  "id": 1641,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "transferOwnership",
                  "nameLocation": "5429:17:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1639,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1636,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "5455:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1641,
                        "src": "5447:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1635,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5447:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1638,
                        "mutability": "mutable",
                        "name": "newPotentialOwner",
                        "nameLocation": "5472:17:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1641,
                        "src": "5464:25:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1637,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5464:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5446:44:8"
                  },
                  "returnParameters": {
                    "id": 1640,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5507:0:8"
                  },
                  "scope": 1733,
                  "src": "5420:88:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1642,
                    "nodeType": "StructuredDocumentation",
                    "src": "5514:253:8",
                    "text": " @notice Clear the currently set potential owner, if any, from a conduit.\n         Only the owner of the conduit in question may call this function.\n @param conduit The conduit for which to cancel ownership transfer."
                  },
                  "functionSelector": "7b37e561",
                  "id": 1647,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "cancelOwnershipTransfer",
                  "nameLocation": "5781:23:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1645,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1644,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "5813:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1647,
                        "src": "5805:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1643,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5805:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5804:17:8"
                  },
                  "returnParameters": {
                    "id": 1646,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5830:0:8"
                  },
                  "scope": 1733,
                  "src": "5772:59:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1648,
                    "nodeType": "StructuredDocumentation",
                    "src": "5837:264:8",
                    "text": " @notice Accept ownership of a supplied conduit. Only accounts that the\n         current owner has set as the new potential owner may call this\n         function.\n @param conduit The conduit for which to accept ownership."
                  },
                  "functionSelector": "51710e45",
                  "id": 1653,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "acceptOwnership",
                  "nameLocation": "6115:15:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1651,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1650,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "6139:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1653,
                        "src": "6131:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1649,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6131:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6130:17:8"
                  },
                  "returnParameters": {
                    "id": 1652,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6156:0:8"
                  },
                  "scope": 1733,
                  "src": "6106:51:8",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1654,
                    "nodeType": "StructuredDocumentation",
                    "src": "6163:224:8",
                    "text": " @notice Retrieve the current owner of a deployed conduit.\n @param conduit The conduit for which to retrieve the associated owner.\n @return owner The owner of the supplied conduit."
                  },
                  "functionSelector": "14afd79e",
                  "id": 1661,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "ownerOf",
                  "nameLocation": "6401:7:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1657,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1656,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "6417:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1661,
                        "src": "6409:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1655,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6409:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6408:17:8"
                  },
                  "returnParameters": {
                    "id": 1660,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1659,
                        "mutability": "mutable",
                        "name": "owner",
                        "nameLocation": "6457:5:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1661,
                        "src": "6449:13:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1658,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6449:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6448:15:8"
                  },
                  "scope": 1733,
                  "src": "6392:72:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1662,
                    "nodeType": "StructuredDocumentation",
                    "src": "6470:308:8",
                    "text": " @notice Retrieve the conduit key for a deployed conduit via reverse\n         lookup.\n @param conduit The conduit for which to retrieve the associated conduit\n                key.\n @return conduitKey The conduit key used to deploy the supplied conduit."
                  },
                  "functionSelector": "93790f44",
                  "id": 1669,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getKey",
                  "nameLocation": "6792:6:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1665,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1664,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "6807:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1669,
                        "src": "6799:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1663,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6799:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6798:17:8"
                  },
                  "returnParameters": {
                    "id": 1668,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1667,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "6847:10:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1669,
                        "src": "6839:18:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1666,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6839:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6838:20:8"
                  },
                  "scope": 1733,
                  "src": "6783:76:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1670,
                    "nodeType": "StructuredDocumentation",
                    "src": "6865:453:8",
                    "text": " @notice Derive the conduit associated with a given conduit key and\n         determine whether that conduit exists (i.e. whether it has been\n         deployed).\n @param conduitKey The conduit key used to derive the conduit.\n @return conduit The derived address of the conduit.\n @return exists  A boolean indicating whether the derived conduit has been\n                 deployed or not."
                  },
                  "functionSelector": "6e9bfd9f",
                  "id": 1679,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getConduit",
                  "nameLocation": "7332:10:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1673,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1672,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "7351:10:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1679,
                        "src": "7343:18:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1671,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "7343:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7342:20:8"
                  },
                  "returnParameters": {
                    "id": 1678,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1675,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "7418:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1679,
                        "src": "7410:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1674,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7410:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1677,
                        "mutability": "mutable",
                        "name": "exists",
                        "nameLocation": "7432:6:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1679,
                        "src": "7427:11:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1676,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "7427:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7409:30:8"
                  },
                  "scope": 1733,
                  "src": "7323:117:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1680,
                    "nodeType": "StructuredDocumentation",
                    "src": "7446:460:8",
                    "text": " @notice Retrieve the potential owner, if any, for a given conduit. The\n         current owner may set a new potential owner via\n         `transferOwnership` and that owner may then accept ownership of\n         the conduit in question via `acceptOwnership`.\n @param conduit The conduit for which to retrieve the potential owner.\n @return potentialOwner The potential owner, if any, for the conduit."
                  },
                  "functionSelector": "906c87cc",
                  "id": 1687,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getPotentialOwner",
                  "nameLocation": "7920:17:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1683,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1682,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "7946:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1687,
                        "src": "7938:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1681,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "7938:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "7937:17:8"
                  },
                  "returnParameters": {
                    "id": 1686,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1685,
                        "mutability": "mutable",
                        "name": "potentialOwner",
                        "nameLocation": "8010:14:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1687,
                        "src": "8002:22:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1684,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8002:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8001:24:8"
                  },
                  "scope": 1733,
                  "src": "7911:115:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1688,
                    "nodeType": "StructuredDocumentation",
                    "src": "8032:346:8",
                    "text": " @notice Retrieve the status (either open or closed) of a given channel on\n         a conduit.\n @param conduit The conduit for which to retrieve the channel status.\n @param channel The channel for which to retrieve the status.\n @return isOpen The status of the channel on the given conduit."
                  },
                  "functionSelector": "33bc8572",
                  "id": 1697,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getChannelStatus",
                  "nameLocation": "8392:16:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1693,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1690,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "8417:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1697,
                        "src": "8409:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1689,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8409:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1692,
                        "mutability": "mutable",
                        "name": "channel",
                        "nameLocation": "8434:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1697,
                        "src": "8426:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1691,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8426:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8408:34:8"
                  },
                  "returnParameters": {
                    "id": 1696,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1695,
                        "mutability": "mutable",
                        "name": "isOpen",
                        "nameLocation": "8495:6:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1697,
                        "src": "8490:11:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1694,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8490:4:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8489:13:8"
                  },
                  "scope": 1733,
                  "src": "8383:120:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1698,
                    "nodeType": "StructuredDocumentation",
                    "src": "8509:265:8",
                    "text": " @notice Retrieve the total number of open channels for a given conduit.\n @param conduit The conduit for which to retrieve the total channel count.\n @return totalChannels The total number of open channels for the conduit."
                  },
                  "functionSelector": "4e3f9580",
                  "id": 1705,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTotalChannels",
                  "nameLocation": "8788:16:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1701,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1700,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "8813:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1705,
                        "src": "8805:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1699,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8805:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8804:17:8"
                  },
                  "returnParameters": {
                    "id": 1704,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1703,
                        "mutability": "mutable",
                        "name": "totalChannels",
                        "nameLocation": "8877:13:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1705,
                        "src": "8869:21:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1702,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8869:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8868:23:8"
                  },
                  "scope": 1733,
                  "src": "8779:113:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1706,
                    "nodeType": "StructuredDocumentation",
                    "src": "8898:464:8",
                    "text": " @notice Retrieve an open channel at a specific index for a given conduit.\n         Note that the index of a channel can change as a result of other\n         channels being closed on the conduit.\n @param conduit      The conduit for which to retrieve the open channel.\n @param channelIndex The index of the channel in question.\n @return channel The open channel, if any, at the specified channel index."
                  },
                  "functionSelector": "027cc764",
                  "id": 1715,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getChannel",
                  "nameLocation": "9376:10:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1711,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1708,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "9395:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1715,
                        "src": "9387:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1707,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9387:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1710,
                        "mutability": "mutable",
                        "name": "channelIndex",
                        "nameLocation": "9412:12:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1715,
                        "src": "9404:20:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1709,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9404:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9386:39:8"
                  },
                  "returnParameters": {
                    "id": 1714,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1713,
                        "mutability": "mutable",
                        "name": "channel",
                        "nameLocation": "9481:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1715,
                        "src": "9473:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1712,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9473:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9472:17:8"
                  },
                  "scope": 1733,
                  "src": "9367:123:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1716,
                    "nodeType": "StructuredDocumentation",
                    "src": "9496:364:8",
                    "text": " @notice Retrieve all open channels for a given conduit. Note that calling\n         this function for a conduit with many channels will revert with\n         an out-of-gas error.\n @param conduit The conduit for which to retrieve open channels.\n @return channels An array of open channels on the given conduit."
                  },
                  "functionSelector": "8b9e028b",
                  "id": 1724,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getChannels",
                  "nameLocation": "9874:11:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1719,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1718,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "9894:7:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1724,
                        "src": "9886:15:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1717,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9886:7:8",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9885:17:8"
                  },
                  "returnParameters": {
                    "id": 1723,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1722,
                        "mutability": "mutable",
                        "name": "channels",
                        "nameLocation": "9967:8:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1724,
                        "src": "9950:25:8",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1720,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9950:7:8",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1721,
                          "nodeType": "ArrayTypeName",
                          "src": "9950:9:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                            "typeString": "address[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9949:27:8"
                  },
                  "scope": 1733,
                  "src": "9865:112:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1725,
                    "nodeType": "StructuredDocumentation",
                    "src": "9983:83:8",
                    "text": " @dev Retrieve the conduit creation code and runtime code hashes."
                  },
                  "functionSelector": "0a96ad39",
                  "id": 1732,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getConduitCodeHashes",
                  "nameLocation": "10080:20:8",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1726,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10100:2:8"
                  },
                  "returnParameters": {
                    "id": 1731,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1728,
                        "mutability": "mutable",
                        "name": "creationCodeHash",
                        "nameLocation": "10158:16:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1732,
                        "src": "10150:24:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1727,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10150:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1730,
                        "mutability": "mutable",
                        "name": "runtimeCodeHash",
                        "nameLocation": "10184:15:8",
                        "nodeType": "VariableDeclaration",
                        "scope": 1732,
                        "src": "10176:23:8",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1729,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10176:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10149:51:8"
                  },
                  "scope": 1733,
                  "src": "10071:130:8",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1734,
              "src": "267:9936:8",
              "usedErrors": [
                1585,
                1588,
                1593,
                1598,
                1603,
                1608,
                1613
              ]
            }
          ],
          "src": "32:10172:8"
        },
        "id": 8
      },
      "seaport/contracts/interfaces/ConduitInterface.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/interfaces/ConduitInterface.sol",
          "exportedSymbols": {
            "ConduitBatch1155Transfer": [
              1482
            ],
            "ConduitInterface": [
              1801
            ],
            "ConduitTransfer": [
              1469
            ]
          },
          "id": 1802,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1735,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:9"
            },
            {
              "absolutePath": "seaport/contracts/conduit/lib/ConduitStructs.sol",
              "file": "../conduit/lib/ConduitStructs.sol",
              "id": 1738,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1802,
              "sourceUnit": 1483,
              "src": "77:102:9",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1736,
                    "name": "ConduitTransfer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1469,
                    "src": "90:15:9",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 1737,
                    "name": "ConduitBatch1155Transfer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1482,
                    "src": "111:24:9",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ConduitInterface",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1739,
                "nodeType": "StructuredDocumentation",
                "src": "181:174:9",
                "text": " @title ConduitInterface\n @author 0age\n @notice ConduitInterface contains all external function interfaces, events,\n         and errors for conduit contracts."
              },
              "fullyImplemented": false,
              "id": 1801,
              "linearizedBaseContracts": [
                1801
              ],
              "name": "ConduitInterface",
              "nameLocation": "366:16:9",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1740,
                    "nodeType": "StructuredDocumentation",
                    "src": "389:144:9",
                    "text": " @dev Revert with an error when attempting to execute transfers using a\n      caller that does not have an open channel."
                  },
                  "errorSelector": "6821b7df",
                  "id": 1742,
                  "name": "ChannelClosed",
                  "nameLocation": "544:13:9",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1741,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "557:2:9"
                  },
                  "src": "538:22:9"
                },
                {
                  "documentation": {
                    "id": 1743,
                    "nodeType": "StructuredDocumentation",
                    "src": "566:154:9",
                    "text": " @dev Revert with an error when attempting to execute a transfer for an\n      item that does not have an ERC20/721/1155 item type."
                  },
                  "errorSelector": "7932f1fc",
                  "id": 1745,
                  "name": "InvalidItemType",
                  "nameLocation": "731:15:9",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1744,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "746:2:9"
                  },
                  "src": "725:24:9"
                },
                {
                  "documentation": {
                    "id": 1746,
                    "nodeType": "StructuredDocumentation",
                    "src": "755:156:9",
                    "text": " @dev Revert with an error when attempting to update the status of a\n      channel from a caller that is not the conduit controller."
                  },
                  "errorSelector": "6d5769be",
                  "id": 1748,
                  "name": "InvalidController",
                  "nameLocation": "922:17:9",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1747,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "939:2:9"
                  },
                  "src": "916:26:9"
                },
                {
                  "documentation": {
                    "id": 1749,
                    "nodeType": "StructuredDocumentation",
                    "src": "948:224:9",
                    "text": " @dev Revert with an error when attempting to execute an 1155 batch\n      transfer using calldata not produced by default ABI encoding or with\n      different lengths for ids and amounts arrays."
                  },
                  "errorSelector": "eba2084c",
                  "id": 1751,
                  "name": "Invalid1155BatchTransferEncoding",
                  "nameLocation": "1183:32:9",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1750,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1215:2:9"
                  },
                  "src": "1177:41:9"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1752,
                    "nodeType": "StructuredDocumentation",
                    "src": "1224:220:9",
                    "text": " @dev Emit an event whenever a channel is opened or closed.\n @param channel The channel that has been updated.\n @param open    A boolean indicating whether the conduit is open or not."
                  },
                  "eventSelector": "ae63067d43ac07563b7eb8db6595635fc77f1578a2a5ea06ba91b63e2afa37e2",
                  "id": 1758,
                  "name": "ChannelUpdated",
                  "nameLocation": "1455:14:9",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1757,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1754,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "channel",
                        "nameLocation": "1478:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1758,
                        "src": "1470:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1753,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1470:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1756,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "open",
                        "nameLocation": "1492:4:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1758,
                        "src": "1487:9:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1755,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1487:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1469:28:9"
                  },
                  "src": "1449:49:9"
                },
                {
                  "documentation": {
                    "id": 1759,
                    "nodeType": "StructuredDocumentation",
                    "src": "1504:352:9",
                    "text": " @notice Execute a sequence of ERC20/721/1155 transfers. Only a caller\n         with an open channel can call this function.\n @param transfers The ERC20/721/1155 transfers to perform.\n @return magicValue A magic value indicating that the transfers were\n                    performed successfully."
                  },
                  "functionSelector": "4ce34aa2",
                  "id": 1768,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "execute",
                  "nameLocation": "1870:7:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1764,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1763,
                        "mutability": "mutable",
                        "name": "transfers",
                        "nameLocation": "1905:9:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1768,
                        "src": "1878:36:9",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ConduitTransfer_$1469_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct ConduitTransfer[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1761,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 1760,
                              "name": "ConduitTransfer",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 1469,
                              "src": "1878:15:9"
                            },
                            "referencedDeclaration": 1469,
                            "src": "1878:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ConduitTransfer_$1469_storage_ptr",
                              "typeString": "struct ConduitTransfer"
                            }
                          },
                          "id": 1762,
                          "nodeType": "ArrayTypeName",
                          "src": "1878:17:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_ConduitTransfer_$1469_storage_$dyn_storage_ptr",
                            "typeString": "struct ConduitTransfer[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1877:38:9"
                  },
                  "returnParameters": {
                    "id": 1767,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1766,
                        "mutability": "mutable",
                        "name": "magicValue",
                        "nameLocation": "1957:10:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1768,
                        "src": "1950:17:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1765,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "1950:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1949:19:9"
                  },
                  "scope": 1801,
                  "src": "1861:108:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1769,
                    "nodeType": "StructuredDocumentation",
                    "src": "1975:353:9",
                    "text": " @notice Execute a sequence of batch 1155 transfers. Only a caller with an\n         open channel can call this function.\n @param batch1155Transfers The 1155 batch transfers to perform.\n @return magicValue A magic value indicating that the transfers were\n                    performed successfully."
                  },
                  "functionSelector": "8df25d92",
                  "id": 1778,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "executeBatch1155",
                  "nameLocation": "2342:16:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1774,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1773,
                        "mutability": "mutable",
                        "name": "batch1155Transfers",
                        "nameLocation": "2404:18:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1778,
                        "src": "2368:54:9",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ConduitBatch1155Transfer_$1482_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct ConduitBatch1155Transfer[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1771,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 1770,
                              "name": "ConduitBatch1155Transfer",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 1482,
                              "src": "2368:24:9"
                            },
                            "referencedDeclaration": 1482,
                            "src": "2368:24:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ConduitBatch1155Transfer_$1482_storage_ptr",
                              "typeString": "struct ConduitBatch1155Transfer"
                            }
                          },
                          "id": 1772,
                          "nodeType": "ArrayTypeName",
                          "src": "2368:26:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_ConduitBatch1155Transfer_$1482_storage_$dyn_storage_ptr",
                            "typeString": "struct ConduitBatch1155Transfer[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2358:70:9"
                  },
                  "returnParameters": {
                    "id": 1777,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1776,
                        "mutability": "mutable",
                        "name": "magicValue",
                        "nameLocation": "2454:10:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1778,
                        "src": "2447:17:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1775,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "2447:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2446:19:9"
                  },
                  "scope": 1801,
                  "src": "2333:133:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1779,
                    "nodeType": "StructuredDocumentation",
                    "src": "2472:444:9",
                    "text": " @notice Execute a sequence of transfers, both single and batch 1155. Only\n         a caller with an open channel can call this function.\n @param standardTransfers  The ERC20/721/1155 transfers to perform.\n @param batch1155Transfers The 1155 batch transfers to perform.\n @return magicValue A magic value indicating that the transfers were\n                    performed successfully."
                  },
                  "functionSelector": "899e104c",
                  "id": 1792,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "executeWithBatch1155",
                  "nameLocation": "2930:20:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1788,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1783,
                        "mutability": "mutable",
                        "name": "standardTransfers",
                        "nameLocation": "2987:17:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1792,
                        "src": "2960:44:9",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ConduitTransfer_$1469_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct ConduitTransfer[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1781,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 1780,
                              "name": "ConduitTransfer",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 1469,
                              "src": "2960:15:9"
                            },
                            "referencedDeclaration": 1469,
                            "src": "2960:15:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ConduitTransfer_$1469_storage_ptr",
                              "typeString": "struct ConduitTransfer"
                            }
                          },
                          "id": 1782,
                          "nodeType": "ArrayTypeName",
                          "src": "2960:17:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_ConduitTransfer_$1469_storage_$dyn_storage_ptr",
                            "typeString": "struct ConduitTransfer[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1787,
                        "mutability": "mutable",
                        "name": "batch1155Transfers",
                        "nameLocation": "3050:18:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1792,
                        "src": "3014:54:9",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ConduitBatch1155Transfer_$1482_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct ConduitBatch1155Transfer[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1785,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 1784,
                              "name": "ConduitBatch1155Transfer",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 1482,
                              "src": "3014:24:9"
                            },
                            "referencedDeclaration": 1482,
                            "src": "3014:24:9",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ConduitBatch1155Transfer_$1482_storage_ptr",
                              "typeString": "struct ConduitBatch1155Transfer"
                            }
                          },
                          "id": 1786,
                          "nodeType": "ArrayTypeName",
                          "src": "3014:26:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_ConduitBatch1155Transfer_$1482_storage_$dyn_storage_ptr",
                            "typeString": "struct ConduitBatch1155Transfer[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2950:124:9"
                  },
                  "returnParameters": {
                    "id": 1791,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1790,
                        "mutability": "mutable",
                        "name": "magicValue",
                        "nameLocation": "3100:10:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1792,
                        "src": "3093:17:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 1789,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "3093:6:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3092:19:9"
                  },
                  "scope": 1801,
                  "src": "2921:191:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1793,
                    "nodeType": "StructuredDocumentation",
                    "src": "3118:222:9",
                    "text": " @notice Open or close a given channel. Only callable by the controller.\n @param channel The channel to open or close.\n @param isOpen  The status of the channel (either open or closed)."
                  },
                  "functionSelector": "c4e8fcb5",
                  "id": 1800,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "updateChannel",
                  "nameLocation": "3354:13:9",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1798,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1795,
                        "mutability": "mutable",
                        "name": "channel",
                        "nameLocation": "3376:7:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1800,
                        "src": "3368:15:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1794,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3368:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1797,
                        "mutability": "mutable",
                        "name": "isOpen",
                        "nameLocation": "3390:6:9",
                        "nodeType": "VariableDeclaration",
                        "scope": 1800,
                        "src": "3385:11:9",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1796,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3385:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3367:30:9"
                  },
                  "returnParameters": {
                    "id": 1799,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3406:0:9"
                  },
                  "scope": 1801,
                  "src": "3345:62:9",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 1802,
              "src": "356:3053:9",
              "usedErrors": [
                1742,
                1745,
                1748,
                1751
              ]
            }
          ],
          "src": "32:3378:9"
        },
        "id": 9
      },
      "seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol",
          "exportedSymbols": {
            "ConsiderationEventsAndErrors": [
              1924
            ],
            "ReceivedItem": [
              3940
            ],
            "SpentItem": [
              3928
            ]
          },
          "id": 1925,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1803,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:10"
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationStructs.sol",
              "file": "../lib/ConsiderationStructs.sol",
              "id": 1806,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 1925,
              "sourceUnit": 4076,
              "src": "58:74:10",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1804,
                    "name": "SpentItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3928,
                    "src": "67:9:10",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 1805,
                    "name": "ReceivedItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3940,
                    "src": "78:12:10",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ConsiderationEventsAndErrors",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1807,
                "nodeType": "StructuredDocumentation",
                "src": "134:134:10",
                "text": " @title ConsiderationEventsAndErrors\n @author 0age\n @notice ConsiderationEventsAndErrors contains all events and errors."
              },
              "fullyImplemented": true,
              "id": 1924,
              "linearizedBaseContracts": [
                1924
              ],
              "name": "ConsiderationEventsAndErrors",
              "nameLocation": "279:28:10",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1808,
                    "nodeType": "StructuredDocumentation",
                    "src": "314:710:10",
                    "text": " @dev Emit an event whenever an order is successfully fulfilled.\n @param orderHash     The hash of the fulfilled order.\n @param offerer       The offerer of the fulfilled order.\n @param zone          The zone of the fulfilled order.\n @param fulfiller     The fulfiller of the order, or the null address if\n                      there is no specific fulfiller (i.e. the order is\n                      part of a group of orders).\n @param offer         The offer items spent as part of the order.\n @param consideration The consideration items received as part of the\n                      order along with the recipients of each item."
                  },
                  "eventSelector": "9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31",
                  "id": 1826,
                  "name": "OrderFulfilled",
                  "nameLocation": "1035:14:10",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1825,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1810,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "1067:9:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1826,
                        "src": "1059:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1809,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1059:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1812,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "offerer",
                        "nameLocation": "1102:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1826,
                        "src": "1086:23:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1811,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1086:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1814,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "zone",
                        "nameLocation": "1135:4:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1826,
                        "src": "1119:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1813,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1119:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1816,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "fulfiller",
                        "nameLocation": "1157:9:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1826,
                        "src": "1149:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1815,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1149:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1820,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "offer",
                        "nameLocation": "1188:5:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1826,
                        "src": "1176:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_SpentItem_$3928_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct SpentItem[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1818,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 1817,
                              "name": "SpentItem",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 3928,
                              "src": "1176:9:10"
                            },
                            "referencedDeclaration": 3928,
                            "src": "1176:9:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_SpentItem_$3928_storage_ptr",
                              "typeString": "struct SpentItem"
                            }
                          },
                          "id": 1819,
                          "nodeType": "ArrayTypeName",
                          "src": "1176:11:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_SpentItem_$3928_storage_$dyn_storage_ptr",
                            "typeString": "struct SpentItem[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1824,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "consideration",
                        "nameLocation": "1218:13:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1826,
                        "src": "1203:28:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ReceivedItem_$3940_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct ReceivedItem[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1822,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 1821,
                              "name": "ReceivedItem",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 3940,
                              "src": "1203:12:10"
                            },
                            "referencedDeclaration": 3940,
                            "src": "1203:12:10",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReceivedItem_$3940_storage_ptr",
                              "typeString": "struct ReceivedItem"
                            }
                          },
                          "id": 1823,
                          "nodeType": "ArrayTypeName",
                          "src": "1203:14:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_ReceivedItem_$3940_storage_$dyn_storage_ptr",
                            "typeString": "struct ReceivedItem[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1049:188:10"
                  },
                  "src": "1029:209:10"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1827,
                    "nodeType": "StructuredDocumentation",
                    "src": "1244:263:10",
                    "text": " @dev Emit an event whenever an order is successfully cancelled.\n @param orderHash The hash of the cancelled order.\n @param offerer   The offerer of the cancelled order.\n @param zone      The zone of the cancelled order."
                  },
                  "eventSelector": "6bacc01dbe442496068f7d234edd811f1a5f833243e0aec824f86ab861f3c90d",
                  "id": 1835,
                  "name": "OrderCancelled",
                  "nameLocation": "1518:14:10",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1834,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1829,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "1550:9:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1835,
                        "src": "1542:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1828,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1542:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1831,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "offerer",
                        "nameLocation": "1585:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1835,
                        "src": "1569:23:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1830,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1569:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1833,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "zone",
                        "nameLocation": "1618:4:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1835,
                        "src": "1602:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1832,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1602:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1532:96:10"
                  },
                  "src": "1512:117:10"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1836,
                    "nodeType": "StructuredDocumentation",
                    "src": "1635:414:10",
                    "text": " @dev Emit an event whenever an order is explicitly validated. Note that\n      this event will not be emitted on partial fills even though they do\n      validate the order as part of partial fulfillment.\n @param orderHash The hash of the validated order.\n @param offerer   The offerer of the validated order.\n @param zone      The zone of the validated order."
                  },
                  "eventSelector": "fde361574a066b44b3b5fe98a87108b7565e327327954c4faeea56a4e6491a0a",
                  "id": 1844,
                  "name": "OrderValidated",
                  "nameLocation": "2060:14:10",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1843,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1838,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "2092:9:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1844,
                        "src": "2084:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1837,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2084:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1840,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "offerer",
                        "nameLocation": "2127:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1844,
                        "src": "2111:23:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1839,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2111:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1842,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "zone",
                        "nameLocation": "2160:4:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1844,
                        "src": "2144:20:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1841,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2144:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2074:96:10"
                  },
                  "src": "2054:117:10"
                },
                {
                  "anonymous": false,
                  "documentation": {
                    "id": 1845,
                    "nodeType": "StructuredDocumentation",
                    "src": "2177:199:10",
                    "text": " @dev Emit an event whenever a nonce for a given offerer is incremented.\n @param newNonce The new nonce for the offerer.\n @param offerer  The offerer in question."
                  },
                  "eventSelector": "7ab0fc7de8910a6100b24df423c3d0835534506dca9473d30c3e7df51241b2cf",
                  "id": 1851,
                  "name": "NonceIncremented",
                  "nameLocation": "2387:16:10",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 1850,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1847,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "newNonce",
                        "nameLocation": "2412:8:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1851,
                        "src": "2404:16:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1846,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2404:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1849,
                        "indexed": true,
                        "mutability": "mutable",
                        "name": "offerer",
                        "nameLocation": "2438:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1851,
                        "src": "2422:23:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1848,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2422:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2403:43:10"
                  },
                  "src": "2381:66:10"
                },
                {
                  "documentation": {
                    "id": 1852,
                    "nodeType": "StructuredDocumentation",
                    "src": "2453:202:10",
                    "text": " @dev Revert with an error when attempting to fill an order that has\n      already been fully filled.\n @param orderHash The order hash on which a fill was attempted."
                  },
                  "errorSelector": "10fda3e1",
                  "id": 1856,
                  "name": "OrderAlreadyFilled",
                  "nameLocation": "2666:18:10",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1855,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1854,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "2693:9:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1856,
                        "src": "2685:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1853,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2685:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2684:19:10"
                  },
                  "src": "2660:44:10"
                },
                {
                  "documentation": {
                    "id": 1857,
                    "nodeType": "StructuredDocumentation",
                    "src": "2710:136:10",
                    "text": " @dev Revert with an error when attempting to fill an order outside the\n      specified start time and end time."
                  },
                  "errorSelector": "6f7eac26",
                  "id": 1859,
                  "name": "InvalidTime",
                  "nameLocation": "2857:11:10",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1858,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2868:2:10"
                  },
                  "src": "2851:20:10"
                },
                {
                  "documentation": {
                    "id": 1860,
                    "nodeType": "StructuredDocumentation",
                    "src": "2877:159:10",
                    "text": " @dev Revert with an error when attempting to fill an order referencing an\n      invalid conduit (i.e. one that has not been deployed)."
                  },
                  "errorSelector": "1cf99b26",
                  "id": 1866,
                  "name": "InvalidConduit",
                  "nameLocation": "3047:14:10",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1865,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1862,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "3070:10:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1866,
                        "src": "3062:18:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1861,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3062:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1864,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "3090:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1866,
                        "src": "3082:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1863,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3082:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3061:37:10"
                  },
                  "src": "3041:58:10"
                },
                {
                  "documentation": {
                    "id": 1867,
                    "nodeType": "StructuredDocumentation",
                    "src": "3105:166:10",
                    "text": " @dev Revert with an error when an order is supplied for fulfillment with\n      a consideration array that is shorter than the original array."
                  },
                  "errorSelector": "466aa616",
                  "id": 1869,
                  "name": "MissingOriginalConsiderationItems",
                  "nameLocation": "3282:33:10",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1868,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3315:2:10"
                  },
                  "src": "3276:42:10"
                },
                {
                  "documentation": {
                    "id": 1870,
                    "nodeType": "StructuredDocumentation",
                    "src": "3324:137:10",
                    "text": " @dev Revert with an error when a call to a conduit fails with revert data\n      that is too expensive to return."
                  },
                  "errorSelector": "d13d53d4",
                  "id": 1874,
                  "name": "InvalidCallToConduit",
                  "nameLocation": "3472:20:10",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1873,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1872,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "3501:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1874,
                        "src": "3493:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1871,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3493:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3492:17:10"
                  },
                  "src": "3466:44:10"
                },
                {
                  "documentation": {
                    "id": 1875,
                    "nodeType": "StructuredDocumentation",
                    "src": "3516:474:10",
                    "text": " @dev Revert with an error if a consideration amount has not been fully\n      zeroed out after applying all fulfillments.\n @param orderIndex         The index of the order with the consideration\n                           item with a shortfall.\n @param considerationIndex The index of the consideration item on the\n                           order.\n @param shortfallAmount    The unfulfilled consideration amount."
                  },
                  "errorSelector": "a5f54208",
                  "id": 1883,
                  "name": "ConsiderationNotMet",
                  "nameLocation": "4001:19:10",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1882,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1877,
                        "mutability": "mutable",
                        "name": "orderIndex",
                        "nameLocation": "4038:10:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1883,
                        "src": "4030:18:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1876,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4030:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1879,
                        "mutability": "mutable",
                        "name": "considerationIndex",
                        "nameLocation": "4066:18:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1883,
                        "src": "4058:26:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1878,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4058:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1881,
                        "mutability": "mutable",
                        "name": "shortfallAmount",
                        "nameLocation": "4102:15:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1883,
                        "src": "4094:23:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1880,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4094:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4020:103:10"
                  },
                  "src": "3995:129:10"
                },
                {
                  "documentation": {
                    "id": 1884,
                    "nodeType": "StructuredDocumentation",
                    "src": "4130:137:10",
                    "text": " @dev Revert with an error when insufficient ether is supplied as part of\n      msg.value when fulfilling orders."
                  },
                  "errorSelector": "1a783b8d",
                  "id": 1886,
                  "name": "InsufficientEtherSupplied",
                  "nameLocation": "4278:25:10",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1885,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4303:2:10"
                  },
                  "src": "4272:34:10"
                },
                {
                  "documentation": {
                    "id": 1887,
                    "nodeType": "StructuredDocumentation",
                    "src": "4312:76:10",
                    "text": " @dev Revert with an error when an ether transfer reverts."
                  },
                  "errorSelector": "470c7c1d",
                  "id": 1893,
                  "name": "EtherTransferGenericFailure",
                  "nameLocation": "4399:27:10",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1892,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1889,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "4435:7:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1893,
                        "src": "4427:15:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 1888,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4427:7:10",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1891,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "4452:6:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1893,
                        "src": "4444:14:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1890,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4444:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4426:33:10"
                  },
                  "src": "4393:67:10"
                },
                {
                  "documentation": {
                    "id": 1894,
                    "nodeType": "StructuredDocumentation",
                    "src": "4466:163:10",
                    "text": " @dev Revert with an error when a partial fill is attempted on an order\n      that does not specify partial fill support in its order type."
                  },
                  "errorSelector": "a11b63ff",
                  "id": 1896,
                  "name": "PartialFillsNotEnabledForOrder",
                  "nameLocation": "4640:30:10",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1895,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4670:2:10"
                  },
                  "src": "4634:39:10"
                },
                {
                  "documentation": {
                    "id": 1897,
                    "nodeType": "StructuredDocumentation",
                    "src": "4679:178:10",
                    "text": " @dev Revert with an error when attempting to fill an order that has been\n      cancelled.\n @param orderHash The hash of the cancelled order."
                  },
                  "errorSelector": "1a515574",
                  "id": 1901,
                  "name": "OrderIsCancelled",
                  "nameLocation": "4868:16:10",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1900,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1899,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "4893:9:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1901,
                        "src": "4885:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1898,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4885:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4884:19:10"
                  },
                  "src": "4862:42:10"
                },
                {
                  "documentation": {
                    "id": 1902,
                    "nodeType": "StructuredDocumentation",
                    "src": "4910:195:10",
                    "text": " @dev Revert with an error when attempting to fill a basic order that has\n      been partially filled.\n @param orderHash The hash of the partially used order."
                  },
                  "errorSelector": "ee9e0e63",
                  "id": 1906,
                  "name": "OrderPartiallyFilled",
                  "nameLocation": "5116:20:10",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1905,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1904,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "5145:9:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1906,
                        "src": "5137:17:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1903,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5137:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5136:19:10"
                  },
                  "src": "5110:46:10"
                },
                {
                  "documentation": {
                    "id": 1907,
                    "nodeType": "StructuredDocumentation",
                    "src": "5162:145:10",
                    "text": " @dev Revert with an error when attempting to cancel an order as a caller\n      other than the indicated offerer or zone."
                  },
                  "errorSelector": "80ec7374",
                  "id": 1909,
                  "name": "InvalidCanceller",
                  "nameLocation": "5318:16:10",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1908,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5334:2:10"
                  },
                  "src": "5312:25:10"
                },
                {
                  "documentation": {
                    "id": 1910,
                    "nodeType": "StructuredDocumentation",
                    "src": "5343:201:10",
                    "text": " @dev Revert with an error when supplying a fraction with a value of zero\n      for the numerator or denominator, or one where the numerator exceeds\n      the denominator."
                  },
                  "errorSelector": "5a052b32",
                  "id": 1912,
                  "name": "BadFraction",
                  "nameLocation": "5555:11:10",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1911,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "5566:2:10"
                  },
                  "src": "5549:20:10"
                },
                {
                  "documentation": {
                    "id": 1913,
                    "nodeType": "StructuredDocumentation",
                    "src": "5575:211:10",
                    "text": " @dev Revert with an error when a caller attempts to supply callvalue to a\n      non-payable basic order route or does not supply any callvalue to a\n      payable basic order route."
                  },
                  "errorSelector": "a61be9f0",
                  "id": 1917,
                  "name": "InvalidMsgValue",
                  "nameLocation": "5797:15:10",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1916,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1915,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "5821:5:10",
                        "nodeType": "VariableDeclaration",
                        "scope": 1917,
                        "src": "5813:13:10",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1914,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5813:7:10",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5812:15:10"
                  },
                  "src": "5791:37:10"
                },
                {
                  "documentation": {
                    "id": 1918,
                    "nodeType": "StructuredDocumentation",
                    "src": "5834:147:10",
                    "text": " @dev Revert with an error when attempting to fill a basic order using\n      calldata not produced by default ABI encoding."
                  },
                  "errorSelector": "39f3e3fd",
                  "id": 1920,
                  "name": "InvalidBasicOrderParameterEncoding",
                  "nameLocation": "5992:34:10",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1919,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6026:2:10"
                  },
                  "src": "5986:43:10"
                },
                {
                  "documentation": {
                    "id": 1921,
                    "nodeType": "StructuredDocumentation",
                    "src": "6035:141:10",
                    "text": " @dev Revert with an error when attempting to fulfill any number of\n      available orders when none are fulfillable."
                  },
                  "errorSelector": "d5da9a1b",
                  "id": 1923,
                  "name": "NoSpecifiedOrdersAvailable",
                  "nameLocation": "6187:26:10",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 1922,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6213:2:10"
                  },
                  "src": "6181:35:10"
                }
              ],
              "scope": 1925,
              "src": "269:5949:10",
              "usedErrors": [
                1856,
                1859,
                1866,
                1869,
                1874,
                1883,
                1886,
                1893,
                1896,
                1901,
                1906,
                1909,
                1912,
                1917,
                1920,
                1923
              ]
            }
          ],
          "src": "32:6187:10"
        },
        "id": 10
      },
      "seaport/contracts/interfaces/ConsiderationInterface.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/interfaces/ConsiderationInterface.sol",
          "exportedSymbols": {
            "AdvancedOrder": [
              4031
            ],
            "BasicOrderParameters": [
              3980
            ],
            "ConsiderationInterface": [
              2144
            ],
            "CriteriaResolver": [
              4053
            ],
            "Execution": [
              4075
            ],
            "Fulfillment": [
              4062
            ],
            "FulfillmentComponent": [
              4067
            ],
            "Order": [
              4019
            ],
            "OrderComponents": [
              3892
            ],
            "OrderStatus": [
              4040
            ]
          },
          "id": 2145,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1926,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:11"
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationStructs.sol",
              "file": "../lib/ConsiderationStructs.sol",
              "id": 1936,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2145,
              "sourceUnit": 4076,
              "src": "77:223:11",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 1927,
                    "name": "BasicOrderParameters",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3980,
                    "src": "90:20:11",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 1928,
                    "name": "OrderComponents",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3892,
                    "src": "116:15:11",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 1929,
                    "name": "Fulfillment",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4062,
                    "src": "137:11:11",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 1930,
                    "name": "FulfillmentComponent",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4067,
                    "src": "154:20:11",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 1931,
                    "name": "Execution",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4075,
                    "src": "180:9:11",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 1932,
                    "name": "Order",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4019,
                    "src": "195:5:11",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 1933,
                    "name": "AdvancedOrder",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4031,
                    "src": "206:13:11",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 1934,
                    "name": "OrderStatus",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4040,
                    "src": "225:11:11",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 1935,
                    "name": "CriteriaResolver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4053,
                    "src": "242:16:11",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ConsiderationInterface",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 1937,
                "nodeType": "StructuredDocumentation",
                "src": "302:468:11",
                "text": " @title ConsiderationInterface\n @author 0age\n @custom:version 1\n @notice Consideration is a generalized ETH/ERC20/ERC721/ERC1155 marketplace.\n         It minimizes external calls to the greatest extent possible and\n         provides lightweight methods for common routes as well as more\n         flexible methods for composing advanced orders.\n @dev ConsiderationInterface contains all external function interfaces for\n      Consideration."
              },
              "fullyImplemented": false,
              "id": 2144,
              "linearizedBaseContracts": [
                2144
              ],
              "name": "ConsiderationInterface",
              "nameLocation": "781:22:11",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 1938,
                    "nodeType": "StructuredDocumentation",
                    "src": "810:807:11",
                    "text": " @notice Fulfill an order offering an ERC721 token by supplying Ether (or\n         the native token for the given chain) as consideration for the\n         order. An arbitrary number of \"additional recipients\" may also be\n         supplied which will each receive native tokens from the fulfiller\n         as consideration.\n @param parameters Additional information on the fulfilled order. Note\n                   that the offerer must first approve this contract (or\n                   their preferred conduit if indicated by the order) for\n                   their offered ERC721 token to be transferred.\n @return fulfilled A boolean indicating whether the order has been\n                   successfully fulfilled."
                  },
                  "functionSelector": "fb0f3ee1",
                  "id": 1946,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "fulfillBasicOrder",
                  "nameLocation": "1631:17:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1942,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1941,
                        "mutability": "mutable",
                        "name": "parameters",
                        "nameLocation": "1679:10:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1946,
                        "src": "1649:40:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                          "typeString": "struct BasicOrderParameters"
                        },
                        "typeName": {
                          "id": 1940,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 1939,
                            "name": "BasicOrderParameters",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3980,
                            "src": "1649:20:11"
                          },
                          "referencedDeclaration": 3980,
                          "src": "1649:20:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_storage_ptr",
                            "typeString": "struct BasicOrderParameters"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1648:42:11"
                  },
                  "returnParameters": {
                    "id": 1945,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1944,
                        "mutability": "mutable",
                        "name": "fulfilled",
                        "nameLocation": "1746:9:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1946,
                        "src": "1741:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1943,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1741:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1740:16:11"
                  },
                  "scope": 2144,
                  "src": "1622:135:11",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1947,
                    "nodeType": "StructuredDocumentation",
                    "src": "1763:1347:11",
                    "text": " @notice Fulfill an order with an arbitrary number of items for offer and\n         consideration. Note that this function does not support\n         criteria-based orders or partial filling of orders (though\n         filling the remainder of a partially-filled order is supported).\n @param order               The order to fulfill. Note that both the\n                            offerer and the fulfiller must first approve\n                            this contract (or the corresponding conduit if\n                            indicated) to transfer any relevant tokens on\n                            their behalf and that contracts must implement\n                            `onERC1155Received` to receive ERC1155 tokens\n                            as consideration.\n @param fulfillerConduitKey A bytes32 value indicating what conduit, if\n                            any, to source the fulfiller's token approvals\n                            from. The zero hash signifies that no conduit\n                            should be used, with direct approvals set on\n                            Consideration.\n @return fulfilled A boolean indicating whether the order has been\n                   successfully fulfilled."
                  },
                  "functionSelector": "b3a34c4c",
                  "id": 1957,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "fulfillOrder",
                  "nameLocation": "3124:12:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1953,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1950,
                        "mutability": "mutable",
                        "name": "order",
                        "nameLocation": "3152:5:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1957,
                        "src": "3137:20:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Order_$4019_calldata_ptr",
                          "typeString": "struct Order"
                        },
                        "typeName": {
                          "id": 1949,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 1948,
                            "name": "Order",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4019,
                            "src": "3137:5:11"
                          },
                          "referencedDeclaration": 4019,
                          "src": "3137:5:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Order_$4019_storage_ptr",
                            "typeString": "struct Order"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1952,
                        "mutability": "mutable",
                        "name": "fulfillerConduitKey",
                        "nameLocation": "3167:19:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1957,
                        "src": "3159:27:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1951,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3159:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3136:51:11"
                  },
                  "returnParameters": {
                    "id": 1956,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1955,
                        "mutability": "mutable",
                        "name": "fulfilled",
                        "nameLocation": "3243:9:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1957,
                        "src": "3238:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1954,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3238:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3237:16:11"
                  },
                  "scope": 2144,
                  "src": "3115:139:11",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1958,
                    "nodeType": "StructuredDocumentation",
                    "src": "3260:2480:11",
                    "text": " @notice Fill an order, fully or partially, with an arbitrary number of\n         items for offer and consideration alongside criteria resolvers\n         containing specific token identifiers and associated proofs.\n @param advancedOrder       The order to fulfill along with the fraction\n                            of the order to attempt to fill. Note that\n                            both the offerer and the fulfiller must first\n                            approve this contract (or their preferred\n                            conduit if indicated by the order) to transfer\n                            any relevant tokens on their behalf and that\n                            contracts must implement `onERC1155Received`\n                            to receive ERC1155 tokens as consideration.\n                            Also note that all offer and consideration\n                            components must have no remainder after\n                            multiplication of the respective amount with\n                            the supplied fraction for the partial fill to\n                            be considered valid.\n @param criteriaResolvers   An array where each element contains a\n                            reference to a specific offer or\n                            consideration, a token identifier, and a proof\n                            that the supplied token identifier is\n                            contained in the merkle root held by the item\n                            in question's criteria element. Note that an\n                            empty criteria indicates that any\n                            (transferrable) token identifier on the token\n                            in question is valid and that no associated\n                            proof needs to be supplied.\n @param fulfillerConduitKey A bytes32 value indicating what conduit, if\n                            any, to source the fulfiller's token approvals\n                            from. The zero hash signifies that no conduit\n                            should be used, with direct approvals set on\n                            Consideration.\n @return fulfilled A boolean indicating whether the order has been\n                   successfully fulfilled."
                  },
                  "functionSelector": "df7b0dac",
                  "id": 1972,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "fulfillAdvancedOrder",
                  "nameLocation": "5754:20:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1968,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1961,
                        "mutability": "mutable",
                        "name": "advancedOrder",
                        "nameLocation": "5807:13:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1972,
                        "src": "5784:36:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_calldata_ptr",
                          "typeString": "struct AdvancedOrder"
                        },
                        "typeName": {
                          "id": 1960,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 1959,
                            "name": "AdvancedOrder",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4031,
                            "src": "5784:13:11"
                          },
                          "referencedDeclaration": 4031,
                          "src": "5784:13:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                            "typeString": "struct AdvancedOrder"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1965,
                        "mutability": "mutable",
                        "name": "criteriaResolvers",
                        "nameLocation": "5858:17:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1972,
                        "src": "5830:45:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct CriteriaResolver[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1963,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 1962,
                              "name": "CriteriaResolver",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4053,
                              "src": "5830:16:11"
                            },
                            "referencedDeclaration": 4053,
                            "src": "5830:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                              "typeString": "struct CriteriaResolver"
                            }
                          },
                          "id": 1964,
                          "nodeType": "ArrayTypeName",
                          "src": "5830:18:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_storage_$dyn_storage_ptr",
                            "typeString": "struct CriteriaResolver[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1967,
                        "mutability": "mutable",
                        "name": "fulfillerConduitKey",
                        "nameLocation": "5893:19:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1972,
                        "src": "5885:27:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1966,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5885:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5774:144:11"
                  },
                  "returnParameters": {
                    "id": 1971,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1970,
                        "mutability": "mutable",
                        "name": "fulfilled",
                        "nameLocation": "5950:9:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 1972,
                        "src": "5945:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 1969,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5945:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5944:16:11"
                  },
                  "scope": 2144,
                  "src": "5745:216:11",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 1973,
                    "nodeType": "StructuredDocumentation",
                    "src": "5967:2984:11",
                    "text": " @notice Attempt to fill a group of orders, each with an arbitrary number\n         of items for offer and consideration. Any order that is not\n         currently active, has already been fully filled, or has been\n         cancelled will be omitted. Remaining offer and consideration\n         items will then be aggregated where possible as indicated by the\n         supplied offer and consideration component arrays and aggregated\n         items will be transferred to the fulfiller or to each intended\n         recipient, respectively. Note that a failing item transfer or an\n         issue with order formatting will cause the entire batch to fail.\n         Note that this function does not support criteria-based orders or\n         partial filling of orders (though filling the remainder of a\n         partially-filled order is supported).\n @param orders                    The orders to fulfill. Note that both\n                                  the offerer and the fulfiller must first\n                                  approve this contract (or the\n                                  corresponding conduit if indicated) to\n                                  transfer any relevant tokens on their\n                                  behalf and that contracts must implement\n                                  `onERC1155Received` to receive ERC1155\n                                  tokens as consideration.\n @param offerFulfillments         An array of FulfillmentComponent arrays\n                                  indicating which offer items to attempt\n                                  to aggregate when preparing executions.\n @param considerationFulfillments An array of FulfillmentComponent arrays\n                                  indicating which consideration items to\n                                  attempt to aggregate when preparing\n                                  executions.\n @param fulfillerConduitKey       A bytes32 value indicating what conduit,\n                                  if any, to source the fulfiller's token\n                                  approvals from. The zero hash signifies\n                                  that no conduit should be used, with\n                                  direct approvals set on this contract.\n @param maximumFulfilled          The maximum number of orders to fulfill.\n @return availableOrders An array of booleans indicating if each order\n                         with an index corresponding to the index of the\n                         returned boolean was fulfillable or not.\n @return executions      An array of elements indicating the sequence of\n                         transfers performed as part of matching the given\n                         orders."
                  },
                  "functionSelector": "ed98a574",
                  "id": 2001,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "fulfillAvailableOrders",
                  "nameLocation": "8965:22:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 1992,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1977,
                        "mutability": "mutable",
                        "name": "orders",
                        "nameLocation": "9014:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2001,
                        "src": "8997:23:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct Order[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1975,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 1974,
                              "name": "Order",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4019,
                              "src": "8997:5:11"
                            },
                            "referencedDeclaration": 4019,
                            "src": "8997:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Order_$4019_storage_ptr",
                              "typeString": "struct Order"
                            }
                          },
                          "id": 1976,
                          "nodeType": "ArrayTypeName",
                          "src": "8997:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Order_$4019_storage_$dyn_storage_ptr",
                            "typeString": "struct Order[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1982,
                        "mutability": "mutable",
                        "name": "offerFulfillments",
                        "nameLocation": "9064:17:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2001,
                        "src": "9030:51:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct FulfillmentComponent[][]"
                        },
                        "typeName": {
                          "baseType": {
                            "baseType": {
                              "id": 1979,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 1978,
                                "name": "FulfillmentComponent",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4067,
                                "src": "9030:20:11"
                              },
                              "referencedDeclaration": 4067,
                              "src": "9030:20:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                                "typeString": "struct FulfillmentComponent"
                              }
                            },
                            "id": 1980,
                            "nodeType": "ArrayTypeName",
                            "src": "9030:22:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                              "typeString": "struct FulfillmentComponent[]"
                            }
                          },
                          "id": 1981,
                          "nodeType": "ArrayTypeName",
                          "src": "9030:24:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_$dyn_storage_ptr",
                            "typeString": "struct FulfillmentComponent[][]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1987,
                        "mutability": "mutable",
                        "name": "considerationFulfillments",
                        "nameLocation": "9125:25:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2001,
                        "src": "9091:59:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct FulfillmentComponent[][]"
                        },
                        "typeName": {
                          "baseType": {
                            "baseType": {
                              "id": 1984,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 1983,
                                "name": "FulfillmentComponent",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4067,
                                "src": "9091:20:11"
                              },
                              "referencedDeclaration": 4067,
                              "src": "9091:20:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                                "typeString": "struct FulfillmentComponent"
                              }
                            },
                            "id": 1985,
                            "nodeType": "ArrayTypeName",
                            "src": "9091:22:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                              "typeString": "struct FulfillmentComponent[]"
                            }
                          },
                          "id": 1986,
                          "nodeType": "ArrayTypeName",
                          "src": "9091:24:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_$dyn_storage_ptr",
                            "typeString": "struct FulfillmentComponent[][]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1989,
                        "mutability": "mutable",
                        "name": "fulfillerConduitKey",
                        "nameLocation": "9168:19:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2001,
                        "src": "9160:27:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 1988,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9160:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1991,
                        "mutability": "mutable",
                        "name": "maximumFulfilled",
                        "nameLocation": "9205:16:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2001,
                        "src": "9197:24:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 1990,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9197:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8987:240:11"
                  },
                  "returnParameters": {
                    "id": 2000,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 1995,
                        "mutability": "mutable",
                        "name": "availableOrders",
                        "nameLocation": "9292:15:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2001,
                        "src": "9278:29:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1993,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "9278:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 1994,
                          "nodeType": "ArrayTypeName",
                          "src": "9278:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 1999,
                        "mutability": "mutable",
                        "name": "executions",
                        "nameLocation": "9328:10:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2001,
                        "src": "9309:29:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Execution[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 1997,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 1996,
                              "name": "Execution",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4075,
                              "src": "9309:9:11"
                            },
                            "referencedDeclaration": 4075,
                            "src": "9309:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                              "typeString": "struct Execution"
                            }
                          },
                          "id": 1998,
                          "nodeType": "ArrayTypeName",
                          "src": "9309:11:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_storage_$dyn_storage_ptr",
                            "typeString": "struct Execution[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9277:62:11"
                  },
                  "scope": 2144,
                  "src": "8956:384:11",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2002,
                    "nodeType": "StructuredDocumentation",
                    "src": "9346:4367:11",
                    "text": " @notice Attempt to fill a group of orders, fully or partially, with an\n         arbitrary number of items for offer and consideration per order\n         alongside criteria resolvers containing specific token\n         identifiers and associated proofs. Any order that is not\n         currently active, has already been fully filled, or has been\n         cancelled will be omitted. Remaining offer and consideration\n         items will then be aggregated where possible as indicated by the\n         supplied offer and consideration component arrays and aggregated\n         items will be transferred to the fulfiller or to each intended\n         recipient, respectively. Note that a failing item transfer or an\n         issue with order formatting will cause the entire batch to fail.\n @param advancedOrders            The orders to fulfill along with the\n                                  fraction of those orders to attempt to\n                                  fill. Note that both the offerer and the\n                                  fulfiller must first approve this\n                                  contract (or their preferred conduit if\n                                  indicated by the order) to transfer any\n                                  relevant tokens on their behalf and that\n                                  contracts must implement\n                                  `onERC1155Received` to enable receipt of\n                                  ERC1155 tokens as consideration. Also\n                                  note that all offer and consideration\n                                  components must have no remainder after\n                                  multiplication of the respective amount\n                                  with the supplied fraction for an\n                                  order's partial fill amount to be\n                                  considered valid.\n @param criteriaResolvers         An array where each element contains a\n                                  reference to a specific offer or\n                                  consideration, a token identifier, and a\n                                  proof that the supplied token identifier\n                                  is contained in the merkle root held by\n                                  the item in question's criteria element.\n                                  Note that an empty criteria indicates\n                                  that any (transferrable) token\n                                  identifier on the token in question is\n                                  valid and that no associated proof needs\n                                  to be supplied.\n @param offerFulfillments         An array of FulfillmentComponent arrays\n                                  indicating which offer items to attempt\n                                  to aggregate when preparing executions.\n @param considerationFulfillments An array of FulfillmentComponent arrays\n                                  indicating which consideration items to\n                                  attempt to aggregate when preparing\n                                  executions.\n @param fulfillerConduitKey       A bytes32 value indicating what conduit,\n                                  if any, to source the fulfiller's token\n                                  approvals from. The zero hash signifies\n                                  that no conduit should be used, with\n                                  direct approvals set on this contract.\n @param maximumFulfilled          The maximum number of orders to fulfill.\n @return availableOrders An array of booleans indicating if each order\n                         with an index corresponding to the index of the\n                         returned boolean was fulfillable or not.\n @return executions      An array of elements indicating the sequence of\n                         transfers performed as part of matching the given\n                         orders."
                  },
                  "functionSelector": "fb4c2af9",
                  "id": 2034,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "fulfillAvailableAdvancedOrders",
                  "nameLocation": "13727:30:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2025,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2006,
                        "mutability": "mutable",
                        "name": "advancedOrders",
                        "nameLocation": "13792:14:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2034,
                        "src": "13767:39:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct AdvancedOrder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2004,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2003,
                              "name": "AdvancedOrder",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4031,
                              "src": "13767:13:11"
                            },
                            "referencedDeclaration": 4031,
                            "src": "13767:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                              "typeString": "struct AdvancedOrder"
                            }
                          },
                          "id": 2005,
                          "nodeType": "ArrayTypeName",
                          "src": "13767:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                            "typeString": "struct AdvancedOrder[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2010,
                        "mutability": "mutable",
                        "name": "criteriaResolvers",
                        "nameLocation": "13844:17:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2034,
                        "src": "13816:45:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct CriteriaResolver[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2008,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2007,
                              "name": "CriteriaResolver",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4053,
                              "src": "13816:16:11"
                            },
                            "referencedDeclaration": 4053,
                            "src": "13816:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                              "typeString": "struct CriteriaResolver"
                            }
                          },
                          "id": 2009,
                          "nodeType": "ArrayTypeName",
                          "src": "13816:18:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_storage_$dyn_storage_ptr",
                            "typeString": "struct CriteriaResolver[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2015,
                        "mutability": "mutable",
                        "name": "offerFulfillments",
                        "nameLocation": "13905:17:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2034,
                        "src": "13871:51:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct FulfillmentComponent[][]"
                        },
                        "typeName": {
                          "baseType": {
                            "baseType": {
                              "id": 2012,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2011,
                                "name": "FulfillmentComponent",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4067,
                                "src": "13871:20:11"
                              },
                              "referencedDeclaration": 4067,
                              "src": "13871:20:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                                "typeString": "struct FulfillmentComponent"
                              }
                            },
                            "id": 2013,
                            "nodeType": "ArrayTypeName",
                            "src": "13871:22:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                              "typeString": "struct FulfillmentComponent[]"
                            }
                          },
                          "id": 2014,
                          "nodeType": "ArrayTypeName",
                          "src": "13871:24:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_$dyn_storage_ptr",
                            "typeString": "struct FulfillmentComponent[][]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2020,
                        "mutability": "mutable",
                        "name": "considerationFulfillments",
                        "nameLocation": "13966:25:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2034,
                        "src": "13932:59:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct FulfillmentComponent[][]"
                        },
                        "typeName": {
                          "baseType": {
                            "baseType": {
                              "id": 2017,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2016,
                                "name": "FulfillmentComponent",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4067,
                                "src": "13932:20:11"
                              },
                              "referencedDeclaration": 4067,
                              "src": "13932:20:11",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                                "typeString": "struct FulfillmentComponent"
                              }
                            },
                            "id": 2018,
                            "nodeType": "ArrayTypeName",
                            "src": "13932:22:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                              "typeString": "struct FulfillmentComponent[]"
                            }
                          },
                          "id": 2019,
                          "nodeType": "ArrayTypeName",
                          "src": "13932:24:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_$dyn_storage_ptr",
                            "typeString": "struct FulfillmentComponent[][]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2022,
                        "mutability": "mutable",
                        "name": "fulfillerConduitKey",
                        "nameLocation": "14009:19:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2034,
                        "src": "14001:27:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2021,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "14001:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2024,
                        "mutability": "mutable",
                        "name": "maximumFulfilled",
                        "nameLocation": "14046:16:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2034,
                        "src": "14038:24:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2023,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14038:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13757:311:11"
                  },
                  "returnParameters": {
                    "id": 2033,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2028,
                        "mutability": "mutable",
                        "name": "availableOrders",
                        "nameLocation": "14133:15:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2034,
                        "src": "14119:29:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2026,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "14119:4:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 2027,
                          "nodeType": "ArrayTypeName",
                          "src": "14119:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2032,
                        "mutability": "mutable",
                        "name": "executions",
                        "nameLocation": "14169:10:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2034,
                        "src": "14150:29:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Execution[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2030,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2029,
                              "name": "Execution",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4075,
                              "src": "14150:9:11"
                            },
                            "referencedDeclaration": 4075,
                            "src": "14150:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                              "typeString": "struct Execution"
                            }
                          },
                          "id": 2031,
                          "nodeType": "ArrayTypeName",
                          "src": "14150:11:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_storage_$dyn_storage_ptr",
                            "typeString": "struct Execution[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "14118:62:11"
                  },
                  "scope": 2144,
                  "src": "13718:463:11",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2035,
                    "nodeType": "StructuredDocumentation",
                    "src": "14187:1397:11",
                    "text": " @notice Match an arbitrary number of orders, each with an arbitrary\n         number of items for offer and consideration along with as set of\n         fulfillments allocating offer components to consideration\n         components. Note that this function does not support\n         criteria-based or partial filling of orders (though filling the\n         remainder of a partially-filled order is supported).\n @param orders       The orders to match. Note that both the offerer and\n                     fulfiller on each order must first approve this\n                     contract (or their conduit if indicated by the order)\n                     to transfer any relevant tokens on their behalf and\n                     each consideration recipient must implement\n                     `onERC1155Received` to enable ERC1155 token receipt.\n @param fulfillments An array of elements allocating offer components to\n                     consideration components. Note that each\n                     consideration component must be fully met for the\n                     match operation to be valid.\n @return executions An array of elements indicating the sequence of\n                    transfers performed as part of matching the given\n                    orders."
                  },
                  "functionSelector": "a8174404",
                  "id": 2050,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "matchOrders",
                  "nameLocation": "15598:11:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2044,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2039,
                        "mutability": "mutable",
                        "name": "orders",
                        "nameLocation": "15636:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2050,
                        "src": "15619:23:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct Order[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2037,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2036,
                              "name": "Order",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4019,
                              "src": "15619:5:11"
                            },
                            "referencedDeclaration": 4019,
                            "src": "15619:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Order_$4019_storage_ptr",
                              "typeString": "struct Order"
                            }
                          },
                          "id": 2038,
                          "nodeType": "ArrayTypeName",
                          "src": "15619:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Order_$4019_storage_$dyn_storage_ptr",
                            "typeString": "struct Order[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2043,
                        "mutability": "mutable",
                        "name": "fulfillments",
                        "nameLocation": "15675:12:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2050,
                        "src": "15652:35:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct Fulfillment[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2041,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2040,
                              "name": "Fulfillment",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4062,
                              "src": "15652:11:11"
                            },
                            "referencedDeclaration": 4062,
                            "src": "15652:11:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Fulfillment_$4062_storage_ptr",
                              "typeString": "struct Fulfillment"
                            }
                          },
                          "id": 2042,
                          "nodeType": "ArrayTypeName",
                          "src": "15652:13:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_storage_$dyn_storage_ptr",
                            "typeString": "struct Fulfillment[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15609:84:11"
                  },
                  "returnParameters": {
                    "id": 2049,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2048,
                        "mutability": "mutable",
                        "name": "executions",
                        "nameLocation": "15739:10:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2050,
                        "src": "15720:29:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Execution[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2046,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2045,
                              "name": "Execution",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4075,
                              "src": "15720:9:11"
                            },
                            "referencedDeclaration": 4075,
                            "src": "15720:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                              "typeString": "struct Execution"
                            }
                          },
                          "id": 2047,
                          "nodeType": "ArrayTypeName",
                          "src": "15720:11:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_storage_$dyn_storage_ptr",
                            "typeString": "struct Execution[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15719:31:11"
                  },
                  "scope": 2144,
                  "src": "15589:162:11",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2051,
                    "nodeType": "StructuredDocumentation",
                    "src": "15757:2428:11",
                    "text": " @notice Match an arbitrary number of full or partial orders, each with an\n         arbitrary number of items for offer and consideration, supplying\n         criteria resolvers containing specific token identifiers and\n         associated proofs as well as fulfillments allocating offer\n         components to consideration components.\n @param orders            The advanced orders to match. Note that both the\n                          offerer and fulfiller on each order must first\n                          approve this contract (or a preferred conduit if\n                          indicated by the order) to transfer any relevant\n                          tokens on their behalf and each consideration\n                          recipient must implement `onERC1155Received` in\n                          order toreceive ERC1155 tokens. Also note that\n                          the offer and consideration components for each\n                          order must have no remainder after multiplying\n                          the respective amount with the supplied fraction\n                          in order for the group of partial fills to be\n                          considered valid.\n @param criteriaResolvers An array where each element contains a reference\n                          to a specific order as well as that order's\n                          offer or consideration, a token identifier, and\n                          a proof that the supplied token identifier is\n                          contained in the order's merkle root. Note that\n                          an empty root indicates that any (transferrable)\n                          token identifier is valid and that no associated\n                          proof needs to be supplied.\n @param fulfillments      An array of elements allocating offer components\n                          to consideration components. Note that each\n                          consideration component must be fully met in\n                          order for the match operation to be valid.\n @return executions An array of elements indicating the sequence of\n                    transfers performed as part of matching the given\n                    orders."
                  },
                  "functionSelector": "55944a42",
                  "id": 2070,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "matchAdvancedOrders",
                  "nameLocation": "18199:19:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2064,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2055,
                        "mutability": "mutable",
                        "name": "orders",
                        "nameLocation": "18253:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2070,
                        "src": "18228:31:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct AdvancedOrder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2053,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2052,
                              "name": "AdvancedOrder",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4031,
                              "src": "18228:13:11"
                            },
                            "referencedDeclaration": 4031,
                            "src": "18228:13:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                              "typeString": "struct AdvancedOrder"
                            }
                          },
                          "id": 2054,
                          "nodeType": "ArrayTypeName",
                          "src": "18228:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                            "typeString": "struct AdvancedOrder[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2059,
                        "mutability": "mutable",
                        "name": "criteriaResolvers",
                        "nameLocation": "18297:17:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2070,
                        "src": "18269:45:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct CriteriaResolver[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2057,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2056,
                              "name": "CriteriaResolver",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4053,
                              "src": "18269:16:11"
                            },
                            "referencedDeclaration": 4053,
                            "src": "18269:16:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                              "typeString": "struct CriteriaResolver"
                            }
                          },
                          "id": 2058,
                          "nodeType": "ArrayTypeName",
                          "src": "18269:18:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_storage_$dyn_storage_ptr",
                            "typeString": "struct CriteriaResolver[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2063,
                        "mutability": "mutable",
                        "name": "fulfillments",
                        "nameLocation": "18347:12:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2070,
                        "src": "18324:35:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct Fulfillment[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2061,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2060,
                              "name": "Fulfillment",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4062,
                              "src": "18324:11:11"
                            },
                            "referencedDeclaration": 4062,
                            "src": "18324:11:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Fulfillment_$4062_storage_ptr",
                              "typeString": "struct Fulfillment"
                            }
                          },
                          "id": 2062,
                          "nodeType": "ArrayTypeName",
                          "src": "18324:13:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_storage_$dyn_storage_ptr",
                            "typeString": "struct Fulfillment[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18218:147:11"
                  },
                  "returnParameters": {
                    "id": 2069,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2068,
                        "mutability": "mutable",
                        "name": "executions",
                        "nameLocation": "18411:10:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2070,
                        "src": "18392:29:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Execution[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2066,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2065,
                              "name": "Execution",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4075,
                              "src": "18392:9:11"
                            },
                            "referencedDeclaration": 4075,
                            "src": "18392:9:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                              "typeString": "struct Execution"
                            }
                          },
                          "id": 2067,
                          "nodeType": "ArrayTypeName",
                          "src": "18392:11:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_storage_$dyn_storage_ptr",
                            "typeString": "struct Execution[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18391:31:11"
                  },
                  "scope": 2144,
                  "src": "18190:233:11",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2071,
                    "nodeType": "StructuredDocumentation",
                    "src": "18429:508:11",
                    "text": " @notice Cancel an arbitrary number of orders. Note that only the offerer\n         or the zone of a given order may cancel it. Callers should ensure\n         that the intended order was cancelled by calling `getOrderStatus`\n         and confirming that `isCancelled` returns `true`.\n @param orders The orders to cancel.\n @return cancelled A boolean indicating whether the supplied orders have\n                   been successfully cancelled."
                  },
                  "functionSelector": "fd9f1e10",
                  "id": 2080,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "cancel",
                  "nameLocation": "18951:6:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2076,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2075,
                        "mutability": "mutable",
                        "name": "orders",
                        "nameLocation": "18985:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2080,
                        "src": "18958:33:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_OrderComponents_$3892_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct OrderComponents[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2073,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2072,
                              "name": "OrderComponents",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 3892,
                              "src": "18958:15:11"
                            },
                            "referencedDeclaration": 3892,
                            "src": "18958:15:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OrderComponents_$3892_storage_ptr",
                              "typeString": "struct OrderComponents"
                            }
                          },
                          "id": 2074,
                          "nodeType": "ArrayTypeName",
                          "src": "18958:17:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_OrderComponents_$3892_storage_$dyn_storage_ptr",
                            "typeString": "struct OrderComponents[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18957:35:11"
                  },
                  "returnParameters": {
                    "id": 2079,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2078,
                        "mutability": "mutable",
                        "name": "cancelled",
                        "nameLocation": "19032:9:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2080,
                        "src": "19027:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2077,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "19027:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19026:16:11"
                  },
                  "scope": 2144,
                  "src": "18942:101:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2081,
                    "nodeType": "StructuredDocumentation",
                    "src": "19049:829:11",
                    "text": " @notice Validate an arbitrary number of orders, thereby registering their\n         signatures as valid and allowing the fulfiller to skip signature\n         verification on fulfillment. Note that validated orders may still\n         be unfulfillable due to invalid item amounts or other factors;\n         callers should determine whether validated orders are fulfillable\n         by simulating the fulfillment call prior to execution. Also note\n         that anyone can validate a signed order, but only the offerer can\n         validate an order without supplying a signature.\n @param orders The orders to validate.\n @return validated A boolean indicating whether the supplied orders have\n                   been successfully validated."
                  },
                  "functionSelector": "88147732",
                  "id": 2090,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "validate",
                  "nameLocation": "19892:8:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2086,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2085,
                        "mutability": "mutable",
                        "name": "orders",
                        "nameLocation": "19918:6:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2090,
                        "src": "19901:23:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct Order[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2083,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2082,
                              "name": "Order",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4019,
                              "src": "19901:5:11"
                            },
                            "referencedDeclaration": 4019,
                            "src": "19901:5:11",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Order_$4019_storage_ptr",
                              "typeString": "struct Order"
                            }
                          },
                          "id": 2084,
                          "nodeType": "ArrayTypeName",
                          "src": "19901:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Order_$4019_storage_$dyn_storage_ptr",
                            "typeString": "struct Order[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19900:25:11"
                  },
                  "returnParameters": {
                    "id": 2089,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2088,
                        "mutability": "mutable",
                        "name": "validated",
                        "nameLocation": "19965:9:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2090,
                        "src": "19960:14:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2087,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "19960:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19959:16:11"
                  },
                  "scope": 2144,
                  "src": "19883:93:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2091,
                    "nodeType": "StructuredDocumentation",
                    "src": "19982:244:11",
                    "text": " @notice Cancel all orders from a given offerer with a given zone in bulk\n         by incrementing a nonce. Note that only the offerer may increment\n         the nonce.\n @return newNonce The new nonce."
                  },
                  "functionSelector": "627cdcb9",
                  "id": 2096,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "incrementNonce",
                  "nameLocation": "20240:14:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2092,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20254:2:11"
                  },
                  "returnParameters": {
                    "id": 2095,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2094,
                        "mutability": "mutable",
                        "name": "newNonce",
                        "nameLocation": "20283:8:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2096,
                        "src": "20275:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2093,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20275:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20274:18:11"
                  },
                  "scope": 2144,
                  "src": "20231:62:11",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2097,
                    "nodeType": "StructuredDocumentation",
                    "src": "20299:173:11",
                    "text": " @notice Retrieve the order hash for a given order.\n @param order The components of the order.\n @return orderHash The order hash."
                  },
                  "functionSelector": "79df72bd",
                  "id": 2105,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getOrderHash",
                  "nameLocation": "20486:12:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2101,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2100,
                        "mutability": "mutable",
                        "name": "order",
                        "nameLocation": "20524:5:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2105,
                        "src": "20499:30:11",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                          "typeString": "struct OrderComponents"
                        },
                        "typeName": {
                          "id": 2099,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2098,
                            "name": "OrderComponents",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3892,
                            "src": "20499:15:11"
                          },
                          "referencedDeclaration": 3892,
                          "src": "20499:15:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_OrderComponents_$3892_storage_ptr",
                            "typeString": "struct OrderComponents"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20498:32:11"
                  },
                  "returnParameters": {
                    "id": 2104,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2103,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "20586:9:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2105,
                        "src": "20578:17:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2102,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "20578:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20577:19:11"
                  },
                  "scope": 2144,
                  "src": "20477:120:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2106,
                    "nodeType": "StructuredDocumentation",
                    "src": "20603:876:11",
                    "text": " @notice Retrieve the status of a given order by hash, including whether\n         the order has been cancelled or validated and the fraction of the\n         order that has been filled.\n @param orderHash The order hash in question.\n @return isValidated A boolean indicating whether the order in question\n                     has been validated (i.e. previously approved or\n                     partially filled).\n @return isCancelled A boolean indicating whether the order in question\n                     has been cancelled.\n @return totalFilled The total portion of the order that has been filled\n                     (i.e. the \"numerator\").\n @return totalSize   The total size of the order that is either filled or\n                     unfilled (i.e. the \"denominator\")."
                  },
                  "functionSelector": "46423aa7",
                  "id": 2119,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getOrderStatus",
                  "nameLocation": "21493:14:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2109,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2108,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "21516:9:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2119,
                        "src": "21508:17:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2107,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "21508:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21507:19:11"
                  },
                  "returnParameters": {
                    "id": 2118,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2111,
                        "mutability": "mutable",
                        "name": "isValidated",
                        "nameLocation": "21592:11:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2119,
                        "src": "21587:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2110,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "21587:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2113,
                        "mutability": "mutable",
                        "name": "isCancelled",
                        "nameLocation": "21622:11:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2119,
                        "src": "21617:16:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2112,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "21617:4:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2115,
                        "mutability": "mutable",
                        "name": "totalFilled",
                        "nameLocation": "21655:11:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2119,
                        "src": "21647:19:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2114,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21647:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2117,
                        "mutability": "mutable",
                        "name": "totalSize",
                        "nameLocation": "21688:9:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2119,
                        "src": "21680:17:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2116,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21680:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21573:134:11"
                  },
                  "scope": 2144,
                  "src": "21484:224:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2120,
                    "nodeType": "StructuredDocumentation",
                    "src": "21714:175:11",
                    "text": " @notice Retrieve the current nonce for a given offerer.\n @param offerer The offerer in question.\n @return nonce The current nonce."
                  },
                  "functionSelector": "2d0335ab",
                  "id": 2127,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getNonce",
                  "nameLocation": "21903:8:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2123,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2122,
                        "mutability": "mutable",
                        "name": "offerer",
                        "nameLocation": "21920:7:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2127,
                        "src": "21912:15:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2121,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21912:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21911:17:11"
                  },
                  "returnParameters": {
                    "id": 2126,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2125,
                        "mutability": "mutable",
                        "name": "nonce",
                        "nameLocation": "21960:5:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2127,
                        "src": "21952:13:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2124,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "21952:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21951:15:11"
                  },
                  "scope": 2144,
                  "src": "21894:73:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2128,
                    "nodeType": "StructuredDocumentation",
                    "src": "21973:294:11",
                    "text": " @notice Retrieve configuration information for this contract.\n @return version           The contract version.\n @return domainSeparator   The domain separator for this contract.\n @return conduitController The conduit Controller set for this contract."
                  },
                  "functionSelector": "f47b7740",
                  "id": 2137,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "information",
                  "nameLocation": "22281:11:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2129,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22292:2:11"
                  },
                  "returnParameters": {
                    "id": 2136,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2131,
                        "mutability": "mutable",
                        "name": "version",
                        "nameLocation": "22369:7:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2137,
                        "src": "22355:21:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2130,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "22355:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2133,
                        "mutability": "mutable",
                        "name": "domainSeparator",
                        "nameLocation": "22398:15:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2137,
                        "src": "22390:23:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2132,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "22390:7:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2135,
                        "mutability": "mutable",
                        "name": "conduitController",
                        "nameLocation": "22435:17:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2137,
                        "src": "22427:25:11",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2134,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22427:7:11",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22341:121:11"
                  },
                  "scope": 2144,
                  "src": "22272:191:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "documentation": {
                    "id": 2138,
                    "nodeType": "StructuredDocumentation",
                    "src": "22469:124:11",
                    "text": " @notice Retrieve the name of this contract.\n @return contractName The name of this contract."
                  },
                  "functionSelector": "06fdde03",
                  "id": 2143,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "name",
                  "nameLocation": "22607:4:11",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2139,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22611:2:11"
                  },
                  "returnParameters": {
                    "id": 2142,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2141,
                        "mutability": "mutable",
                        "name": "contractName",
                        "nameLocation": "22651:12:11",
                        "nodeType": "VariableDeclaration",
                        "scope": 2143,
                        "src": "22637:26:11",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 2140,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "22637:6:11",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22636:28:11"
                  },
                  "scope": 2144,
                  "src": "22598:67:11",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2145,
              "src": "771:21896:11",
              "usedErrors": []
            }
          ],
          "src": "32:22636:11"
        },
        "id": 11
      },
      "seaport/contracts/interfaces/CriteriaResolutionErrors.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/interfaces/CriteriaResolutionErrors.sol",
          "exportedSymbols": {
            "CriteriaResolutionErrors": [
              2169
            ]
          },
          "id": 2170,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2146,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:12"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "CriteriaResolutionErrors",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2147,
                "nodeType": "StructuredDocumentation",
                "src": "58:157:12",
                "text": " @title CriteriaResolutionErrors\n @author 0age\n @notice CriteriaResolutionErrors contains all errors related to criteria\n         resolution."
              },
              "fullyImplemented": true,
              "id": 2169,
              "linearizedBaseContracts": [
                2169
              ],
              "name": "CriteriaResolutionErrors",
              "nameLocation": "226:24:12",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2148,
                    "nodeType": "StructuredDocumentation",
                    "src": "257:143:12",
                    "text": " @dev Revert with an error when providing a criteria resolver that refers\n      to an order that has not been supplied."
                  },
                  "errorSelector": "869586c4",
                  "id": 2150,
                  "name": "OrderCriteriaResolverOutOfRange",
                  "nameLocation": "411:31:12",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2149,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "442:2:12"
                  },
                  "src": "405:40:12"
                },
                {
                  "documentation": {
                    "id": 2151,
                    "nodeType": "StructuredDocumentation",
                    "src": "451:142:12",
                    "text": " @dev Revert with an error if an offer item still has unresolved criteria\n      after applying all criteria resolvers."
                  },
                  "errorSelector": "a6cfc673",
                  "id": 2153,
                  "name": "UnresolvedOfferCriteria",
                  "nameLocation": "604:23:12",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2152,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "627:2:12"
                  },
                  "src": "598:32:12"
                },
                {
                  "documentation": {
                    "id": 2154,
                    "nodeType": "StructuredDocumentation",
                    "src": "636:149:12",
                    "text": " @dev Revert with an error if a consideration item still has unresolved\n      criteria after applying all criteria resolvers."
                  },
                  "errorSelector": "ff75a340",
                  "id": 2156,
                  "name": "UnresolvedConsiderationCriteria",
                  "nameLocation": "796:31:12",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2155,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "827:2:12"
                  },
                  "src": "790:40:12"
                },
                {
                  "documentation": {
                    "id": 2157,
                    "nodeType": "StructuredDocumentation",
                    "src": "836:162:12",
                    "text": " @dev Revert with an error when providing a criteria resolver that refers\n      to an order with an offer item that has not been supplied."
                  },
                  "errorSelector": "bfb3f8ce",
                  "id": 2159,
                  "name": "OfferCriteriaResolverOutOfRange",
                  "nameLocation": "1009:31:12",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2158,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1040:2:12"
                  },
                  "src": "1003:40:12"
                },
                {
                  "documentation": {
                    "id": 2160,
                    "nodeType": "StructuredDocumentation",
                    "src": "1049:169:12",
                    "text": " @dev Revert with an error when providing a criteria resolver that refers\n      to an order with a consideration item that has not been supplied."
                  },
                  "errorSelector": "6088d7de",
                  "id": 2162,
                  "name": "ConsiderationCriteriaResolverOutOfRange",
                  "nameLocation": "1229:39:12",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2161,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1268:2:12"
                  },
                  "src": "1223:48:12"
                },
                {
                  "documentation": {
                    "id": 2163,
                    "nodeType": "StructuredDocumentation",
                    "src": "1277:188:12",
                    "text": " @dev Revert with an error when providing a criteria resolver that refers\n      to an order with an item that does not expect a criteria to be\n      resolved."
                  },
                  "errorSelector": "94eb6af6",
                  "id": 2165,
                  "name": "CriteriaNotEnabledForItem",
                  "nameLocation": "1476:25:12",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2164,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1501:2:12"
                  },
                  "src": "1470:34:12"
                },
                {
                  "documentation": {
                    "id": 2166,
                    "nodeType": "StructuredDocumentation",
                    "src": "1510:188:12",
                    "text": " @dev Revert with an error when providing a criteria resolver that\n      contains an invalid proof with respect to the given item and\n      chosen identifier."
                  },
                  "errorSelector": "09bde339",
                  "id": 2168,
                  "name": "InvalidProof",
                  "nameLocation": "1709:12:12",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2167,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1721:2:12"
                  },
                  "src": "1703:21:12"
                }
              ],
              "scope": 2170,
              "src": "216:1510:12",
              "usedErrors": [
                2150,
                2153,
                2156,
                2159,
                2162,
                2165,
                2168
              ]
            }
          ],
          "src": "32:1695:12"
        },
        "id": 12
      },
      "seaport/contracts/interfaces/EIP1271Interface.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/interfaces/EIP1271Interface.sol",
          "exportedSymbols": {
            "EIP1271Interface": [
              2181
            ]
          },
          "id": 2182,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2171,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:13"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "EIP1271Interface",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 2181,
              "linearizedBaseContracts": [
                2181
              ],
              "name": "EIP1271Interface",
              "nameLocation": "68:16:13",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "1626ba7e",
                  "id": 2180,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidSignature",
                  "nameLocation": "100:16:13",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2176,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2173,
                        "mutability": "mutable",
                        "name": "digest",
                        "nameLocation": "125:6:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2180,
                        "src": "117:14:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2172,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "117:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2175,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "148:9:13",
                        "nodeType": "VariableDeclaration",
                        "scope": 2180,
                        "src": "133:24:13",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 2174,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "133:5:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "116:42:13"
                  },
                  "returnParameters": {
                    "id": 2179,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2178,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2180,
                        "src": "206:6:13",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 2177,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "206:6:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "205:8:13"
                  },
                  "scope": 2181,
                  "src": "91:123:13",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2182,
              "src": "58:158:13",
              "usedErrors": []
            }
          ],
          "src": "32:185:13"
        },
        "id": 13
      },
      "seaport/contracts/interfaces/FulfillmentApplicationErrors.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/interfaces/FulfillmentApplicationErrors.sol",
          "exportedSymbols": {
            "FulfillmentApplicationErrors": [
              2202
            ],
            "Side": [
              3857
            ]
          },
          "id": 2203,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2183,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:14"
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationEnums.sol",
              "file": "../lib/ConsiderationEnums.sol",
              "id": 2185,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2203,
              "sourceUnit": 3858,
              "src": "58:53:14",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2184,
                    "name": "Side",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3857,
                    "src": "67:4:14",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "FulfillmentApplicationErrors",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2186,
                "nodeType": "StructuredDocumentation",
                "src": "113:181:14",
                "text": " @title FulfillmentApplicationErrors\n @author 0age\n @notice FulfillmentApplicationErrors contains errors related to fulfillment\n         application and aggregation."
              },
              "fullyImplemented": true,
              "id": 2202,
              "linearizedBaseContracts": [
                2202
              ],
              "name": "FulfillmentApplicationErrors",
              "nameLocation": "305:28:14",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2187,
                    "nodeType": "StructuredDocumentation",
                    "src": "340:192:14",
                    "text": " @dev Revert with an error when a fulfillment is provided as part of an\n      call to fulfill available orders that does not declare at least one\n      component."
                  },
                  "errorSelector": "375c24c1",
                  "id": 2192,
                  "name": "MissingFulfillmentComponentOnAggregation",
                  "nameLocation": "543:40:14",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2191,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2190,
                        "mutability": "mutable",
                        "name": "side",
                        "nameLocation": "589:4:14",
                        "nodeType": "VariableDeclaration",
                        "scope": 2192,
                        "src": "584:9:14",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Side_$3857",
                          "typeString": "enum Side"
                        },
                        "typeName": {
                          "id": 2189,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2188,
                            "name": "Side",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3857,
                            "src": "584:4:14"
                          },
                          "referencedDeclaration": 3857,
                          "src": "584:4:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Side_$3857",
                            "typeString": "enum Side"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "583:11:14"
                  },
                  "src": "537:58:14"
                },
                {
                  "documentation": {
                    "id": 2193,
                    "nodeType": "StructuredDocumentation",
                    "src": "601:192:14",
                    "text": " @dev Revert with an error when a fulfillment is provided that does not\n      declare at least one offer component and at least one consideration\n      component."
                  },
                  "errorSelector": "98e9db6e",
                  "id": 2195,
                  "name": "OfferAndConsiderationRequiredOnFulfillment",
                  "nameLocation": "804:42:14",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2194,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "846:2:14"
                  },
                  "src": "798:51:14"
                },
                {
                  "documentation": {
                    "id": 2196,
                    "nodeType": "StructuredDocumentation",
                    "src": "855:230:14",
                    "text": " @dev Revert with an error when the initial offer item named by a\n      fulfillment component does not match the type, token, identifier,\n      or conduit preference of the initial consideration item."
                  },
                  "errorSelector": "09cfb455",
                  "id": 2198,
                  "name": "MismatchedFulfillmentOfferAndConsiderationComponents",
                  "nameLocation": "1096:52:14",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2197,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1148:2:14"
                  },
                  "src": "1090:61:14"
                },
                {
                  "documentation": {
                    "id": 2199,
                    "nodeType": "StructuredDocumentation",
                    "src": "1157:241:14",
                    "text": " @dev Revert with an error when an order or item index are out of range\n      or a fulfillment component does not match the type, token,\n      identifier, or conduit preference of the initial consideration item."
                  },
                  "errorSelector": "7fda7279",
                  "id": 2201,
                  "name": "InvalidFulfillmentComponentData",
                  "nameLocation": "1409:31:14",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2200,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1440:2:14"
                  },
                  "src": "1403:40:14"
                }
              ],
              "scope": 2203,
              "src": "295:1150:14",
              "usedErrors": [
                2192,
                2195,
                2198,
                2201
              ]
            }
          ],
          "src": "32:1414:14"
        },
        "id": 14
      },
      "seaport/contracts/interfaces/ReentrancyErrors.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/interfaces/ReentrancyErrors.sol",
          "exportedSymbols": {
            "ReentrancyErrors": [
              2209
            ]
          },
          "id": 2210,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2204,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:15"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ReentrancyErrors",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2205,
                "nodeType": "StructuredDocumentation",
                "src": "58:117:15",
                "text": " @title ReentrancyErrors\n @author 0age\n @notice ReentrancyErrors contains errors related to reentrancy."
              },
              "fullyImplemented": true,
              "id": 2209,
              "linearizedBaseContracts": [
                2209
              ],
              "name": "ReentrancyErrors",
              "nameLocation": "186:16:15",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2206,
                    "nodeType": "StructuredDocumentation",
                    "src": "209:112:15",
                    "text": " @dev Revert with an error when a caller attempts to reenter a protected\n      function."
                  },
                  "errorSelector": "7fa8a987",
                  "id": 2208,
                  "name": "NoReentrantCalls",
                  "nameLocation": "332:16:15",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2207,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "348:2:15"
                  },
                  "src": "326:25:15"
                }
              ],
              "scope": 2210,
              "src": "176:177:15",
              "usedErrors": [
                2208
              ]
            }
          ],
          "src": "32:322:15"
        },
        "id": 15
      },
      "seaport/contracts/interfaces/SignatureVerificationErrors.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/interfaces/SignatureVerificationErrors.sol",
          "exportedSymbols": {
            "SignatureVerificationErrors": [
              2227
            ]
          },
          "id": 2228,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2211,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:16"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "SignatureVerificationErrors",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2212,
                "nodeType": "StructuredDocumentation",
                "src": "58:166:16",
                "text": " @title SignatureVerificationErrors\n @author 0age\n @notice SignatureVerificationErrors contains all errors related to signature\n         verification."
              },
              "fullyImplemented": true,
              "id": 2227,
              "linearizedBaseContracts": [
                2227
              ],
              "name": "SignatureVerificationErrors",
              "nameLocation": "235:27:16",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2213,
                    "nodeType": "StructuredDocumentation",
                    "src": "269:180:16",
                    "text": " @dev Revert with an error when a signature that does not contain a v\n      value of 27 or 28 has been supplied.\n @param v The invalid v value."
                  },
                  "errorSelector": "1f003d0a",
                  "id": 2217,
                  "name": "BadSignatureV",
                  "nameLocation": "460:13:16",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2216,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2215,
                        "mutability": "mutable",
                        "name": "v",
                        "nameLocation": "480:1:16",
                        "nodeType": "VariableDeclaration",
                        "scope": 2217,
                        "src": "474:7:16",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "typeName": {
                          "id": 2214,
                          "name": "uint8",
                          "nodeType": "ElementaryTypeName",
                          "src": "474:5:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "473:9:16"
                  },
                  "src": "454:29:16"
                },
                {
                  "documentation": {
                    "id": 2218,
                    "nodeType": "StructuredDocumentation",
                    "src": "489:239:16",
                    "text": " @dev Revert with an error when the signer recovered by the supplied\n      signature does not match the offerer or an allowed EIP-1271 signer\n      as specified by the offerer in the event they are a contract."
                  },
                  "errorSelector": "815e1d64",
                  "id": 2220,
                  "name": "InvalidSigner",
                  "nameLocation": "739:13:16",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2219,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "752:2:16"
                  },
                  "src": "733:22:16"
                },
                {
                  "documentation": {
                    "id": 2221,
                    "nodeType": "StructuredDocumentation",
                    "src": "761:119:16",
                    "text": " @dev Revert with an error when a signer cannot be recovered from the\n      supplied signature."
                  },
                  "errorSelector": "8baa579f",
                  "id": 2223,
                  "name": "InvalidSignature",
                  "nameLocation": "891:16:16",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2222,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "907:2:16"
                  },
                  "src": "885:25:16"
                },
                {
                  "documentation": {
                    "id": 2224,
                    "nodeType": "StructuredDocumentation",
                    "src": "916:87:16",
                    "text": " @dev Revert with an error when an EIP-1271 call to an account fails."
                  },
                  "errorSelector": "4f7fb80d",
                  "id": 2226,
                  "name": "BadContractSignature",
                  "nameLocation": "1014:20:16",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2225,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1034:2:16"
                  },
                  "src": "1008:29:16"
                }
              ],
              "scope": 2228,
              "src": "225:814:16",
              "usedErrors": [
                2217,
                2220,
                2223,
                2226
              ]
            }
          ],
          "src": "32:1008:16"
        },
        "id": 16
      },
      "seaport/contracts/interfaces/TokenTransferrerErrors.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/interfaces/TokenTransferrerErrors.sol",
          "exportedSymbols": {
            "TokenTransferrerErrors": [
              2281
            ]
          },
          "id": 2282,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2229,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:17"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "TokenTransferrerErrors",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2230,
                "nodeType": "StructuredDocumentation",
                "src": "58:40:17",
                "text": " @title TokenTransferrerErrors"
              },
              "fullyImplemented": true,
              "id": 2281,
              "linearizedBaseContracts": [
                2281
              ],
              "name": "TokenTransferrerErrors",
              "nameLocation": "109:22:17",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2231,
                    "nodeType": "StructuredDocumentation",
                    "src": "138:121:17",
                    "text": " @dev Revert with an error when an ERC721 transfer with amount other than\n      one is attempted."
                  },
                  "errorSelector": "efcc00b1",
                  "id": 2233,
                  "name": "InvalidERC721TransferAmount",
                  "nameLocation": "270:27:17",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2232,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "297:2:17"
                  },
                  "src": "264:36:17"
                },
                {
                  "documentation": {
                    "id": 2234,
                    "nodeType": "StructuredDocumentation",
                    "src": "306:129:17",
                    "text": " @dev Revert with an error when attempting to fulfill an order where an\n      item has an amount of zero."
                  },
                  "errorSelector": "91b3e514",
                  "id": 2236,
                  "name": "MissingItemAmount",
                  "nameLocation": "446:17:17",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2235,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "463:2:17"
                  },
                  "src": "440:26:17"
                },
                {
                  "documentation": {
                    "id": 2237,
                    "nodeType": "StructuredDocumentation",
                    "src": "472:455:17",
                    "text": " @dev Revert with an error when an ERC20, ERC721, or ERC1155 token\n      transfer reverts.\n @param token      The token for which the transfer was attempted.\n @param from       The source of the attempted transfer.\n @param to         The recipient of the attempted transfer.\n @param identifier The identifier for the attempted transfer.\n @param amount     The amount for the attempted transfer."
                  },
                  "errorSelector": "f486bc87",
                  "id": 2249,
                  "name": "TokenTransferGenericFailure",
                  "nameLocation": "938:27:17",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2248,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2239,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "983:5:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2249,
                        "src": "975:13:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2238,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "975:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2241,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "1006:4:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2249,
                        "src": "998:12:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2240,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "998:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2243,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "1028:2:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2249,
                        "src": "1020:10:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2242,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1020:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2245,
                        "mutability": "mutable",
                        "name": "identifier",
                        "nameLocation": "1048:10:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2249,
                        "src": "1040:18:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2244,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1040:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2247,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "1076:6:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2249,
                        "src": "1068:14:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2246,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1068:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "965:123:17"
                  },
                  "src": "932:157:17"
                },
                {
                  "documentation": {
                    "id": 2250,
                    "nodeType": "StructuredDocumentation",
                    "src": "1095:437:17",
                    "text": " @dev Revert with an error when a batch ERC1155 token transfer reverts.\n @param token       The token for which the transfer was attempted.\n @param from        The source of the attempted transfer.\n @param to          The recipient of the attempted transfer.\n @param identifiers The identifiers for the attempted transfer.\n @param amounts     The amounts for the attempted transfer."
                  },
                  "errorSelector": "afc445e2",
                  "id": 2264,
                  "name": "ERC1155BatchTransferGenericFailure",
                  "nameLocation": "1543:34:17",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2263,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2252,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "1595:5:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2264,
                        "src": "1587:13:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2251,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1587:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2254,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "1618:4:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2264,
                        "src": "1610:12:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2253,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1610:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2256,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "1640:2:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2264,
                        "src": "1632:10:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2255,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1632:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2259,
                        "mutability": "mutable",
                        "name": "identifiers",
                        "nameLocation": "1662:11:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2264,
                        "src": "1652:21:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2257,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1652:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2258,
                          "nodeType": "ArrayTypeName",
                          "src": "1652:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2262,
                        "mutability": "mutable",
                        "name": "amounts",
                        "nameLocation": "1693:7:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2264,
                        "src": "1683:17:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2260,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1683:7:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2261,
                          "nodeType": "ArrayTypeName",
                          "src": "1683:9:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                            "typeString": "uint256[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1577:129:17"
                  },
                  "src": "1537:170:17"
                },
                {
                  "documentation": {
                    "id": 2265,
                    "nodeType": "StructuredDocumentation",
                    "src": "1713:406:17",
                    "text": " @dev Revert with an error when an ERC20 token transfer returns a falsey\n      value.\n @param token      The token for which the ERC20 transfer was attempted.\n @param from       The source of the attempted ERC20 transfer.\n @param to         The recipient of the attempted ERC20 transfer.\n @param amount     The amount for the attempted ERC20 transfer."
                  },
                  "errorSelector": "98891923",
                  "id": 2275,
                  "name": "BadReturnValueFromERC20OnTransfer",
                  "nameLocation": "2130:33:17",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2274,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2267,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "2181:5:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2275,
                        "src": "2173:13:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2266,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2173:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2269,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2204:4:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2275,
                        "src": "2196:12:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2268,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2196:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2271,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "2226:2:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2275,
                        "src": "2218:10:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2270,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2218:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2273,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "2246:6:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2275,
                        "src": "2238:14:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2272,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2238:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2163:95:17"
                  },
                  "src": "2124:135:17"
                },
                {
                  "documentation": {
                    "id": 2276,
                    "nodeType": "StructuredDocumentation",
                    "src": "2265:215:17",
                    "text": " @dev Revert with an error when an account being called as an assumed\n      contract does not have code and returns no data.\n @param account The account that should contain code."
                  },
                  "errorSelector": "5f15d672",
                  "id": 2280,
                  "name": "NoContract",
                  "nameLocation": "2491:10:17",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2279,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2278,
                        "mutability": "mutable",
                        "name": "account",
                        "nameLocation": "2510:7:17",
                        "nodeType": "VariableDeclaration",
                        "scope": 2280,
                        "src": "2502:15:17",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2277,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2502:7:17",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2501:17:17"
                  },
                  "src": "2485:34:17"
                }
              ],
              "scope": 2282,
              "src": "99:2422:17",
              "usedErrors": [
                2233,
                2236,
                2249,
                2264,
                2275,
                2280
              ]
            }
          ],
          "src": "32:2490:17"
        },
        "id": 17
      },
      "seaport/contracts/interfaces/ZoneInteractionErrors.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/interfaces/ZoneInteractionErrors.sol",
          "exportedSymbols": {
            "ZoneInteractionErrors": [
              2290
            ]
          },
          "id": 2291,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2283,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:18"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ZoneInteractionErrors",
              "contractDependencies": [],
              "contractKind": "interface",
              "documentation": {
                "id": 2284,
                "nodeType": "StructuredDocumentation",
                "src": "58:133:18",
                "text": " @title ZoneInteractionErrors\n @author 0age\n @notice ZoneInteractionErrors contains errors related to zone interaction."
              },
              "fullyImplemented": true,
              "id": 2290,
              "linearizedBaseContracts": [
                2290
              ],
              "name": "ZoneInteractionErrors",
              "nameLocation": "202:21:18",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "documentation": {
                    "id": 2285,
                    "nodeType": "StructuredDocumentation",
                    "src": "230:392:18",
                    "text": " @dev Revert with an error when attempting to fill an order that specifies\n      a restricted submitter as its order type when not submitted by\n      either the offerrer or the order's zone or approved as valid by the\n      zone in question via a staticcall to `isValidOrder`.\n @param orderHash The order hash for the invalid restricted order."
                  },
                  "errorSelector": "fb5014fc",
                  "id": 2289,
                  "name": "InvalidRestrictedOrder",
                  "nameLocation": "633:22:18",
                  "nodeType": "ErrorDefinition",
                  "parameters": {
                    "id": 2288,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2287,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "664:9:18",
                        "nodeType": "VariableDeclaration",
                        "scope": 2289,
                        "src": "656:17:18",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2286,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "656:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "655:19:18"
                  },
                  "src": "627:48:18"
                }
              ],
              "scope": 2291,
              "src": "192:485:18",
              "usedErrors": [
                2289
              ]
            }
          ],
          "src": "32:646:18"
        },
        "id": 18
      },
      "seaport/contracts/interfaces/ZoneInterface.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/interfaces/ZoneInterface.sol",
          "exportedSymbols": {
            "AdvancedOrder": [
              4031
            ],
            "CriteriaResolver": [
              4053
            ],
            "ZoneInterface": [
              2328
            ]
          },
          "id": 2329,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2292,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:19"
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationStructs.sol",
              "file": "../lib/ConsiderationStructs.sol",
              "id": 2295,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2329,
              "sourceUnit": 4076,
              "src": "77:90:19",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2293,
                    "name": "AdvancedOrder",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4031,
                    "src": "90:13:19",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 2294,
                    "name": "CriteriaResolver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4053,
                    "src": "109:16:19",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "ZoneInterface",
              "contractDependencies": [],
              "contractKind": "interface",
              "fullyImplemented": false,
              "id": 2328,
              "linearizedBaseContracts": [
                2328
              ],
              "name": "ZoneInterface",
              "nameLocation": "179:13:19",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "functionSelector": "0e1d31dc",
                  "id": 2308,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidOrder",
                  "nameLocation": "289:12:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2304,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2297,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "319:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2308,
                        "src": "311:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2296,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "311:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2299,
                        "mutability": "mutable",
                        "name": "caller",
                        "nameLocation": "346:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2308,
                        "src": "338:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2298,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "338:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2301,
                        "mutability": "mutable",
                        "name": "offerer",
                        "nameLocation": "370:7:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2308,
                        "src": "362:15:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2300,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "362:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2303,
                        "mutability": "mutable",
                        "name": "zoneHash",
                        "nameLocation": "395:8:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2308,
                        "src": "387:16:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2302,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "387:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "301:108:19"
                  },
                  "returnParameters": {
                    "id": 2307,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2306,
                        "mutability": "mutable",
                        "name": "validOrderMagicValue",
                        "nameLocation": "440:20:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2308,
                        "src": "433:27:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 2305,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "433:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "432:29:19"
                  },
                  "scope": 2328,
                  "src": "280:182:19",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "functionSelector": "33131570",
                  "id": 2327,
                  "implemented": false,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isValidOrderIncludingExtraData",
                  "nameLocation": "558:30:19",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2323,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2310,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "606:9:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2327,
                        "src": "598:17:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2309,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "598:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2312,
                        "mutability": "mutable",
                        "name": "caller",
                        "nameLocation": "633:6:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2327,
                        "src": "625:14:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2311,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "625:7:19",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2315,
                        "mutability": "mutable",
                        "name": "order",
                        "nameLocation": "672:5:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2327,
                        "src": "649:28:19",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_calldata_ptr",
                          "typeString": "struct AdvancedOrder"
                        },
                        "typeName": {
                          "id": 2314,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2313,
                            "name": "AdvancedOrder",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4031,
                            "src": "649:13:19"
                          },
                          "referencedDeclaration": 4031,
                          "src": "649:13:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                            "typeString": "struct AdvancedOrder"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2318,
                        "mutability": "mutable",
                        "name": "priorOrderHashes",
                        "nameLocation": "706:16:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2327,
                        "src": "687:35:19",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2316,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "687:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 2317,
                          "nodeType": "ArrayTypeName",
                          "src": "687:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2322,
                        "mutability": "mutable",
                        "name": "criteriaResolvers",
                        "nameLocation": "760:17:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2327,
                        "src": "732:45:19",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct CriteriaResolver[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2320,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2319,
                              "name": "CriteriaResolver",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4053,
                              "src": "732:16:19"
                            },
                            "referencedDeclaration": 4053,
                            "src": "732:16:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                              "typeString": "struct CriteriaResolver"
                            }
                          },
                          "id": 2321,
                          "nodeType": "ArrayTypeName",
                          "src": "732:18:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_storage_$dyn_storage_ptr",
                            "typeString": "struct CriteriaResolver[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "588:195:19"
                  },
                  "returnParameters": {
                    "id": 2326,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2325,
                        "mutability": "mutable",
                        "name": "validOrderMagicValue",
                        "nameLocation": "814:20:19",
                        "nodeType": "VariableDeclaration",
                        "scope": 2327,
                        "src": "807:27:19",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 2324,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "807:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "806:29:19"
                  },
                  "scope": 2328,
                  "src": "549:287:19",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "external"
                }
              ],
              "scope": 2329,
              "src": "169:669:19",
              "usedErrors": []
            }
          ],
          "src": "32:807:19"
        },
        "id": 19
      },
      "seaport/contracts/lib/AmountDeriver.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/AmountDeriver.sol",
          "exportedSymbols": {
            "AmountDerivationErrors": [
              1542
            ],
            "AmountDeriver": [
              2491
            ]
          },
          "id": 2492,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2330,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:20"
            },
            {
              "absolutePath": "seaport/contracts/interfaces/AmountDerivationErrors.sol",
              "file": "../interfaces/AmountDerivationErrors.sol",
              "id": 2332,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2492,
              "sourceUnit": 1543,
              "src": "76:86:20",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2331,
                    "name": "AmountDerivationErrors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1542,
                    "src": "89:22:20",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2334,
                    "name": "AmountDerivationErrors",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1542,
                    "src": "468:22:20"
                  },
                  "id": 2335,
                  "nodeType": "InheritanceSpecifier",
                  "src": "468:22:20"
                }
              ],
              "canonicalName": "AmountDeriver",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2333,
                "nodeType": "StructuredDocumentation",
                "src": "164:277:20",
                "text": " @title AmountDeriver\n @author 0age\n @notice AmountDeriver contains pure functions related to deriving item\n         amounts based on partial fill quantity and on linear extrapolation\n         based on current time when the start amount and end amount differ."
              },
              "fullyImplemented": true,
              "id": 2491,
              "linearizedBaseContracts": [
                2491,
                1542
              ],
              "name": "AmountDeriver",
              "nameLocation": "451:13:20",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 2395,
                    "nodeType": "Block",
                    "src": "1514:1212:20",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2355,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2353,
                            "name": "startAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2338,
                            "src": "1604:11:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 2354,
                            "name": "endAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2340,
                            "src": "1619:9:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1604:24:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2392,
                        "nodeType": "IfStatement",
                        "src": "1600:1014:20",
                        "trueBody": {
                          "id": 2391,
                          "nodeType": "Block",
                          "src": "1630:984:20",
                          "statements": [
                            {
                              "assignments": [
                                2357
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2357,
                                  "mutability": "mutable",
                                  "name": "extraCeiling",
                                  "nameLocation": "1733:12:20",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2391,
                                  "src": "1725:20:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2356,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1725:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2359,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 2358,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1748:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1725:24:20"
                            },
                            {
                              "condition": {
                                "id": 2360,
                                "name": "roundUp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2348,
                                "src": "1849:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 2369,
                              "nodeType": "IfStatement",
                              "src": "1845:189:20",
                              "trueBody": {
                                "id": 2368,
                                "nodeType": "Block",
                                "src": "1858:176:20",
                                "statements": [
                                  {
                                    "id": 2367,
                                    "nodeType": "UncheckedBlock",
                                    "src": "1942:78:20",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 2365,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 2361,
                                            "name": "extraCeiling",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2357,
                                            "src": "1974:12:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 2364,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 2362,
                                              "name": "duration",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2346,
                                              "src": "1989:8:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "hexValue": "31",
                                              "id": 2363,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "2000:1:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "1989:12:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "1974:27:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2366,
                                        "nodeType": "ExpressionStatement",
                                        "src": "1974:27:20"
                                      }
                                    ]
                                  }
                                ]
                              }
                            },
                            {
                              "assignments": [
                                2371
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2371,
                                  "mutability": "mutable",
                                  "name": "totalBeforeDivision",
                                  "nameLocation": "2162:19:20",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2391,
                                  "src": "2154:27:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2370,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2154:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2384,
                              "initialValue": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2382,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 2380,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 2374,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 2372,
                                              "name": "startAmount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2338,
                                              "src": "2203:11:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "id": 2373,
                                              "name": "remaining",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2344,
                                              "src": "2217:9:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "2203:23:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 2375,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "2202:25:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "components": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 2378,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 2376,
                                              "name": "endAmount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2340,
                                              "src": "2231:9:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "id": 2377,
                                              "name": "elapsed",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2342,
                                              "src": "2243:7:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "2231:19:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 2379,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "2230:21:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "2202:49:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "id": 2381,
                                      "name": "extraCeiling",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2357,
                                      "src": "2254:12:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2202:64:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 2383,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2184:96:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2154:126:20"
                            },
                            {
                              "assignments": [
                                2386
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2386,
                                  "mutability": "mutable",
                                  "name": "newAmount",
                                  "nameLocation": "2384:9:20",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2391,
                                  "src": "2376:17:20",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 2385,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2376:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2387,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2376:17:20"
                            },
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "2416:79:20",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2434:47:20",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "totalBeforeDivision",
                                          "nodeType": "YulIdentifier",
                                          "src": "2451:19:20"
                                        },
                                        {
                                          "name": "duration",
                                          "nodeType": "YulIdentifier",
                                          "src": "2472:8:20"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "div",
                                        "nodeType": "YulIdentifier",
                                        "src": "2447:3:20"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2447:34:20"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "newAmount",
                                        "nodeType": "YulIdentifier",
                                        "src": "2434:9:20"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "evmVersion": "london",
                              "externalReferences": [
                                {
                                  "declaration": 2346,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2472:8:20",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 2386,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2434:9:20",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 2371,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2451:19:20",
                                  "valueSize": 1
                                }
                              ],
                              "id": 2388,
                              "nodeType": "InlineAssembly",
                              "src": "2407:88:20"
                            },
                            {
                              "expression": {
                                "id": 2389,
                                "name": "newAmount",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2386,
                                "src": "2594:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 2352,
                              "id": 2390,
                              "nodeType": "Return",
                              "src": "2587:16:20"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 2393,
                          "name": "endAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2340,
                          "src": "2710:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 2352,
                        "id": 2394,
                        "nodeType": "Return",
                        "src": "2703:16:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2336,
                    "nodeType": "StructuredDocumentation",
                    "src": "497:788:20",
                    "text": " @dev Internal pure function to derive the current amount of a given item\n      based on the current price, the starting price, and the ending\n      price. If the start and end prices differ, the current price will be\n      extrapolated on a linear basis.\n @param startAmount The starting amount of the item.\n @param endAmount   The ending amount of the item.\n @param elapsed     The time elapsed since the order's start time.\n @param remaining   The time left until the order's end time.\n @param duration    The total duration of the order.\n @param roundUp     A boolean indicating whether the resultant amount\n                    should be rounded up or down.\n @return The current amount."
                  },
                  "id": 2396,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_locateCurrentAmount",
                  "nameLocation": "1299:20:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2349,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2338,
                        "mutability": "mutable",
                        "name": "startAmount",
                        "nameLocation": "1337:11:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2396,
                        "src": "1329:19:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2337,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1329:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2340,
                        "mutability": "mutable",
                        "name": "endAmount",
                        "nameLocation": "1366:9:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2396,
                        "src": "1358:17:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2339,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1358:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2342,
                        "mutability": "mutable",
                        "name": "elapsed",
                        "nameLocation": "1393:7:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2396,
                        "src": "1385:15:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2341,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1385:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2344,
                        "mutability": "mutable",
                        "name": "remaining",
                        "nameLocation": "1418:9:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2396,
                        "src": "1410:17:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2343,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1410:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2346,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "1445:8:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2396,
                        "src": "1437:16:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2345,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1437:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2348,
                        "mutability": "mutable",
                        "name": "roundUp",
                        "nameLocation": "1468:7:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2396,
                        "src": "1463:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2347,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1463:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1319:162:20"
                  },
                  "returnParameters": {
                    "id": 2352,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2351,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2396,
                        "src": "1505:7:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2350,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1505:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1504:9:20"
                  },
                  "scope": 2491,
                  "src": "1290:1436:20",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2433,
                    "nodeType": "Block",
                    "src": "3682:1058:20",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2408,
                            "name": "numerator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2399,
                            "src": "3769:9:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 2409,
                            "name": "denominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2401,
                            "src": "3782:11:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3769:24:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2414,
                        "nodeType": "IfStatement",
                        "src": "3765:67:20",
                        "trueBody": {
                          "id": 2413,
                          "nodeType": "Block",
                          "src": "3795:37:20",
                          "statements": [
                            {
                              "expression": {
                                "id": 2411,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2403,
                                "src": "3816:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "functionReturnParameters": 2407,
                              "id": 2412,
                              "nodeType": "Return",
                              "src": "3809:12:20"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2416
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2416,
                            "mutability": "mutable",
                            "name": "exact",
                            "nameLocation": "3974:5:20",
                            "nodeType": "VariableDeclaration",
                            "scope": 2433,
                            "src": "3969:10:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2415,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "3969:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2417,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3969:10:20"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "3998:233:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4167:54:20",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulIdentifier",
                                        "src": "4190:5:20"
                                      },
                                      {
                                        "name": "numerator",
                                        "nodeType": "YulIdentifier",
                                        "src": "4197:9:20"
                                      },
                                      {
                                        "name": "denominator",
                                        "nodeType": "YulIdentifier",
                                        "src": "4208:11:20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mulmod",
                                      "nodeType": "YulIdentifier",
                                      "src": "4183:6:20"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4183:37:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "4176:6:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4176:45:20"
                              },
                              "variableNames": [
                                {
                                  "name": "exact",
                                  "nodeType": "YulIdentifier",
                                  "src": "4167:5:20"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 2401,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4208:11:20",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2416,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4167:5:20",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2399,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4197:9:20",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2403,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4190:5:20",
                            "valueSize": 1
                          }
                        ],
                        "id": 2418,
                        "nodeType": "InlineAssembly",
                        "src": "3989:242:20"
                      },
                      {
                        "condition": {
                          "id": 2420,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "4316:6:20",
                          "subExpression": {
                            "id": 2419,
                            "name": "exact",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2416,
                            "src": "4317:5:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2425,
                        "nodeType": "IfStatement",
                        "src": "4312:61:20",
                        "trueBody": {
                          "id": 2424,
                          "nodeType": "Block",
                          "src": "4324:49:20",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2421,
                                  "name": "InexactFraction",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1541,
                                  "src": "4345:15:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 2422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4345:17:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2423,
                              "nodeType": "RevertStatement",
                              "src": "4338:24:20"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          2427
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2427,
                            "mutability": "mutable",
                            "name": "valueTimesNumerator",
                            "nameLocation": "4469:19:20",
                            "nodeType": "VariableDeclaration",
                            "scope": 2433,
                            "src": "4461:27:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2426,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "4461:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2431,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2428,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2403,
                            "src": "4491:5:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 2429,
                            "name": "numerator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2399,
                            "src": "4499:9:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4491:17:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4461:47:20"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "4609:125:20",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4675:49:20",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "valueTimesNumerator",
                                    "nodeType": "YulIdentifier",
                                    "src": "4691:19:20"
                                  },
                                  {
                                    "name": "denominator",
                                    "nodeType": "YulIdentifier",
                                    "src": "4712:11:20"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "4687:3:20"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4687:37:20"
                              },
                              "variableNames": [
                                {
                                  "name": "newValue",
                                  "nodeType": "YulIdentifier",
                                  "src": "4675:8:20"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 2401,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4712:11:20",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2406,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4675:8:20",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2427,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4691:19:20",
                            "valueSize": 1
                          }
                        ],
                        "id": 2432,
                        "nodeType": "InlineAssembly",
                        "src": "4600:134:20"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2397,
                    "nodeType": "StructuredDocumentation",
                    "src": "2732:797:20",
                    "text": " @dev Internal pure function to return a fraction of a given value and to\n      ensure the resultant value does not have any fractional component.\n      Note that this function assumes that zero will never be supplied as\n      the denominator parameter; invalid / undefined behavior will result\n      should a denominator of zero be provided.\n @param numerator   A value indicating the portion of the order that\n                    should be filled.\n @param denominator A value indicating the total size of the order. Note\n                    that this value cannot be equal to zero.\n @param value       The value for which to compute the fraction.\n @return newValue The value after applying the fraction."
                  },
                  "id": 2434,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getFraction",
                  "nameLocation": "3543:12:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2404,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2399,
                        "mutability": "mutable",
                        "name": "numerator",
                        "nameLocation": "3573:9:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2434,
                        "src": "3565:17:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2398,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3565:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2401,
                        "mutability": "mutable",
                        "name": "denominator",
                        "nameLocation": "3600:11:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2434,
                        "src": "3592:19:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2400,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3592:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2403,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "3629:5:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2434,
                        "src": "3621:13:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2402,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3621:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3555:85:20"
                  },
                  "returnParameters": {
                    "id": 2407,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2406,
                        "mutability": "mutable",
                        "name": "newValue",
                        "nameLocation": "3672:8:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2434,
                        "src": "3664:16:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2405,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3664:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3663:18:20"
                  },
                  "scope": 2491,
                  "src": "3534:1206:20",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2489,
                    "nodeType": "Block",
                    "src": "5769:636:20",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2458,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2456,
                            "name": "startAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2437,
                            "src": "5859:11:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 2457,
                            "name": "endAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2439,
                            "src": "5874:9:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5859:24:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2487,
                          "nodeType": "Block",
                          "src": "6017:382:20",
                          "statements": [
                            {
                              "expression": {
                                "id": 2485,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2468,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2454,
                                  "src": "6110:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "id": 2471,
                                          "name": "numerator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2441,
                                          "src": "6170:9:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 2472,
                                          "name": "denominator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2443,
                                          "src": "6181:11:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 2473,
                                          "name": "startAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2437,
                                          "src": "6194:11:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 2470,
                                        "name": "_getFraction",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2434,
                                        "src": "6157:12:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 2474,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6157:49:20",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "id": 2476,
                                          "name": "numerator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2441,
                                          "src": "6237:9:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 2477,
                                          "name": "denominator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2443,
                                          "src": "6248:11:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 2478,
                                          "name": "endAmount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2439,
                                          "src": "6261:9:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 2475,
                                        "name": "_getFraction",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2434,
                                        "src": "6224:12:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 2479,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6224:47:20",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 2480,
                                      "name": "elapsed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2445,
                                      "src": "6289:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 2481,
                                      "name": "remaining",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2447,
                                      "src": "6314:9:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 2482,
                                      "name": "duration",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2449,
                                      "src": "6341:8:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 2483,
                                      "name": "roundUp",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2451,
                                      "src": "6367:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    ],
                                    "id": 2469,
                                    "name": "_locateCurrentAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2396,
                                    "src": "6119:20:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256,uint256,uint256,bool) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2484,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6119:269:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6110:278:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2486,
                              "nodeType": "ExpressionStatement",
                              "src": "6110:278:20"
                            }
                          ]
                        },
                        "id": 2488,
                        "nodeType": "IfStatement",
                        "src": "5855:544:20",
                        "trueBody": {
                          "id": 2467,
                          "nodeType": "Block",
                          "src": "5885:126:20",
                          "statements": [
                            {
                              "expression": {
                                "id": 2465,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 2459,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2454,
                                  "src": "5944:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 2461,
                                      "name": "numerator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2441,
                                      "src": "5966:9:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 2462,
                                      "name": "denominator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2443,
                                      "src": "5977:11:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 2463,
                                      "name": "endAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2439,
                                      "src": "5990:9:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 2460,
                                    "name": "_getFraction",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2434,
                                    "src": "5953:12:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2464,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5953:47:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5944:56:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2466,
                              "nodeType": "ExpressionStatement",
                              "src": "5944:56:20"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2435,
                    "nodeType": "StructuredDocumentation",
                    "src": "4746:737:20",
                    "text": " @dev Internal pure function to apply a fraction to a consideration\n or offer item.\n @param startAmount     The starting amount of the item.\n @param endAmount       The ending amount of the item.\n @param numerator       A value indicating the portion of the order that\n                        should be filled.\n @param denominator     A value indicating the total size of the order.\n @param elapsed         The time elapsed since the order's start time.\n @param remaining       The time left until the order's end time.\n @param duration        The total duration of the order.\n @return amount The received item to transfer with the final amount."
                  },
                  "id": 2490,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_applyFraction",
                  "nameLocation": "5497:14:20",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2452,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2437,
                        "mutability": "mutable",
                        "name": "startAmount",
                        "nameLocation": "5529:11:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2490,
                        "src": "5521:19:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2436,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5521:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2439,
                        "mutability": "mutable",
                        "name": "endAmount",
                        "nameLocation": "5558:9:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2490,
                        "src": "5550:17:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2438,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5550:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2441,
                        "mutability": "mutable",
                        "name": "numerator",
                        "nameLocation": "5585:9:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2490,
                        "src": "5577:17:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2440,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5577:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2443,
                        "mutability": "mutable",
                        "name": "denominator",
                        "nameLocation": "5612:11:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2490,
                        "src": "5604:19:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2442,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5604:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2445,
                        "mutability": "mutable",
                        "name": "elapsed",
                        "nameLocation": "5641:7:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2490,
                        "src": "5633:15:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2444,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5633:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2447,
                        "mutability": "mutable",
                        "name": "remaining",
                        "nameLocation": "5666:9:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2490,
                        "src": "5658:17:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2446,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5658:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2449,
                        "mutability": "mutable",
                        "name": "duration",
                        "nameLocation": "5693:8:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2490,
                        "src": "5685:16:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2448,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5685:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2451,
                        "mutability": "mutable",
                        "name": "roundUp",
                        "nameLocation": "5716:7:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2490,
                        "src": "5711:12:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2450,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "5711:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5511:218:20"
                  },
                  "returnParameters": {
                    "id": 2455,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2454,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "5761:6:20",
                        "nodeType": "VariableDeclaration",
                        "scope": 2490,
                        "src": "5753:14:20",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2453,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5753:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5752:16:20"
                  },
                  "scope": 2491,
                  "src": "5488:917:20",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 2492,
              "src": "442:5965:20",
              "usedErrors": [
                1541
              ]
            }
          ],
          "src": "32:6376:20"
        },
        "id": 20
      },
      "seaport/contracts/lib/Assertions.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/Assertions.sol",
          "exportedSymbols": {
            "AccumulatorArmed": [
              3772
            ],
            "AccumulatorDisarmed": [
              3769
            ],
            "Accumulator_array_length_ptr": [
              3784
            ],
            "Accumulator_array_offset": [
              3790
            ],
            "Accumulator_array_offset_ptr": [
              3781
            ],
            "Accumulator_conduitKey_ptr": [
              3775
            ],
            "Accumulator_itemSizeOffsetDifference": [
              3787
            ],
            "Accumulator_selector_ptr": [
              3778
            ],
            "AdditionalRecipients_size": [
              3530
            ],
            "AdvancedOrder_numerator_offset": [
              3482
            ],
            "Assertions": [
              2594
            ],
            "BasicOrder_additionalRecipients_data_cdPtr": [
              3621
            ],
            "BasicOrder_additionalRecipients_head_cdPtr": [
              3612
            ],
            "BasicOrder_additionalRecipients_head_ptr": [
              3678
            ],
            "BasicOrder_additionalRecipients_length_cdPtr": [
              3618
            ],
            "BasicOrder_basicOrderType_cdPtr": [
              3597
            ],
            "BasicOrder_considerationAmount_cdPtr": [
              3582
            ],
            "BasicOrder_considerationHashesArray_ptr": [
              3518
            ],
            "BasicOrder_considerationItem_endAmount_ptr": [
              3642
            ],
            "BasicOrder_considerationItem_identifier_ptr": [
              3636
            ],
            "BasicOrder_considerationItem_itemType_ptr": [
              3630
            ],
            "BasicOrder_considerationItem_startAmount_ptr": [
              3639
            ],
            "BasicOrder_considerationItem_token_ptr": [
              3633
            ],
            "BasicOrder_considerationItem_typeHash_ptr": [
              3627
            ],
            "BasicOrder_considerationToken_cdPtr": [
              3579
            ],
            "BasicOrder_endAmount_cdPtr": [
              3515
            ],
            "BasicOrder_fulfillerConduit_cdPtr": [
              3606
            ],
            "BasicOrder_offerAmount_cdPtr": [
              3594
            ],
            "BasicOrder_offerItem_endAmount_ptr": [
              3654
            ],
            "BasicOrder_offerItem_itemType_ptr": [
              3648
            ],
            "BasicOrder_offerItem_token_ptr": [
              3651
            ],
            "BasicOrder_offerItem_typeHash_ptr": [
              3645
            ],
            "BasicOrder_offerToken_cdPtr": [
              3591
            ],
            "BasicOrder_offererConduit_cdPtr": [
              3603
            ],
            "BasicOrder_offerer_cdPtr": [
              3585
            ],
            "BasicOrder_order_considerationHashes_ptr": [
              3666
            ],
            "BasicOrder_order_nonce_ptr": [
              3675
            ],
            "BasicOrder_order_offerHashes_ptr": [
              3663
            ],
            "BasicOrder_order_offerer_ptr": [
              3660
            ],
            "BasicOrder_order_orderType_ptr": [
              3669
            ],
            "BasicOrder_order_startTime_ptr": [
              3672
            ],
            "BasicOrder_order_typeHash_ptr": [
              3657
            ],
            "BasicOrder_parameters_cdPtr": [
              3576
            ],
            "BasicOrder_parameters_ptr": [
              3624
            ],
            "BasicOrder_signature_cdPtr": [
              3615
            ],
            "BasicOrder_signature_ptr": [
              3681
            ],
            "BasicOrder_startTime_cdPtr": [
              3600
            ],
            "BasicOrder_totalOriginalAdditionalRecipients_cdPtr": [
              3609
            ],
            "BasicOrder_zone_cdPtr": [
              3588
            ],
            "Common_amount_offset": [
              3413
            ],
            "Common_identifier_offset": [
              3410
            ],
            "Common_token_offset": [
              3407
            ],
            "Conduit_execute_ConduitTransfer_length": [
              3739
            ],
            "Conduit_execute_ConduitTransfer_length_ptr": [
              3745
            ],
            "Conduit_execute_ConduitTransfer_offset_ptr": [
              3742
            ],
            "Conduit_execute_ConduitTransfer_ptr": [
              3736
            ],
            "Conduit_execute_signature": [
              3733
            ],
            "Conduit_execute_transferAmount_ptr": [
              3763
            ],
            "Conduit_execute_transferFrom_ptr": [
              3754
            ],
            "Conduit_execute_transferIdentifier_ptr": [
              3760
            ],
            "Conduit_execute_transferItemType_ptr": [
              3748
            ],
            "Conduit_execute_transferTo_ptr": [
              3757
            ],
            "Conduit_execute_transferToken_ptr": [
              3751
            ],
            "Conduit_transferItem_amount_ptr": [
              3808
            ],
            "Conduit_transferItem_from_ptr": [
              3799
            ],
            "Conduit_transferItem_identifier_ptr": [
              3805
            ],
            "Conduit_transferItem_size": [
              3793
            ],
            "Conduit_transferItem_to_ptr": [
              3802
            ],
            "Conduit_transferItem_token_ptr": [
              3796
            ],
            "ConsiderItem_recipient_offset": [
              3431
            ],
            "ConsiderationItem_recipient_offset": [
              3428
            ],
            "CostPerWord": [
              3708
            ],
            "Create2AddressDerivation_length": [
              3717
            ],
            "Create2AddressDerivation_ptr": [
              3714
            ],
            "DefaultFreeMemoryPointer": [
              3506
            ],
            "EIP2098_allButHighestBitMask": [
              3685
            ],
            "EIP712_ConsiderationItem_size": [
              3527
            ],
            "EIP712_DigestPayload_size": [
              3539
            ],
            "EIP712_DomainSeparator_offset": [
              3533
            ],
            "EIP712_OfferItem_size": [
              3524
            ],
            "EIP712_OrderHash_offset": [
              3536
            ],
            "EIP712_Order_size": [
              3521
            ],
            "EIP_712_PREFIX": [
              3702
            ],
            "Execution_conduit_offset": [
              3437
            ],
            "Execution_offerer_offset": [
              3434
            ],
            "ExtraGasBuffer": [
              3705
            ],
            "FiveWords": [
              3497
            ],
            "FourWords": [
              3494
            ],
            "FreeMemoryPointerSlot": [
              3500
            ],
            "Fulfillment_itemIndex_offset": [
              3479
            ],
            "GettersAndDerivers": [
              5465
            ],
            "InvalidFulfillmentComponentData_error_len": [
              3444
            ],
            "InvalidFulfillmentComponentData_error_signature": [
              3441
            ],
            "MaskOverByteTwelve": [
              3721
            ],
            "MaskOverFirstFourBytes": [
              3729
            ],
            "MaskOverLastTwentyBytes": [
              3725
            ],
            "MemoryExpansionCoefficient": [
              3711
            ],
            "MissingItemAmount_error_len": [
              3464
            ],
            "MissingItemAmount_error_signature": [
              3461
            ],
            "NameLengthPtr": [
              3389
            ],
            "NameWithLength": [
              3392
            ],
            "NoContract_error_length": [
              3698
            ],
            "NoContract_error_sig_ptr": [
              3692
            ],
            "NoContract_error_signature": [
              3689
            ],
            "NoContract_error_token_ptr": [
              3695
            ],
            "NonceManager": [
              5561
            ],
            "OneConduitExecute_size": [
              3766
            ],
            "OneWord": [
              3485
            ],
            "OrderFulfilled_baseOffset": [
              3552
            ],
            "OrderFulfilled_baseSize": [
              3545
            ],
            "OrderFulfilled_consideration_body_offset": [
              3573
            ],
            "OrderFulfilled_consideration_head_offset": [
              3570
            ],
            "OrderFulfilled_consideration_length_baseOffset": [
              3555
            ],
            "OrderFulfilled_fulfiller_offset": [
              3561
            ],
            "OrderFulfilled_offer_body_offset": [
              3567
            ],
            "OrderFulfilled_offer_head_offset": [
              3564
            ],
            "OrderFulfilled_offer_length_baseOffset": [
              3558
            ],
            "OrderFulfilled_selector": [
              3549
            ],
            "OrderParameters": [
              4013
            ],
            "OrderParameters_conduit_offset": [
              3473
            ],
            "OrderParameters_consideration_head_offset": [
              3470
            ],
            "OrderParameters_nonce_offset": [
              3476
            ],
            "OrderParameters_offer_head_offset": [
              3467
            ],
            "Panic_arithmetic": [
              3457
            ],
            "Panic_error_length": [
              3454
            ],
            "Panic_error_offset": [
              3451
            ],
            "Panic_error_signature": [
              3448
            ],
            "ReceivedItem_CommonParams_size": [
              3425
            ],
            "ReceivedItem_amount_offset": [
              3419
            ],
            "ReceivedItem_recipient_offset": [
              3422
            ],
            "ReceivedItem_size": [
              3416
            ],
            "Slot0x80": [
              3509
            ],
            "Slot0xA0": [
              3512
            ],
            "ThreeWords": [
              3491
            ],
            "TokenTransferrerErrors": [
              2281
            ],
            "TwoWords": [
              3488
            ],
            "Version": [
              3395
            ],
            "Version_length": [
              3398
            ],
            "ZeroSlot": [
              3503
            ],
            "_ENTERED": [
              3404
            ],
            "_NOT_ENTERED": [
              3401
            ],
            "receivedItemsHash_ptr": [
              3542
            ]
          },
          "id": 2595,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2493,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:21"
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationStructs.sol",
              "file": "./ConsiderationStructs.sol",
              "id": 2495,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2595,
              "sourceUnit": 4076,
              "src": "57:61:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2494,
                    "name": "OrderParameters",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4013,
                    "src": "66:15:21",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/GettersAndDerivers.sol",
              "file": "./GettersAndDerivers.sol",
              "id": 2497,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2595,
              "sourceUnit": 5466,
              "src": "120:62:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2496,
                    "name": "GettersAndDerivers",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5465,
                    "src": "129:18:21",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/interfaces/TokenTransferrerErrors.sol",
              "file": "../interfaces/TokenTransferrerErrors.sol",
              "id": 2499,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2595,
              "sourceUnit": 2282,
              "src": "184:82:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2498,
                    "name": "TokenTransferrerErrors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2281,
                    "src": "193:22:21",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/NonceManager.sol",
              "file": "./NonceManager.sol",
              "id": 2501,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2595,
              "sourceUnit": 5562,
              "src": "268:50:21",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2500,
                    "name": "NonceManager",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5561,
                    "src": "277:12:21",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationConstants.sol",
              "file": "./ConsiderationConstants.sol",
              "id": 2502,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 2595,
              "sourceUnit": 3809,
              "src": "320:38:21",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2504,
                    "name": "GettersAndDerivers",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5465,
                    "src": "568:18:21"
                  },
                  "id": 2505,
                  "nodeType": "InheritanceSpecifier",
                  "src": "568:18:21"
                },
                {
                  "baseName": {
                    "id": 2506,
                    "name": "NonceManager",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5561,
                    "src": "592:12:21"
                  },
                  "id": 2507,
                  "nodeType": "InheritanceSpecifier",
                  "src": "592:12:21"
                },
                {
                  "baseName": {
                    "id": 2508,
                    "name": "TokenTransferrerErrors",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2281,
                    "src": "610:22:21"
                  },
                  "id": 2509,
                  "nodeType": "InheritanceSpecifier",
                  "src": "610:22:21"
                }
              ],
              "canonicalName": "Assertions",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2503,
                "nodeType": "StructuredDocumentation",
                "src": "360:180:21",
                "text": " @title Assertions\n @author 0age\n @notice Assertions contains logic for making various assertions that do not\n         fit neatly within a dedicated semantic scope."
              },
              "fullyImplemented": true,
              "id": 2594,
              "linearizedBaseContracts": [
                2594,
                2281,
                5561,
                7768,
                2209,
                5465,
                3384,
                1924
              ],
              "name": "Assertions",
              "nameLocation": "550:10:21",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 2518,
                    "nodeType": "Block",
                    "src": "1081:2:21",
                    "statements": []
                  },
                  "documentation": {
                    "id": 2510,
                    "nodeType": "StructuredDocumentation",
                    "src": "639:348:21",
                    "text": " @dev Derive and set hashes, reference chainId, and associated domain\n      separator during deployment.\n @param conduitController A contract that deploys conduits, or proxies\n                          that may optionally be used to transfer approved\n                          ERC20/721/1155 tokens."
                  },
                  "id": 2519,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 2515,
                          "name": "conduitController",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2512,
                          "src": "1058:17:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 2516,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 2514,
                        "name": "GettersAndDerivers",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 5465,
                        "src": "1039:18:21"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1039:37:21"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2513,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2512,
                        "mutability": "mutable",
                        "name": "conduitController",
                        "nameLocation": "1012:17:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2519,
                        "src": "1004:25:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2511,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1004:7:21",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1003:27:21"
                  },
                  "returnParameters": {
                    "id": 2517,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1081:0:21"
                  },
                  "scope": 2594,
                  "src": "992:91:21",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2544,
                    "nodeType": "Block",
                    "src": "1710:507:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "expression": {
                                  "id": 2529,
                                  "name": "orderParameters",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2523,
                                  "src": "1881:15:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                    "typeString": "struct OrderParameters memory"
                                  }
                                },
                                "id": 2530,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "consideration",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3997,
                                "src": "1881:29:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct ConsiderationItem memory[] memory"
                                }
                              },
                              "id": 2531,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "1881:36:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 2532,
                                "name": "orderParameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2523,
                                "src": "1931:15:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                  "typeString": "struct OrderParameters memory"
                                }
                              },
                              "id": 2533,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "totalOriginalConsiderationItems",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4012,
                              "src": "1931:47:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2528,
                            "name": "_assertConsiderationLengthIsNotLessThanOriginalConsiderationLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2562,
                            "src": "1801:66:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256) pure"
                            }
                          },
                          "id": 2534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1801:187:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2535,
                        "nodeType": "ExpressionStatement",
                        "src": "1801:187:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2537,
                              "name": "orderParameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2523,
                              "src": "2129:15:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                "typeString": "struct OrderParameters memory"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 2539,
                                    "name": "orderParameters",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2523,
                                    "src": "2172:15:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                      "typeString": "struct OrderParameters memory"
                                    }
                                  },
                                  "id": 2540,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "offerer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3987,
                                  "src": "2172:23:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2538,
                                "name": "_getNonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5560,
                                "src": "2162:9:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view returns (uint256)"
                                }
                              },
                              "id": 2541,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2162:34:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                "typeString": "struct OrderParameters memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2536,
                            "name": "_deriveOrderHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5384,
                            "src": "2095:16:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_OrderParameters_$4013_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                              "typeString": "function (struct OrderParameters memory,uint256) view returns (bytes32)"
                            }
                          },
                          "id": 2542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2095:115:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 2527,
                        "id": 2543,
                        "nodeType": "Return",
                        "src": "2076:134:21"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2520,
                    "nodeType": "StructuredDocumentation",
                    "src": "1089:473:21",
                    "text": " @dev Internal view function to to ensure that the supplied consideration\n      array length on a given set of order parameters is not less than the\n      original consideration array length for that order and to retrieve\n      the current nonce for a given order's offerer and zone and use it to\n      derive the order hash.\n @param orderParameters The parameters of the order to hash.\n @return The hash."
                  },
                  "id": 2545,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_assertConsiderationLengthAndGetNoncedOrderHash",
                  "nameLocation": "1576:47:21",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2524,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2523,
                        "mutability": "mutable",
                        "name": "orderParameters",
                        "nameLocation": "1656:15:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2545,
                        "src": "1633:38:21",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                          "typeString": "struct OrderParameters"
                        },
                        "typeName": {
                          "id": 2522,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2521,
                            "name": "OrderParameters",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4013,
                            "src": "1633:15:21"
                          },
                          "referencedDeclaration": 4013,
                          "src": "1633:15:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_OrderParameters_$4013_storage_ptr",
                            "typeString": "struct OrderParameters"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1623:54:21"
                  },
                  "returnParameters": {
                    "id": 2527,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2526,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2545,
                        "src": "1701:7:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 2525,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1701:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1700:9:21"
                  },
                  "scope": 2594,
                  "src": "1567:650:21",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2561,
                    "nodeType": "Block",
                    "src": "2974:233:21",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2555,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2553,
                            "name": "suppliedConsiderationItemTotal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2548,
                            "src": "3069:30:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 2554,
                            "name": "originalConsiderationItemTotal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2550,
                            "src": "3102:30:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3069:63:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2560,
                        "nodeType": "IfStatement",
                        "src": "3065:136:21",
                        "trueBody": {
                          "id": 2559,
                          "nodeType": "Block",
                          "src": "3134:67:21",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2556,
                                  "name": "MissingOriginalConsiderationItems",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1869,
                                  "src": "3155:33:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 2557,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3155:35:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2558,
                              "nodeType": "RevertStatement",
                              "src": "3148:42:21"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2546,
                    "nodeType": "StructuredDocumentation",
                    "src": "2223:554:21",
                    "text": " @dev Internal pure function to ensure that the supplied consideration\n      array length for an order to be fulfilled is not less than the\n      original consideration array length for that order.\n @param suppliedConsiderationItemTotal The number of consideration items\n                                       supplied when fulfilling the order.\n @param originalConsiderationItemTotal The number of consideration items\n                                       supplied on initial order creation."
                  },
                  "id": 2562,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_assertConsiderationLengthIsNotLessThanOriginalConsiderationLength",
                  "nameLocation": "2791:66:21",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2551,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2548,
                        "mutability": "mutable",
                        "name": "suppliedConsiderationItemTotal",
                        "nameLocation": "2875:30:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2562,
                        "src": "2867:38:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2547,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2867:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2550,
                        "mutability": "mutable",
                        "name": "originalConsiderationItemTotal",
                        "nameLocation": "2923:30:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2562,
                        "src": "2915:38:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2549,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "2915:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2857:102:21"
                  },
                  "returnParameters": {
                    "id": 2552,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2974:0:21"
                  },
                  "scope": 2594,
                  "src": "2782:425:21",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2576,
                    "nodeType": "Block",
                    "src": "3433:142:21",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2568,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2565,
                            "src": "3505:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 2569,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3515:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "3505:11:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2575,
                        "nodeType": "IfStatement",
                        "src": "3501:68:21",
                        "trueBody": {
                          "id": 2574,
                          "nodeType": "Block",
                          "src": "3518:51:21",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2571,
                                  "name": "MissingItemAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2236,
                                  "src": "3539:17:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 2572,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3539:19:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2573,
                              "nodeType": "RevertStatement",
                              "src": "3532:26:21"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2563,
                    "nodeType": "StructuredDocumentation",
                    "src": "3213:155:21",
                    "text": " @dev Internal pure function to ensure that a given item amount is not\n      zero.\n @param amount The amount to check."
                  },
                  "id": 2577,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_assertNonZeroAmount",
                  "nameLocation": "3382:20:21",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2566,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2565,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "3411:6:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 2577,
                        "src": "3403:14:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2564,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3403:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3402:16:21"
                  },
                  "returnParameters": {
                    "id": 2567,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3433:0:21"
                  },
                  "scope": 2594,
                  "src": "3373:202:21",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2592,
                    "nodeType": "Block",
                    "src": "4032:2013:21",
                    "statements": [
                      {
                        "assignments": [
                          2582
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2582,
                            "mutability": "mutable",
                            "name": "validOffsets",
                            "nameLocation": "4127:12:21",
                            "nodeType": "VariableDeclaration",
                            "scope": 2592,
                            "src": "4122:17:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 2581,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "4122:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2583,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4122:17:21"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "4240:1624:21",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "4498:518:21",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "BasicOrder_parameters_cdPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "4651:27:21"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "calldataload",
                                          "nodeType": "YulIdentifier",
                                          "src": "4638:12:21"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4638:41:21"
                                      },
                                      {
                                        "name": "BasicOrder_parameters_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4701:25:21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "4614:2:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4614:130:21"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "BasicOrder_additionalRecipients_head_cdPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "4879:42:21"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "calldataload",
                                          "nodeType": "YulIdentifier",
                                          "src": "4866:12:21"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4866:56:21"
                                      },
                                      {
                                        "name": "BasicOrder_additionalRecipients_head_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "4944:40:21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "4842:2:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4842:160:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "4514:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4514:502:21"
                              },
                              "variableNames": [
                                {
                                  "name": "validOffsets",
                                  "nodeType": "YulIdentifier",
                                  "src": "4498:12:21"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5029:825:21",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "validOffsets",
                                    "nodeType": "YulIdentifier",
                                    "src": "5066:12:21"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "BasicOrder_signature_cdPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "5199:26:21"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "calldataload",
                                          "nodeType": "YulIdentifier",
                                          "src": "5186:12:21"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5186:40:21"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "BasicOrder_signature_ptr",
                                            "nodeType": "YulIdentifier",
                                            "src": "5358:24:21"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "BasicOrder_additionalRecipients_length_cdPtr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "5566:44:21"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "calldataload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5520:12:21"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5520:120:21"
                                              },
                                              {
                                                "name": "AdditionalRecipients_size",
                                                "nodeType": "YulIdentifier",
                                                "src": "5749:25:21"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "5408:3:21"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5408:392:21"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5329:3:21"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5329:493:21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "5096:2:21"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5096:744:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "5045:3:21"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5045:809:21"
                              },
                              "variableNames": [
                                {
                                  "name": "validOffsets",
                                  "nodeType": "YulIdentifier",
                                  "src": "5029:12:21"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3530,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5749:25:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3612,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4879:42:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3678,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4944:40:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3618,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5566:44:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3576,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4651:27:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3624,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4701:25:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3615,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5199:26:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3681,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5358:24:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2582,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4498:12:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2582,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5029:12:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2582,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5066:12:21",
                            "valueSize": 1
                          }
                        ],
                        "id": 2584,
                        "nodeType": "InlineAssembly",
                        "src": "4231:1633:21"
                      },
                      {
                        "condition": {
                          "id": 2586,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5956:13:21",
                          "subExpression": {
                            "id": 2585,
                            "name": "validOffsets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2582,
                            "src": "5957:12:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2591,
                        "nodeType": "IfStatement",
                        "src": "5952:87:21",
                        "trueBody": {
                          "id": 2590,
                          "nodeType": "Block",
                          "src": "5971:68:21",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 2587,
                                  "name": "InvalidBasicOrderParameterEncoding",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1920,
                                  "src": "5992:34:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 2588,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5992:36:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2589,
                              "nodeType": "RevertStatement",
                              "src": "5985:43:21"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2578,
                    "nodeType": "StructuredDocumentation",
                    "src": "3581:382:21",
                    "text": " @dev Internal pure function to validate calldata offsets for dynamic\n      types in BasicOrderParameters. This ensures that functions using the\n      calldata object normally will be using the same data as the assembly\n      functions. Note that no parameters are supplied as all basic order\n      functions use the same calldata encoding."
                  },
                  "id": 2593,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_assertValidBasicOrderParameterOffsets",
                  "nameLocation": "3977:38:21",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2579,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4015:2:21"
                  },
                  "returnParameters": {
                    "id": 2580,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4032:0:21"
                  },
                  "scope": 2594,
                  "src": "3968:2077:21",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 2595,
              "src": "541:5506:21",
              "usedErrors": [
                1856,
                1859,
                1866,
                1869,
                1874,
                1883,
                1886,
                1893,
                1896,
                1901,
                1906,
                1909,
                1912,
                1917,
                1920,
                1923,
                2208,
                2233,
                2236,
                2249,
                2264,
                2275,
                2280
              ]
            }
          ],
          "src": "32:6016:21"
        },
        "id": 21
      },
      "seaport/contracts/lib/BasicOrderFulfiller.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/BasicOrderFulfiller.sol",
          "exportedSymbols": {
            "AccumulatorArmed": [
              3772
            ],
            "AccumulatorDisarmed": [
              3769
            ],
            "Accumulator_array_length_ptr": [
              3784
            ],
            "Accumulator_array_offset": [
              3790
            ],
            "Accumulator_array_offset_ptr": [
              3781
            ],
            "Accumulator_conduitKey_ptr": [
              3775
            ],
            "Accumulator_itemSizeOffsetDifference": [
              3787
            ],
            "Accumulator_selector_ptr": [
              3778
            ],
            "AdditionalRecipient": [
              3985
            ],
            "AdditionalRecipients_size": [
              3530
            ],
            "AdvancedOrder_numerator_offset": [
              3482
            ],
            "BasicOrderFulfiller": [
              3152
            ],
            "BasicOrderParameters": [
              3980
            ],
            "BasicOrderRouteType": [
              3847
            ],
            "BasicOrder_additionalRecipients_data_cdPtr": [
              3621
            ],
            "BasicOrder_additionalRecipients_head_cdPtr": [
              3612
            ],
            "BasicOrder_additionalRecipients_head_ptr": [
              3678
            ],
            "BasicOrder_additionalRecipients_length_cdPtr": [
              3618
            ],
            "BasicOrder_basicOrderType_cdPtr": [
              3597
            ],
            "BasicOrder_considerationAmount_cdPtr": [
              3582
            ],
            "BasicOrder_considerationHashesArray_ptr": [
              3518
            ],
            "BasicOrder_considerationItem_endAmount_ptr": [
              3642
            ],
            "BasicOrder_considerationItem_identifier_ptr": [
              3636
            ],
            "BasicOrder_considerationItem_itemType_ptr": [
              3630
            ],
            "BasicOrder_considerationItem_startAmount_ptr": [
              3639
            ],
            "BasicOrder_considerationItem_token_ptr": [
              3633
            ],
            "BasicOrder_considerationItem_typeHash_ptr": [
              3627
            ],
            "BasicOrder_considerationToken_cdPtr": [
              3579
            ],
            "BasicOrder_endAmount_cdPtr": [
              3515
            ],
            "BasicOrder_fulfillerConduit_cdPtr": [
              3606
            ],
            "BasicOrder_offerAmount_cdPtr": [
              3594
            ],
            "BasicOrder_offerItem_endAmount_ptr": [
              3654
            ],
            "BasicOrder_offerItem_itemType_ptr": [
              3648
            ],
            "BasicOrder_offerItem_token_ptr": [
              3651
            ],
            "BasicOrder_offerItem_typeHash_ptr": [
              3645
            ],
            "BasicOrder_offerToken_cdPtr": [
              3591
            ],
            "BasicOrder_offererConduit_cdPtr": [
              3603
            ],
            "BasicOrder_offerer_cdPtr": [
              3585
            ],
            "BasicOrder_order_considerationHashes_ptr": [
              3666
            ],
            "BasicOrder_order_nonce_ptr": [
              3675
            ],
            "BasicOrder_order_offerHashes_ptr": [
              3663
            ],
            "BasicOrder_order_offerer_ptr": [
              3660
            ],
            "BasicOrder_order_orderType_ptr": [
              3669
            ],
            "BasicOrder_order_startTime_ptr": [
              3672
            ],
            "BasicOrder_order_typeHash_ptr": [
              3657
            ],
            "BasicOrder_parameters_cdPtr": [
              3576
            ],
            "BasicOrder_parameters_ptr": [
              3624
            ],
            "BasicOrder_signature_cdPtr": [
              3615
            ],
            "BasicOrder_signature_ptr": [
              3681
            ],
            "BasicOrder_startTime_cdPtr": [
              3600
            ],
            "BasicOrder_totalOriginalAdditionalRecipients_cdPtr": [
              3609
            ],
            "BasicOrder_zone_cdPtr": [
              3588
            ],
            "Common_amount_offset": [
              3413
            ],
            "Common_identifier_offset": [
              3410
            ],
            "Common_token_offset": [
              3407
            ],
            "ConduitInterface": [
              1801
            ],
            "Conduit_execute_ConduitTransfer_length": [
              3739
            ],
            "Conduit_execute_ConduitTransfer_length_ptr": [
              3745
            ],
            "Conduit_execute_ConduitTransfer_offset_ptr": [
              3742
            ],
            "Conduit_execute_ConduitTransfer_ptr": [
              3736
            ],
            "Conduit_execute_signature": [
              3733
            ],
            "Conduit_execute_transferAmount_ptr": [
              3763
            ],
            "Conduit_execute_transferFrom_ptr": [
              3754
            ],
            "Conduit_execute_transferIdentifier_ptr": [
              3760
            ],
            "Conduit_execute_transferItemType_ptr": [
              3748
            ],
            "Conduit_execute_transferTo_ptr": [
              3757
            ],
            "Conduit_execute_transferToken_ptr": [
              3751
            ],
            "Conduit_transferItem_amount_ptr": [
              3808
            ],
            "Conduit_transferItem_from_ptr": [
              3799
            ],
            "Conduit_transferItem_identifier_ptr": [
              3805
            ],
            "Conduit_transferItem_size": [
              3793
            ],
            "Conduit_transferItem_to_ptr": [
              3802
            ],
            "Conduit_transferItem_token_ptr": [
              3796
            ],
            "ConsiderItem_recipient_offset": [
              3431
            ],
            "ConsiderationItem": [
              3918
            ],
            "ConsiderationItem_recipient_offset": [
              3428
            ],
            "CostPerWord": [
              3708
            ],
            "Create2AddressDerivation_length": [
              3717
            ],
            "Create2AddressDerivation_ptr": [
              3714
            ],
            "DefaultFreeMemoryPointer": [
              3506
            ],
            "EIP2098_allButHighestBitMask": [
              3685
            ],
            "EIP712_ConsiderationItem_size": [
              3527
            ],
            "EIP712_DigestPayload_size": [
              3539
            ],
            "EIP712_DomainSeparator_offset": [
              3533
            ],
            "EIP712_OfferItem_size": [
              3524
            ],
            "EIP712_OrderHash_offset": [
              3536
            ],
            "EIP712_Order_size": [
              3521
            ],
            "EIP_712_PREFIX": [
              3702
            ],
            "Execution_conduit_offset": [
              3437
            ],
            "Execution_offerer_offset": [
              3434
            ],
            "ExtraGasBuffer": [
              3705
            ],
            "FiveWords": [
              3497
            ],
            "FourWords": [
              3494
            ],
            "FreeMemoryPointerSlot": [
              3500
            ],
            "Fulfillment_itemIndex_offset": [
              3479
            ],
            "InvalidFulfillmentComponentData_error_len": [
              3444
            ],
            "InvalidFulfillmentComponentData_error_signature": [
              3441
            ],
            "ItemType": [
              3854
            ],
            "MaskOverByteTwelve": [
              3721
            ],
            "MaskOverFirstFourBytes": [
              3729
            ],
            "MaskOverLastTwentyBytes": [
              3725
            ],
            "MemoryExpansionCoefficient": [
              3711
            ],
            "MissingItemAmount_error_len": [
              3464
            ],
            "MissingItemAmount_error_signature": [
              3461
            ],
            "NameLengthPtr": [
              3389
            ],
            "NameWithLength": [
              3392
            ],
            "NoContract_error_length": [
              3698
            ],
            "NoContract_error_sig_ptr": [
              3692
            ],
            "NoContract_error_signature": [
              3689
            ],
            "NoContract_error_token_ptr": [
              3695
            ],
            "OfferItem": [
              3904
            ],
            "OneConduitExecute_size": [
              3766
            ],
            "OneWord": [
              3485
            ],
            "OrderFulfilled_baseOffset": [
              3552
            ],
            "OrderFulfilled_baseSize": [
              3545
            ],
            "OrderFulfilled_consideration_body_offset": [
              3573
            ],
            "OrderFulfilled_consideration_head_offset": [
              3570
            ],
            "OrderFulfilled_consideration_length_baseOffset": [
              3555
            ],
            "OrderFulfilled_fulfiller_offset": [
              3561
            ],
            "OrderFulfilled_offer_body_offset": [
              3567
            ],
            "OrderFulfilled_offer_head_offset": [
              3564
            ],
            "OrderFulfilled_offer_length_baseOffset": [
              3558
            ],
            "OrderFulfilled_selector": [
              3549
            ],
            "OrderParameters_conduit_offset": [
              3473
            ],
            "OrderParameters_consideration_head_offset": [
              3470
            ],
            "OrderParameters_nonce_offset": [
              3476
            ],
            "OrderParameters_offer_head_offset": [
              3467
            ],
            "OrderType": [
              3815
            ],
            "OrderValidator": [
              7714
            ],
            "Panic_arithmetic": [
              3457
            ],
            "Panic_error_length": [
              3454
            ],
            "Panic_error_offset": [
              3451
            ],
            "Panic_error_signature": [
              3448
            ],
            "ReceivedItem": [
              3940
            ],
            "ReceivedItem_CommonParams_size": [
              3425
            ],
            "ReceivedItem_amount_offset": [
              3419
            ],
            "ReceivedItem_recipient_offset": [
              3422
            ],
            "ReceivedItem_size": [
              3416
            ],
            "Slot0x80": [
              3509
            ],
            "Slot0xA0": [
              3512
            ],
            "SpentItem": [
              3928
            ],
            "ThreeWords": [
              3491
            ],
            "TwoWords": [
              3488
            ],
            "Version": [
              3395
            ],
            "Version_length": [
              3398
            ],
            "ZeroSlot": [
              3503
            ],
            "_ENTERED": [
              3404
            ],
            "_NOT_ENTERED": [
              3401
            ],
            "receivedItemsHash_ptr": [
              3542
            ]
          },
          "id": 3153,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 2596,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:22"
            },
            {
              "absolutePath": "seaport/contracts/interfaces/ConduitInterface.sol",
              "file": "../interfaces/ConduitInterface.sol",
              "id": 2598,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3153,
              "sourceUnit": 1802,
              "src": "57:70:22",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2597,
                    "name": "ConduitInterface",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1801,
                    "src": "66:16:22",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationEnums.sol",
              "file": "./ConsiderationEnums.sol",
              "id": 2602,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3153,
              "sourceUnit": 3858,
              "src": "148:96:22",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2599,
                    "name": "OrderType",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3815,
                    "src": "161:9:22",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 2600,
                    "name": "ItemType",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3854,
                    "src": "176:8:22",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 2601,
                    "name": "BasicOrderRouteType",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3847,
                    "src": "190:19:22",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationStructs.sol",
              "file": "./ConsiderationStructs.sol",
              "id": 2609,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3153,
              "sourceUnit": 4076,
              "src": "265:166:22",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2603,
                    "name": "AdditionalRecipient",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3985,
                    "src": "278:19:22",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 2604,
                    "name": "BasicOrderParameters",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3980,
                    "src": "303:20:22",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 2605,
                    "name": "OfferItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3904,
                    "src": "329:9:22",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 2606,
                    "name": "ConsiderationItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3918,
                    "src": "344:17:22",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 2607,
                    "name": "SpentItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3928,
                    "src": "367:9:22",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 2608,
                    "name": "ReceivedItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3940,
                    "src": "382:12:22",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/OrderValidator.sol",
              "file": "./OrderValidator.sol",
              "id": 2611,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3153,
              "sourceUnit": 7715,
              "src": "433:54:22",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 2610,
                    "name": "OrderValidator",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7714,
                    "src": "442:14:22",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationConstants.sol",
              "file": "./ConsiderationConstants.sol",
              "id": 2612,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3153,
              "sourceUnit": 3809,
              "src": "489:38:22",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 2614,
                    "name": "OrderValidator",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7714,
                    "src": "810:14:22"
                  },
                  "id": 2615,
                  "nodeType": "InheritanceSpecifier",
                  "src": "810:14:22"
                }
              ],
              "canonicalName": "BasicOrderFulfiller",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 2613,
                "nodeType": "StructuredDocumentation",
                "src": "529:248:22",
                "text": " @title BasicOrderFulfiller\n @author 0age\n @notice BasicOrderFulfiller contains functionality for fulfilling \"basic\"\n         orders with minimal overhead. See documentation for details on what\n         qualifies as a basic order."
              },
              "fullyImplemented": true,
              "id": 3152,
              "linearizedBaseContracts": [
                3152,
                7714,
                8592,
                5018,
                7981,
                8379,
                7917,
                5505,
                2290,
                2227,
                2594,
                2281,
                5561,
                7768,
                2209,
                5465,
                3384,
                1924
              ],
              "name": "BasicOrderFulfiller",
              "nameLocation": "787:19:22",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 2624,
                    "nodeType": "Block",
                    "src": "1257:2:22",
                    "statements": []
                  },
                  "documentation": {
                    "id": 2616,
                    "nodeType": "StructuredDocumentation",
                    "src": "831:348:22",
                    "text": " @dev Derive and set hashes, reference chainId, and associated domain\n      separator during deployment.\n @param conduitController A contract that deploys conduits, or proxies\n                          that may optionally be used to transfer approved\n                          ERC20/721/1155 tokens."
                  },
                  "id": 2625,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 2621,
                          "name": "conduitController",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2618,
                          "src": "1238:17:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 2622,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 2620,
                        "name": "OrderValidator",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 7714,
                        "src": "1223:14:22"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1223:33:22"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2619,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2618,
                        "mutability": "mutable",
                        "name": "conduitController",
                        "nameLocation": "1204:17:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 2625,
                        "src": "1196:25:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2617,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1196:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1195:27:22"
                  },
                  "returnParameters": {
                    "id": 2623,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1257:0:22"
                  },
                  "scope": 3152,
                  "src": "1184:75:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 2864,
                    "nodeType": "Block",
                    "src": "3001:8914:22",
                    "statements": [
                      {
                        "assignments": [
                          2636
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2636,
                            "mutability": "mutable",
                            "name": "route",
                            "nameLocation": "3111:5:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 2864,
                            "src": "3091:25:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_BasicOrderRouteType_$3847",
                              "typeString": "enum BasicOrderRouteType"
                            },
                            "typeName": {
                              "id": 2635,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2634,
                                "name": "BasicOrderRouteType",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3847,
                                "src": "3091:19:22"
                              },
                              "referencedDeclaration": 3847,
                              "src": "3091:19:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_BasicOrderRouteType_$3847",
                                "typeString": "enum BasicOrderRouteType"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2637,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3091:25:22"
                      },
                      {
                        "assignments": [
                          2640
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2640,
                            "mutability": "mutable",
                            "name": "orderType",
                            "nameLocation": "3136:9:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 2864,
                            "src": "3126:19:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_OrderType_$3815",
                              "typeString": "enum OrderType"
                            },
                            "typeName": {
                              "id": 2639,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2638,
                                "name": "OrderType",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3815,
                                "src": "3126:9:22"
                              },
                              "referencedDeclaration": 3815,
                              "src": "3126:9:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_OrderType_$3815",
                                "typeString": "enum OrderType"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2641,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3126:19:22"
                      },
                      {
                        "assignments": [
                          2644
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2644,
                            "mutability": "mutable",
                            "name": "additionalRecipientsItemType",
                            "nameLocation": "3246:28:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 2864,
                            "src": "3237:37:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ItemType_$3854",
                              "typeString": "enum ItemType"
                            },
                            "typeName": {
                              "id": 2643,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2642,
                                "name": "ItemType",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3854,
                                "src": "3237:8:22"
                              },
                              "referencedDeclaration": 3854,
                              "src": "3237:8:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                "typeString": "enum ItemType"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2645,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3237:37:22"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "3375:450:22",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "3468:66:22",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_basicOrderType_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3498:31:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3485:12:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3485:45:22"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3532:1:22",
                                    "type": "",
                                    "value": "3"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "3481:3:22"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3481:53:22"
                              },
                              "variableNames": [
                                {
                                  "name": "orderType",
                                  "nodeType": "YulIdentifier",
                                  "src": "3468:9:22"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3614:62:22",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_basicOrderType_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3640:31:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3627:12:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3627:45:22"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3674:1:22",
                                    "type": "",
                                    "value": "4"
                                  }
                                ],
                                "functionName": {
                                  "name": "div",
                                  "nodeType": "YulIdentifier",
                                  "src": "3623:3:22"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3623:53:22"
                              },
                              "variableNames": [
                                {
                                  "name": "route",
                                  "nodeType": "YulIdentifier",
                                  "src": "3614:5:22"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3771:44:22",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "route",
                                    "nodeType": "YulIdentifier",
                                    "src": "3806:5:22"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3813:1:22",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "3803:2:22"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3803:12:22"
                              },
                              "variableNames": [
                                {
                                  "name": "additionalRecipientsItemType",
                                  "nodeType": "YulIdentifier",
                                  "src": "3771:28:22"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3597,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3498:31:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3597,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3640:31:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2644,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3771:28:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2640,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3468:9:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2636,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3614:5:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2636,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3806:5:22",
                            "valueSize": 1
                          }
                        ],
                        "id": 2646,
                        "nodeType": "InlineAssembly",
                        "src": "3366:459:22"
                      },
                      {
                        "id": 2660,
                        "nodeType": "Block",
                        "src": "3835:718:22",
                        "statements": [
                          {
                            "assignments": [
                              2648
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2648,
                                "mutability": "mutable",
                                "name": "correctPayableStatus",
                                "nameLocation": "3926:20:22",
                                "nodeType": "VariableDeclaration",
                                "scope": 2660,
                                "src": "3921:25:22",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "typeName": {
                                  "id": 2647,
                                  "name": "bool",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3921:4:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 2649,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3921:25:22"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "4041:245:22",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "4137:135:22",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "additionalRecipientsItemType",
                                        "nodeType": "YulIdentifier",
                                        "src": "4185:28:22"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "callvalue",
                                              "nodeType": "YulIdentifier",
                                              "src": "4242:9:22"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "4242:11:22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "4235:6:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4235:19:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "4161:2:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4161:111:22"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "correctPayableStatus",
                                      "nodeType": "YulIdentifier",
                                      "src": "4137:20:22"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 2644,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "4185:28:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2648,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "4137:20:22",
                                "valueSize": 1
                              }
                            ],
                            "id": 2650,
                            "nodeType": "InlineAssembly",
                            "src": "4032:254:22"
                          },
                          {
                            "condition": {
                              "id": 2652,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "!",
                              "prefix": true,
                              "src": "4454:21:22",
                              "subExpression": {
                                "id": 2651,
                                "name": "correctPayableStatus",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2648,
                                "src": "4455:20:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 2659,
                            "nodeType": "IfStatement",
                            "src": "4450:93:22",
                            "trueBody": {
                              "id": 2658,
                              "nodeType": "Block",
                              "src": "4477:66:22",
                              "statements": [
                                {
                                  "errorCall": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 2654,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -15,
                                          "src": "4518:3:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 2655,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "value",
                                        "nodeType": "MemberAccess",
                                        "src": "4518:9:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 2653,
                                      "name": "InvalidMsgValue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1917,
                                      "src": "4502:15:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$",
                                        "typeString": "function (uint256) pure"
                                      }
                                    },
                                    "id": 2656,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4502:26:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 2657,
                                  "nodeType": "RevertStatement",
                                  "src": "4495:33:22"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "assignments": [
                          2662
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2662,
                            "mutability": "mutable",
                            "name": "additionalRecipientsToken",
                            "nameLocation": "4651:25:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 2864,
                            "src": "4643:33:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 2661,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4643:7:22",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2663,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4643:33:22"
                      },
                      {
                        "assignments": [
                          2666
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2666,
                            "mutability": "mutable",
                            "name": "receivedItemType",
                            "nameLocation": "4695:16:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 2864,
                            "src": "4686:25:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ItemType_$3854",
                              "typeString": "enum ItemType"
                            },
                            "typeName": {
                              "id": 2665,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2664,
                                "name": "ItemType",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3854,
                                "src": "4686:8:22"
                              },
                              "referencedDeclaration": 3854,
                              "src": "4686:8:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                "typeString": "enum ItemType"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2667,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4686:25:22"
                      },
                      {
                        "assignments": [
                          2670
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2670,
                            "mutability": "mutable",
                            "name": "offeredItemType",
                            "nameLocation": "4730:15:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 2864,
                            "src": "4721:24:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ItemType_$3854",
                              "typeString": "enum ItemType"
                            },
                            "typeName": {
                              "id": 2669,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 2668,
                                "name": "ItemType",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3854,
                                "src": "4721:8:22"
                              },
                              "referencedDeclaration": 3854,
                              "src": "4721:8:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                "typeString": "enum ItemType"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2671,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4721:24:22"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "4840:1179:22",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4935:55:22",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "route",
                                    "nodeType": "YulIdentifier",
                                    "src": "4981:5:22"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "4988:1:22",
                                    "type": "",
                                    "value": "3"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4978:2:22"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4978:12:22"
                              },
                              "variables": [
                                {
                                  "name": "offerTypeIsAdditionalRecipientsType",
                                  "nodeType": "YulTypedName",
                                  "src": "4939:35:22",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5080:224:22",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_considerationToken_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5164:35:22"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "offerTypeIsAdditionalRecipientsType",
                                            "nodeType": "YulIdentifier",
                                            "src": "5225:35:22"
                                          },
                                          {
                                            "name": "FiveWords",
                                            "nodeType": "YulIdentifier",
                                            "src": "5262:9:22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "5221:3:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5221:51:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5139:3:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5139:151:22"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "5109:12:22"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5109:195:22"
                              },
                              "variableNames": [
                                {
                                  "name": "additionalRecipientsToken",
                                  "nodeType": "YulIdentifier",
                                  "src": "5080:25:22"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5470:117:22",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "route",
                                            "nodeType": "YulIdentifier",
                                            "src": "5519:5:22"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5526:1:22",
                                            "type": "",
                                            "value": "2"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "5515:3:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5515:13:22"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "route",
                                            "nodeType": "YulIdentifier",
                                            "src": "5533:5:22"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5540:1:22",
                                            "type": "",
                                            "value": "2"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "gt",
                                          "nodeType": "YulIdentifier",
                                          "src": "5530:2:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5530:12:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "5511:3:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5511:32:22"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "route",
                                        "nodeType": "YulIdentifier",
                                        "src": "5564:5:22"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "5571:1:22",
                                        "type": "",
                                        "value": "2"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "eq",
                                      "nodeType": "YulIdentifier",
                                      "src": "5561:2:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5561:12:22"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "5490:3:22"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5490:97:22"
                              },
                              "variableNames": [
                                {
                                  "name": "receivedItemType",
                                  "nodeType": "YulIdentifier",
                                  "src": "5470:16:22"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5757:252:22",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "route",
                                        "nodeType": "YulIdentifier",
                                        "src": "5801:5:22"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "additionalRecipientsItemType",
                                                "nodeType": "YulIdentifier",
                                                "src": "5819:28:22"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "5812:6:22"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "5812:36:22"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5850:1:22",
                                            "type": "",
                                            "value": "2"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "5808:3:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5808:44:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "5797:3:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5797:56:22"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offerTypeIsAdditionalRecipientsType",
                                        "nodeType": "YulIdentifier",
                                        "src": "5896:35:22"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "receivedItemType",
                                            "nodeType": "YulIdentifier",
                                            "src": "5957:16:22"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "5975:1:22",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "5953:3:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "5953:24:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "5871:3:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "5871:124:22"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "5776:3:22"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5776:233:22"
                              },
                              "variableNames": [
                                {
                                  "name": "offeredItemType",
                                  "nodeType": "YulIdentifier",
                                  "src": "5757:15:22"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3579,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5164:35:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3497,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5262:9:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2644,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5819:28:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2662,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5080:25:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2670,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5757:15:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2666,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5470:16:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2666,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5957:16:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2636,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4981:5:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2636,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5519:5:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2636,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5533:5:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2636,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5564:5:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2636,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5801:5:22",
                            "valueSize": 1
                          }
                        ],
                        "id": 2672,
                        "nodeType": "InlineAssembly",
                        "src": "4831:1188:22"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2674,
                              "name": "parameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2629,
                              "src": "6156:10:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                "typeString": "struct BasicOrderParameters calldata"
                              }
                            },
                            {
                              "id": 2675,
                              "name": "orderType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2640,
                              "src": "6180:9:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_OrderType_$3815",
                                "typeString": "enum OrderType"
                              }
                            },
                            {
                              "id": 2676,
                              "name": "receivedItemType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2666,
                              "src": "6203:16:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                "typeString": "enum ItemType"
                              }
                            },
                            {
                              "id": 2677,
                              "name": "additionalRecipientsItemType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2644,
                              "src": "6233:28:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                "typeString": "enum ItemType"
                              }
                            },
                            {
                              "id": 2678,
                              "name": "additionalRecipientsToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2662,
                              "src": "6275:25:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2679,
                              "name": "offeredItemType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2670,
                              "src": "6314:15:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                "typeString": "enum ItemType"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                "typeString": "struct BasicOrderParameters calldata"
                              },
                              {
                                "typeIdentifier": "t_enum$_OrderType_$3815",
                                "typeString": "enum OrderType"
                              },
                              {
                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                "typeString": "enum ItemType"
                              },
                              {
                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                "typeString": "enum ItemType"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                "typeString": "enum ItemType"
                              }
                            ],
                            "id": 2673,
                            "name": "_prepareBasicFulfillmentFromCalldata",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2965,
                            "src": "6106:36:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_BasicOrderParameters_$3980_calldata_ptr_$_t_enum$_OrderType_$3815_$_t_enum$_ItemType_$3854_$_t_enum$_ItemType_$3854_$_t_address_$_t_enum$_ItemType_$3854_$returns$__$",
                              "typeString": "function (struct BasicOrderParameters calldata,enum OrderType,enum ItemType,enum ItemType,address,enum ItemType)"
                            }
                          },
                          "id": 2680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6106:233:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2681,
                        "nodeType": "ExpressionStatement",
                        "src": "6106:233:22"
                      },
                      {
                        "assignments": [
                          2683
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2683,
                            "mutability": "mutable",
                            "name": "offerer",
                            "nameLocation": "6428:7:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 2864,
                            "src": "6412:23:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            "typeName": {
                              "id": 2682,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "6412:15:22",
                              "stateMutability": "payable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2686,
                        "initialValue": {
                          "expression": {
                            "id": 2684,
                            "name": "parameters",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2629,
                            "src": "6438:10:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                              "typeString": "struct BasicOrderParameters calldata"
                            }
                          },
                          "id": 2685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "offerer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3948,
                          "src": "6438:18:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6412:44:22"
                      },
                      {
                        "assignments": [
                          2688
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2688,
                            "mutability": "mutable",
                            "name": "conduitKey",
                            "nameLocation": "6542:10:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 2864,
                            "src": "6534:18:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 2687,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "6534:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2689,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6534:18:22"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "6648:226:22",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "6742:122:22",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_offererConduit_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "6790:31:22"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "route",
                                                "nodeType": "YulIdentifier",
                                                "src": "6830:5:22"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "6837:1:22",
                                                "type": "",
                                                "value": "3"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "gt",
                                              "nodeType": "YulIdentifier",
                                              "src": "6827:2:22"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "6827:12:22"
                                          },
                                          {
                                            "name": "OneWord",
                                            "nodeType": "YulIdentifier",
                                            "src": "6841:7:22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "6823:3:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "6823:26:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "6786:3:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6786:64:22"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6756:12:22"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6756:108:22"
                              },
                              "variableNames": [
                                {
                                  "name": "conduitKey",
                                  "nodeType": "YulIdentifier",
                                  "src": "6742:10:22"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3603,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6790:31:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6841:7:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2688,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6742:10:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2636,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6830:5:22",
                            "valueSize": 1
                          }
                        ],
                        "id": 2690,
                        "nodeType": "InlineAssembly",
                        "src": "6639:235:22"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_ItemType_$3854",
                            "typeString": "enum ItemType"
                          },
                          "id": 2694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2691,
                            "name": "additionalRecipientsItemType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2644,
                            "src": "6935:28:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ItemType_$3854",
                              "typeString": "enum ItemType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 2692,
                              "name": "ItemType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3854,
                              "src": "6967:8:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ItemType_$3854_$",
                                "typeString": "type(enum ItemType)"
                              }
                            },
                            "id": 2693,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "NATIVE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3848,
                            "src": "6967:15:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ItemType_$3854",
                              "typeString": "enum ItemType"
                            }
                          },
                          "src": "6935:47:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 2860,
                          "nodeType": "Block",
                          "src": "7553:4334:22",
                          "statements": [
                            {
                              "assignments": [
                                2719
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2719,
                                  "mutability": "mutable",
                                  "name": "accumulator",
                                  "nameLocation": "7950:11:22",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 2860,
                                  "src": "7937:24:22",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 2718,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7937:5:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 2724,
                              "initialValue": {
                                "arguments": [
                                  {
                                    "id": 2722,
                                    "name": "AccumulatorDisarmed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3769,
                                    "src": "7974:19:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2721,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "NewExpression",
                                  "src": "7964:9:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function (uint256) pure returns (bytes memory)"
                                  },
                                  "typeName": {
                                    "id": 2720,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7968:5:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  }
                                },
                                "id": 2723,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7964:30:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "7937:57:22"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_enum$_BasicOrderRouteType_$3847",
                                  "typeString": "enum BasicOrderRouteType"
                                },
                                "id": 2728,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 2725,
                                  "name": "route",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2636,
                                  "src": "8013:5:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BasicOrderRouteType_$3847",
                                    "typeString": "enum BasicOrderRouteType"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 2726,
                                    "name": "BasicOrderRouteType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3847,
                                    "src": "8022:19:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_BasicOrderRouteType_$3847_$",
                                      "typeString": "type(enum BasicOrderRouteType)"
                                    }
                                  },
                                  "id": 2727,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "ERC20_TO_ERC721",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3843,
                                  "src": "8022:35:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_BasicOrderRouteType_$3847",
                                    "typeString": "enum BasicOrderRouteType"
                                  }
                                },
                                "src": "8013:44:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_BasicOrderRouteType_$3847",
                                    "typeString": "enum BasicOrderRouteType"
                                  },
                                  "id": 2761,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 2758,
                                    "name": "route",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2636,
                                    "src": "8942:5:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_BasicOrderRouteType_$3847",
                                      "typeString": "enum BasicOrderRouteType"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 2759,
                                      "name": "BasicOrderRouteType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3847,
                                      "src": "8951:19:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_BasicOrderRouteType_$3847_$",
                                        "typeString": "type(enum BasicOrderRouteType)"
                                      }
                                    },
                                    "id": 2760,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "ERC20_TO_ERC1155",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3844,
                                    "src": "8951:36:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_BasicOrderRouteType_$3847",
                                      "typeString": "enum BasicOrderRouteType"
                                    }
                                  },
                                  "src": "8942:45:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_BasicOrderRouteType_$3847",
                                      "typeString": "enum BasicOrderRouteType"
                                    },
                                    "id": 2794,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 2791,
                                      "name": "route",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2636,
                                      "src": "9873:5:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_BasicOrderRouteType_$3847",
                                        "typeString": "enum BasicOrderRouteType"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 2792,
                                        "name": "BasicOrderRouteType",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3847,
                                        "src": "9882:19:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_BasicOrderRouteType_$3847_$",
                                          "typeString": "type(enum BasicOrderRouteType)"
                                        }
                                      },
                                      "id": 2793,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "ERC721_TO_ERC20",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3845,
                                      "src": "9882:35:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_BasicOrderRouteType_$3847",
                                        "typeString": "enum BasicOrderRouteType"
                                      }
                                    },
                                    "src": "9873:44:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 2852,
                                    "nodeType": "Block",
                                    "src": "10806:948:22",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "expression": {
                                                "id": 2825,
                                                "name": "parameters",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2629,
                                                "src": "11009:10:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                  "typeString": "struct BasicOrderParameters calldata"
                                                }
                                              },
                                              "id": 2826,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "considerationToken",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3942,
                                              "src": "11009:29:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 2827,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -15,
                                                "src": "11060:3:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_message",
                                                  "typeString": "msg"
                                                }
                                              },
                                              "id": 2828,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "sender",
                                              "nodeType": "MemberAccess",
                                              "src": "11060:10:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "id": 2829,
                                              "name": "offerer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2683,
                                              "src": "11092:7:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 2830,
                                                "name": "parameters",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2629,
                                                "src": "11121:10:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                  "typeString": "struct BasicOrderParameters calldata"
                                                }
                                              },
                                              "id": 2831,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "considerationIdentifier",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3944,
                                              "src": "11121:34:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 2832,
                                                "name": "parameters",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2629,
                                                "src": "11177:10:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                  "typeString": "struct BasicOrderParameters calldata"
                                                }
                                              },
                                              "id": 2833,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "considerationAmount",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3946,
                                              "src": "11177:30:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "id": 2834,
                                              "name": "conduitKey",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2688,
                                              "src": "11229:10:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            {
                                              "id": 2835,
                                              "name": "accumulator",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2719,
                                              "src": "11261:11:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            ],
                                            "id": 2824,
                                            "name": "_transferERC1155",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4843,
                                            "src": "10971:16:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                              "typeString": "function (address,address,address,uint256,uint256,bytes32,bytes memory)"
                                            }
                                          },
                                          "id": 2836,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "10971:319:22",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 2837,
                                        "nodeType": "ExpressionStatement",
                                        "src": "10971:319:22"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 2839,
                                              "name": "offerer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2683,
                                              "src": "11428:7:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 2840,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -15,
                                                "src": "11457:3:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_message",
                                                  "typeString": "msg"
                                                }
                                              },
                                              "id": 2841,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "sender",
                                              "nodeType": "MemberAccess",
                                              "src": "11457:10:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 2842,
                                                "name": "parameters",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2629,
                                                "src": "11489:10:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                  "typeString": "struct BasicOrderParameters calldata"
                                                }
                                              },
                                              "id": 2843,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "offerToken",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3952,
                                              "src": "11489:21:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 2844,
                                                "name": "parameters",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2629,
                                                "src": "11532:10:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                  "typeString": "struct BasicOrderParameters calldata"
                                                }
                                              },
                                              "id": 2845,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "offerAmount",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3956,
                                              "src": "11532:22:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 2846,
                                                "name": "parameters",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2629,
                                                "src": "11576:10:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                  "typeString": "struct BasicOrderParameters calldata"
                                                }
                                              },
                                              "id": 2847,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "additionalRecipients",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3977,
                                              "src": "11576:31:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct AdditionalRecipient calldata[] calldata"
                                              }
                                            },
                                            {
                                              "hexValue": "74727565",
                                              "id": 2848,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "bool",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "11629:4:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              "value": "true"
                                            },
                                            {
                                              "id": 2849,
                                              "name": "accumulator",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2719,
                                              "src": "11710:11:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              },
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct AdditionalRecipient calldata[] calldata"
                                              },
                                              {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            ],
                                            "id": 2838,
                                            "name": "_transferERC20AndFinalize",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3151,
                                            "src": "11381:25:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr_$_t_bool_$_t_bytes_memory_ptr_$returns$__$",
                                              "typeString": "function (address,address,address,uint256,struct AdditionalRecipient calldata[] calldata,bool,bytes memory)"
                                            }
                                          },
                                          "id": 2850,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "11381:358:22",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 2851,
                                        "nodeType": "ExpressionStatement",
                                        "src": "11381:358:22"
                                      }
                                    ]
                                  },
                                  "id": 2853,
                                  "nodeType": "IfStatement",
                                  "src": "9869:1885:22",
                                  "trueBody": {
                                    "id": 2823,
                                    "nodeType": "Block",
                                    "src": "9919:881:22",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "expression": {
                                                "id": 2796,
                                                "name": "parameters",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2629,
                                                "src": "10055:10:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                  "typeString": "struct BasicOrderParameters calldata"
                                                }
                                              },
                                              "id": 2797,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "considerationToken",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3942,
                                              "src": "10055:29:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 2798,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -15,
                                                "src": "10106:3:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_message",
                                                  "typeString": "msg"
                                                }
                                              },
                                              "id": 2799,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "sender",
                                              "nodeType": "MemberAccess",
                                              "src": "10106:10:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "id": 2800,
                                              "name": "offerer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2683,
                                              "src": "10138:7:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 2801,
                                                "name": "parameters",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2629,
                                                "src": "10167:10:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                  "typeString": "struct BasicOrderParameters calldata"
                                                }
                                              },
                                              "id": 2802,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "considerationIdentifier",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3944,
                                              "src": "10167:34:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 2803,
                                                "name": "parameters",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2629,
                                                "src": "10223:10:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                  "typeString": "struct BasicOrderParameters calldata"
                                                }
                                              },
                                              "id": 2804,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "considerationAmount",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3946,
                                              "src": "10223:30:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "id": 2805,
                                              "name": "conduitKey",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2688,
                                              "src": "10275:10:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            {
                                              "id": 2806,
                                              "name": "accumulator",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2719,
                                              "src": "10307:11:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            ],
                                            "id": 2795,
                                            "name": "_transferERC721",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4784,
                                            "src": "10018:15:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                              "typeString": "function (address,address,address,uint256,uint256,bytes32,bytes memory)"
                                            }
                                          },
                                          "id": 2807,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "10018:318:22",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 2808,
                                        "nodeType": "ExpressionStatement",
                                        "src": "10018:318:22"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 2810,
                                              "name": "offerer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2683,
                                              "src": "10474:7:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 2811,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -15,
                                                "src": "10503:3:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_message",
                                                  "typeString": "msg"
                                                }
                                              },
                                              "id": 2812,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "sender",
                                              "nodeType": "MemberAccess",
                                              "src": "10503:10:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 2813,
                                                "name": "parameters",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2629,
                                                "src": "10535:10:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                  "typeString": "struct BasicOrderParameters calldata"
                                                }
                                              },
                                              "id": 2814,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "offerToken",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3952,
                                              "src": "10535:21:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 2815,
                                                "name": "parameters",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2629,
                                                "src": "10578:10:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                  "typeString": "struct BasicOrderParameters calldata"
                                                }
                                              },
                                              "id": 2816,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "offerAmount",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3956,
                                              "src": "10578:22:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 2817,
                                                "name": "parameters",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 2629,
                                                "src": "10622:10:22",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                  "typeString": "struct BasicOrderParameters calldata"
                                                }
                                              },
                                              "id": 2818,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "additionalRecipients",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3977,
                                              "src": "10622:31:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct AdditionalRecipient calldata[] calldata"
                                              }
                                            },
                                            {
                                              "hexValue": "74727565",
                                              "id": 2819,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "bool",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "10675:4:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              "value": "true"
                                            },
                                            {
                                              "id": 2820,
                                              "name": "accumulator",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2719,
                                              "src": "10756:11:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                              },
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct AdditionalRecipient calldata[] calldata"
                                              },
                                              {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              },
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            ],
                                            "id": 2809,
                                            "name": "_transferERC20AndFinalize",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3151,
                                            "src": "10427:25:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr_$_t_bool_$_t_bytes_memory_ptr_$returns$__$",
                                              "typeString": "function (address,address,address,uint256,struct AdditionalRecipient calldata[] calldata,bool,bytes memory)"
                                            }
                                          },
                                          "id": 2821,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "10427:358:22",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 2822,
                                        "nodeType": "ExpressionStatement",
                                        "src": "10427:358:22"
                                      }
                                    ]
                                  }
                                },
                                "id": 2854,
                                "nodeType": "IfStatement",
                                "src": "8938:2816:22",
                                "trueBody": {
                                  "id": 2790,
                                  "nodeType": "Block",
                                  "src": "8989:874:22",
                                  "statements": [
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "expression": {
                                              "id": 2763,
                                              "name": "parameters",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2629,
                                              "src": "9126:10:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                "typeString": "struct BasicOrderParameters calldata"
                                              }
                                            },
                                            "id": 2764,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "offerToken",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3952,
                                            "src": "9126:21:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 2765,
                                            "name": "offerer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2683,
                                            "src": "9169:7:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 2766,
                                              "name": "msg",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -15,
                                              "src": "9198:3:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                              }
                                            },
                                            "id": 2767,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sender",
                                            "nodeType": "MemberAccess",
                                            "src": "9198:10:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 2768,
                                              "name": "parameters",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2629,
                                              "src": "9230:10:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                "typeString": "struct BasicOrderParameters calldata"
                                              }
                                            },
                                            "id": 2769,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "offerIdentifier",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3954,
                                            "src": "9230:26:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 2770,
                                              "name": "parameters",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2629,
                                              "src": "9278:10:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                "typeString": "struct BasicOrderParameters calldata"
                                              }
                                            },
                                            "id": 2771,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "offerAmount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3956,
                                            "src": "9278:22:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "id": 2772,
                                            "name": "conduitKey",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2688,
                                            "src": "9322:10:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          {
                                            "id": 2773,
                                            "name": "accumulator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2719,
                                            "src": "9354:11:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 2762,
                                          "name": "_transferERC1155",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4843,
                                          "src": "9088:16:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                            "typeString": "function (address,address,address,uint256,uint256,bytes32,bytes memory)"
                                          }
                                        },
                                        "id": 2774,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9088:295:22",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 2775,
                                      "nodeType": "ExpressionStatement",
                                      "src": "9088:295:22"
                                    },
                                    {
                                      "expression": {
                                        "arguments": [
                                          {
                                            "expression": {
                                              "id": 2777,
                                              "name": "msg",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -15,
                                              "src": "9521:3:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                              }
                                            },
                                            "id": 2778,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sender",
                                            "nodeType": "MemberAccess",
                                            "src": "9521:10:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 2779,
                                            "name": "offerer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2683,
                                            "src": "9553:7:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 2780,
                                              "name": "parameters",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2629,
                                              "src": "9582:10:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                "typeString": "struct BasicOrderParameters calldata"
                                              }
                                            },
                                            "id": 2781,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "considerationToken",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3942,
                                            "src": "9582:29:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 2782,
                                              "name": "parameters",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2629,
                                              "src": "9633:10:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                "typeString": "struct BasicOrderParameters calldata"
                                              }
                                            },
                                            "id": 2783,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "considerationAmount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3946,
                                            "src": "9633:30:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 2784,
                                              "name": "parameters",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2629,
                                              "src": "9685:10:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                                "typeString": "struct BasicOrderParameters calldata"
                                              }
                                            },
                                            "id": 2785,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "additionalRecipients",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3977,
                                            "src": "9685:31:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                                              "typeString": "struct AdditionalRecipient calldata[] calldata"
                                            }
                                          },
                                          {
                                            "hexValue": "66616c7365",
                                            "id": 2786,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9738:5:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "false"
                                          },
                                          {
                                            "id": 2787,
                                            "name": "accumulator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2719,
                                            "src": "9819:11:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address_payable",
                                              "typeString": "address payable"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                                              "typeString": "struct AdditionalRecipient calldata[] calldata"
                                            },
                                            {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 2776,
                                          "name": "_transferERC20AndFinalize",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3151,
                                          "src": "9474:25:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr_$_t_bool_$_t_bytes_memory_ptr_$returns$__$",
                                            "typeString": "function (address,address,address,uint256,struct AdditionalRecipient calldata[] calldata,bool,bytes memory)"
                                          }
                                        },
                                        "id": 2788,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "9474:374:22",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 2789,
                                      "nodeType": "ExpressionStatement",
                                      "src": "9474:374:22"
                                    }
                                  ]
                                }
                              },
                              "id": 2855,
                              "nodeType": "IfStatement",
                              "src": "8009:3745:22",
                              "trueBody": {
                                "id": 2757,
                                "nodeType": "Block",
                                "src": "8059:873:22",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 2730,
                                            "name": "parameters",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2629,
                                            "src": "8195:10:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                              "typeString": "struct BasicOrderParameters calldata"
                                            }
                                          },
                                          "id": 2731,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "offerToken",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3952,
                                          "src": "8195:21:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 2732,
                                          "name": "offerer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2683,
                                          "src": "8238:7:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 2733,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "8267:3:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 2734,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "8267:10:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 2735,
                                            "name": "parameters",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2629,
                                            "src": "8299:10:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                              "typeString": "struct BasicOrderParameters calldata"
                                            }
                                          },
                                          "id": 2736,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "offerIdentifier",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3954,
                                          "src": "8299:26:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 2737,
                                            "name": "parameters",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2629,
                                            "src": "8347:10:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                              "typeString": "struct BasicOrderParameters calldata"
                                            }
                                          },
                                          "id": 2738,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "offerAmount",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3956,
                                          "src": "8347:22:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 2739,
                                          "name": "conduitKey",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2688,
                                          "src": "8391:10:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "id": 2740,
                                          "name": "accumulator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2719,
                                          "src": "8423:11:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 2729,
                                        "name": "_transferERC721",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4784,
                                        "src": "8158:15:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                          "typeString": "function (address,address,address,uint256,uint256,bytes32,bytes memory)"
                                        }
                                      },
                                      "id": 2741,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8158:294:22",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2742,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8158:294:22"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 2744,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "8590:3:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 2745,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "src": "8590:10:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 2746,
                                          "name": "offerer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2683,
                                          "src": "8622:7:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 2747,
                                            "name": "parameters",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2629,
                                            "src": "8651:10:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                              "typeString": "struct BasicOrderParameters calldata"
                                            }
                                          },
                                          "id": 2748,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "considerationToken",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3942,
                                          "src": "8651:29:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 2749,
                                            "name": "parameters",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2629,
                                            "src": "8702:10:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                              "typeString": "struct BasicOrderParameters calldata"
                                            }
                                          },
                                          "id": 2750,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "considerationAmount",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3946,
                                          "src": "8702:30:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "expression": {
                                            "id": 2751,
                                            "name": "parameters",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2629,
                                            "src": "8754:10:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                              "typeString": "struct BasicOrderParameters calldata"
                                            }
                                          },
                                          "id": 2752,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "additionalRecipients",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3977,
                                          "src": "8754:31:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                                            "typeString": "struct AdditionalRecipient calldata[] calldata"
                                          }
                                        },
                                        {
                                          "hexValue": "66616c7365",
                                          "id": 2753,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "bool",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8807:5:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "value": "false"
                                        },
                                        {
                                          "id": 2754,
                                          "name": "accumulator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2719,
                                          "src": "8888:11:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                                            "typeString": "struct AdditionalRecipient calldata[] calldata"
                                          },
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 2743,
                                        "name": "_transferERC20AndFinalize",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3151,
                                        "src": "8543:25:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr_$_t_bool_$_t_bytes_memory_ptr_$returns$__$",
                                          "typeString": "function (address,address,address,uint256,struct AdditionalRecipient calldata[] calldata,bool,bytes memory)"
                                        }
                                      },
                                      "id": 2755,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "8543:374:22",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 2756,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8543:374:22"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2857,
                                    "name": "accumulator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2719,
                                    "src": "11864:11:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 2856,
                                  "name": "_triggerIfArmed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4892,
                                  "src": "11848:15:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (bytes memory)"
                                  }
                                },
                                "id": 2858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11848:28:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2859,
                              "nodeType": "ExpressionStatement",
                              "src": "11848:28:22"
                            }
                          ]
                        },
                        "id": 2861,
                        "nodeType": "IfStatement",
                        "src": "6931:4956:22",
                        "trueBody": {
                          "id": 2717,
                          "nodeType": "Block",
                          "src": "6984:563:22",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 2696,
                                    "name": "offeredItemType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2670,
                                    "src": "7048:15:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ItemType_$3854",
                                      "typeString": "enum ItemType"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 2697,
                                      "name": "parameters",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2629,
                                      "src": "7081:10:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                        "typeString": "struct BasicOrderParameters calldata"
                                      }
                                    },
                                    "id": 2698,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "offerToken",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3952,
                                    "src": "7081:21:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 2699,
                                    "name": "offerer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2683,
                                    "src": "7120:7:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 2700,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "7145:3:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 2701,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "7145:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 2702,
                                      "name": "parameters",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2629,
                                      "src": "7173:10:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                        "typeString": "struct BasicOrderParameters calldata"
                                      }
                                    },
                                    "id": 2703,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "offerIdentifier",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3954,
                                    "src": "7173:26:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 2704,
                                      "name": "parameters",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2629,
                                      "src": "7217:10:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                        "typeString": "struct BasicOrderParameters calldata"
                                      }
                                    },
                                    "id": 2705,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "offerAmount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3956,
                                    "src": "7217:22:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2706,
                                    "name": "conduitKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2688,
                                    "src": "7257:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_ItemType_$3854",
                                      "typeString": "enum ItemType"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 2695,
                                  "name": "_transferIndividual721Or1155Item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4634,
                                  "src": "6998:32:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_enum$_ItemType_$3854_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$returns$__$",
                                    "typeString": "function (enum ItemType,address,address,address,uint256,uint256,bytes32)"
                                  }
                                },
                                "id": 2707,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6998:283:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2708,
                              "nodeType": "ExpressionStatement",
                              "src": "6998:283:22"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 2710,
                                      "name": "parameters",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2629,
                                      "src": "7418:10:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                        "typeString": "struct BasicOrderParameters calldata"
                                      }
                                    },
                                    "id": 2711,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "considerationAmount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3946,
                                    "src": "7418:30:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 2712,
                                    "name": "offerer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2683,
                                    "src": "7466:7:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 2713,
                                      "name": "parameters",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2629,
                                      "src": "7491:10:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                        "typeString": "struct BasicOrderParameters calldata"
                                      }
                                    },
                                    "id": 2714,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "additionalRecipients",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3977,
                                    "src": "7491:31:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "struct AdditionalRecipient calldata[] calldata"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                                      "typeString": "struct AdditionalRecipient calldata[] calldata"
                                    }
                                  ],
                                  "id": 2709,
                                  "name": "_transferEthAndFinalize",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3066,
                                  "src": "7377:23:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_payable_$_t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr_$returns$__$",
                                    "typeString": "function (uint256,address payable,struct AdditionalRecipient calldata[] calldata)"
                                  }
                                },
                                "id": 2715,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7377:159:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 2716,
                              "nodeType": "ExpressionStatement",
                              "src": "7377:159:22"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 2862,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11904:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 2633,
                        "id": 2863,
                        "nodeType": "Return",
                        "src": "11897:11:22"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2626,
                    "nodeType": "StructuredDocumentation",
                    "src": "1265:1612:22",
                    "text": " @dev Internal function to fulfill an order offering an ERC20, ERC721, or\n      ERC1155 item by supplying Ether (or other native tokens), ERC20\n      tokens, an ERC721 item, or an ERC1155 item as consideration. Six\n      permutations are supported: Native token to ERC721, Native token to\n      ERC1155, ERC20 to ERC721, ERC20 to ERC1155, ERC721 to ERC20, and\n      ERC1155 to ERC20 (with native tokens supplied as msg.value). For an\n      order to be eligible for fulfillment via this method, it must\n      contain a single offer item (though that item may have a greater\n      amount if the item is not an ERC721). An arbitrary number of\n      \"additional recipients\" may also be supplied which will each receive\n      native tokens or ERC20 items from the fulfiller as consideration.\n      Refer to the documentation for a more comprehensive summary of how\n      to utilize this method and what orders are compatible with it.\n @param parameters Additional information on the fulfilled order. Note\n                   that the offerer and the fulfiller must first approve\n                   this contract (or their chosen conduit if indicated)\n                   before any tokens can be transferred. Also note that\n                   contract recipients of ERC1155 consideration items must\n                   implement `onERC1155Received` in order to receive those\n                   items.\n @return A boolean indicating whether the order has been fulfilled."
                  },
                  "id": 2865,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_validateAndFulfillBasicOrder",
                  "nameLocation": "2891:29:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2630,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2629,
                        "mutability": "mutable",
                        "name": "parameters",
                        "nameLocation": "2960:10:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 2865,
                        "src": "2930:40:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                          "typeString": "struct BasicOrderParameters"
                        },
                        "typeName": {
                          "id": 2628,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2627,
                            "name": "BasicOrderParameters",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3980,
                            "src": "2930:20:22"
                          },
                          "referencedDeclaration": 3980,
                          "src": "2930:20:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_storage_ptr",
                            "typeString": "struct BasicOrderParameters"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2920:56:22"
                  },
                  "returnParameters": {
                    "id": 2633,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2632,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 2865,
                        "src": "2995:4:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 2631,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "2995:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2994:6:22"
                  },
                  "scope": 3152,
                  "src": "2882:9033:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 2964,
                    "nodeType": "Block",
                    "src": "14072:24599:22",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2886,
                            "name": "_setReentrancyGuard",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7745,
                            "src": "14159:19:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 2887,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14159:21:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2888,
                        "nodeType": "ExpressionStatement",
                        "src": "14159:21:22"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 2890,
                                "name": "parameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2869,
                                "src": "14284:10:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                  "typeString": "struct BasicOrderParameters calldata"
                                }
                              },
                              "id": 2891,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "startTime",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3961,
                              "src": "14284:20:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 2892,
                                "name": "parameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2869,
                                "src": "14306:10:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                  "typeString": "struct BasicOrderParameters calldata"
                                }
                              },
                              "id": 2893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "endTime",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3963,
                              "src": "14306:18:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 2894,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14326:4:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 2889,
                            "name": "_verifyTime",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8284,
                            "src": "14272:11:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_bool_$",
                              "typeString": "function (uint256,uint256,bool) view returns (bool)"
                            }
                          },
                          "id": 2895,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14272:59:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 2896,
                        "nodeType": "ExpressionStatement",
                        "src": "14272:59:22"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 2897,
                            "name": "_assertValidBasicOrderParameterOffsets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2593,
                            "src": "14616:38:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$__$returns$__$",
                              "typeString": "function () pure"
                            }
                          },
                          "id": 2898,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14616:40:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2899,
                        "nodeType": "ExpressionStatement",
                        "src": "14616:40:22"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2905,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "expression": {
                                    "id": 2901,
                                    "name": "parameters",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2869,
                                    "src": "14828:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                      "typeString": "struct BasicOrderParameters calldata"
                                    }
                                  },
                                  "id": 2902,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "additionalRecipients",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3977,
                                  "src": "14828:31:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                                    "typeString": "struct AdditionalRecipient calldata[] calldata"
                                  }
                                },
                                "id": 2903,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "14828:38:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 2904,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14869:1:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "14828:42:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 2906,
                                "name": "parameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2869,
                                "src": "14884:10:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                  "typeString": "struct BasicOrderParameters calldata"
                                }
                              },
                              "id": 2907,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "totalOriginalAdditionalRecipients",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3973,
                              "src": "14884:44:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2900,
                            "name": "_assertConsiderationLengthIsNotLessThanOriginalConsiderationLength",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2562,
                            "src": "14748:66:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256) pure"
                            }
                          },
                          "id": 2908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14748:190:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2909,
                        "nodeType": "ExpressionStatement",
                        "src": "14748:190:22"
                      },
                      {
                        "assignments": [
                          2911
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2911,
                            "mutability": "mutable",
                            "name": "orderHash",
                            "nameLocation": "15010:9:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 2964,
                            "src": "15002:17:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 2910,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "15002:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2912,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15002:17:22"
                      },
                      {
                        "id": 2919,
                        "nodeType": "Block",
                        "src": "15030:13217:22",
                        "statements": [
                          {
                            "assignments": [
                              2915
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2915,
                                "mutability": "mutable",
                                "name": "typeHash",
                                "nameLocation": "16142:8:22",
                                "nodeType": "VariableDeclaration",
                                "scope": 2919,
                                "src": "16134:16:22",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "typeName": {
                                  "id": 2914,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16134:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "documentation": " First, handle consideration items. Memory Layout:\n  0x60: final hash of the array of consideration item hashes\n  0x80-0x160: reused space for EIP712 hashing of each item\n   - 0x80: ConsiderationItem EIP-712 typehash (constant)\n   - 0xa0: itemType\n   - 0xc0: token\n   - 0xe0: identifier\n   - 0x100: startAmount\n   - 0x120: endAmount\n   - 0x140: recipient\n  0x160-END_ARR: array of consideration item hashes\n   - 0x160: primary consideration item EIP712 hash\n   - 0x180-END_ARR: additional recipient item EIP712 hashes\n  END_ARR: beginning of data for OrderFulfilled event\n   - END_ARR + 0x120: length of ReceivedItem array\n   - END_ARR + 0x140: beginning of data for first ReceivedItem\n (Note: END_ARR = 0x180 + RECIPIENTS_LENGTH * 0x20)",
                            "id": 2917,
                            "initialValue": {
                              "id": 2916,
                              "name": "_CONSIDERATION_ITEM_TYPEHASH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3172,
                              "src": "16153:28:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "16134:47:22"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "16327:11910:22",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_considerationItem_typeHash_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "16610:41:22"
                                      },
                                      {
                                        "name": "typeHash",
                                        "nodeType": "YulIdentifier",
                                        "src": "16653:8:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "16603:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16603:59:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "16603:59:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_considerationItem_itemType_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "16707:41:22"
                                      },
                                      {
                                        "name": "receivedItemType",
                                        "nodeType": "YulIdentifier",
                                        "src": "16770:16:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "16679:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16679:125:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "16679:125:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_considerationItem_token_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "17143:38:22"
                                      },
                                      {
                                        "name": "BasicOrder_considerationToken_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "17203:35:22"
                                      },
                                      {
                                        "name": "ThreeWords",
                                        "nodeType": "YulIdentifier",
                                        "src": "17260:10:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldatacopy",
                                      "nodeType": "YulIdentifier",
                                      "src": "17109:12:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17109:179:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "17109:179:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_considerationItem_endAmount_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "17530:42:22"
                                      },
                                      {
                                        "name": "BasicOrder_considerationAmount_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "17594:36:22"
                                      },
                                      {
                                        "name": "TwoWords",
                                        "nodeType": "YulIdentifier",
                                        "src": "17652:8:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldatacopy",
                                      "nodeType": "YulIdentifier",
                                      "src": "17496:12:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17496:182:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "17496:182:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_considerationHashesArray_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "17860:39:22"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "BasicOrder_considerationItem_typeHash_ptr",
                                            "nodeType": "YulIdentifier",
                                            "src": "17956:41:22"
                                          },
                                          {
                                            "name": "EIP712_ConsiderationItem_size",
                                            "nodeType": "YulIdentifier",
                                            "src": "18023:29:22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "keccak256",
                                          "nodeType": "YulIdentifier",
                                          "src": "17921:9:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "17921:153:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "17832:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17832:260:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "17832:260:22"
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "18370:129:22",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_additionalRecipients_length_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "18437:44:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "18403:12:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18403:96:22"
                                  },
                                  "variables": [
                                    {
                                      "name": "totalAdditionalRecipients",
                                      "nodeType": "YulTypedName",
                                      "src": "18374:25:22",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "18622:182:22",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "OrderFulfilled_consideration_length_baseOffset",
                                        "nodeType": "YulIdentifier",
                                        "src": "18679:46:22"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "totalAdditionalRecipients",
                                            "nodeType": "YulIdentifier",
                                            "src": "18751:25:22"
                                          },
                                          {
                                            "name": "OneWord",
                                            "nodeType": "YulIdentifier",
                                            "src": "18778:7:22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "18747:3:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18747:39:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18654:3:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18654:150:22"
                                  },
                                  "variables": [
                                    {
                                      "name": "eventConsiderationArrPtr",
                                      "nodeType": "YulTypedName",
                                      "src": "18626:24:22",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "eventConsiderationArrPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "19034:24:22"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "BasicOrder_additionalRecipients_length_cdPtr",
                                                "nodeType": "YulIdentifier",
                                                "src": "19151:44:22"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "calldataload",
                                              "nodeType": "YulIdentifier",
                                              "src": "19109:12:22"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "19109:112:22"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "19247:1:22",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "19080:3:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19080:190:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "19006:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19006:282:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "19006:282:22"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "19432:124:22",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "eventConsiderationArrPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "19485:24:22"
                                      },
                                      {
                                        "name": "OneWord",
                                        "nodeType": "YulIdentifier",
                                        "src": "19531:7:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "19460:3:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19460:96:22"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "eventConsiderationArrPtr",
                                      "nodeType": "YulIdentifier",
                                      "src": "19432:24:22"
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "eventConsiderationArrPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "19657:24:22"
                                      },
                                      {
                                        "name": "receivedItemType",
                                        "nodeType": "YulIdentifier",
                                        "src": "19683:16:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "19650:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19650:50:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "19650:50:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "eventConsiderationArrPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "19905:24:22"
                                          },
                                          {
                                            "name": "Common_token_offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "19931:19:22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "19901:3:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "19901:50:22"
                                      },
                                      {
                                        "name": "BasicOrder_considerationToken_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "19973:35:22"
                                      },
                                      {
                                        "name": "FourWords",
                                        "nodeType": "YulIdentifier",
                                        "src": "20030:9:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldatacopy",
                                      "nodeType": "YulIdentifier",
                                      "src": "19867:12:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19867:190:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "19867:190:22"
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "20801:105:22",
                                  "value": {
                                    "name": "BasicOrder_considerationHashesArray_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "20867:39:22"
                                  },
                                  "variables": [
                                    {
                                      "name": "considerationHashesPtr",
                                      "nodeType": "YulTypedName",
                                      "src": "20825:22:22",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_considerationItem_itemType_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "21174:41:22"
                                      },
                                      {
                                        "name": "additionalRecipientsItemType",
                                        "nodeType": "YulIdentifier",
                                        "src": "21237:28:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "21146:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21146:137:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "21146:137:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_considerationItem_token_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "21328:38:22"
                                      },
                                      {
                                        "name": "additionalRecipientsToken",
                                        "nodeType": "YulIdentifier",
                                        "src": "21388:25:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "21300:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21300:131:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "21300:131:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_considerationItem_identifier_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "21455:43:22"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "21500:1:22",
                                        "type": "",
                                        "value": "0"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "21448:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21448:54:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "21448:54:22"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "21631:131:22",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_totalOriginalAdditionalRecipients_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "21694:50:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "21660:12:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21660:102:22"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "totalAdditionalRecipients",
                                      "nodeType": "YulIdentifier",
                                      "src": "21631:25:22"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "21779:10:22",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "21788:1:22",
                                    "type": "",
                                    "value": "0"
                                  },
                                  "variables": [
                                    {
                                      "name": "i",
                                      "nodeType": "YulTypedName",
                                      "src": "21783:1:22",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "21936:3269:22",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "22159:184:22",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "BasicOrder_additionalRecipients_data_cdPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "22220:42:22"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "AdditionalRecipients_size",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22292:25:22"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "22319:1:22"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mul",
                                                "nodeType": "YulIdentifier",
                                                "src": "22288:3:22"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "22288:33:22"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "22191:3:22"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22191:152:22"
                                        },
                                        "variables": [
                                          {
                                            "name": "additionalRecipientCdPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "22163:24:22",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "BasicOrder_considerationItem_startAmount_ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "22513:44:22"
                                            },
                                            {
                                              "name": "additionalRecipientCdPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "22583:24:22"
                                            },
                                            {
                                              "name": "OneWord",
                                              "nodeType": "YulIdentifier",
                                              "src": "22633:7:22"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldatacopy",
                                            "nodeType": "YulIdentifier",
                                            "src": "22475:12:22"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22475:187:22"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "22475:187:22"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "BasicOrder_considerationItem_endAmount_ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "22844:42:22"
                                            },
                                            {
                                              "name": "additionalRecipientCdPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "22912:24:22"
                                            },
                                            {
                                              "name": "AdditionalRecipients_size",
                                              "nodeType": "YulIdentifier",
                                              "src": "22962:25:22"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldatacopy",
                                            "nodeType": "YulIdentifier",
                                            "src": "22806:12:22"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22806:203:22"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "22806:203:22"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "23188:132:22",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "considerationHashesPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "23243:22:22"
                                            },
                                            {
                                              "name": "OneWord",
                                              "nodeType": "YulIdentifier",
                                              "src": "23291:7:22"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "23214:3:22"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23214:106:22"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "considerationHashesPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "23188:22:22"
                                          }
                                        ]
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "considerationHashesPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "23511:22:22"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "BasicOrder_considerationItem_typeHash_ptr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "23598:41:22"
                                                },
                                                {
                                                  "name": "EIP712_ConsiderationItem_size",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "23669:29:22"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "keccak256",
                                                "nodeType": "YulIdentifier",
                                                "src": "23559:9:22"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "23559:165:22"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "23479:6:22"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23479:267:22"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "23479:267:22"
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "24191:146:22",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "eventConsiderationArrPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "24248:24:22"
                                            },
                                            {
                                              "name": "ReceivedItem_size",
                                              "nodeType": "YulIdentifier",
                                              "src": "24298:17:22"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "24219:3:22"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24219:118:22"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "eventConsiderationArrPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "24191:24:22"
                                          }
                                        ]
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "eventConsiderationArrPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "24457:24:22"
                                            },
                                            {
                                              "name": "additionalRecipientsItemType",
                                              "nodeType": "YulIdentifier",
                                              "src": "24507:28:22"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "24425:6:22"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24425:132:22"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "24425:132:22"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "eventConsiderationArrPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24695:24:22"
                                                },
                                                {
                                                  "name": "OneWord",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24721:7:22"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "24691:3:22"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "24691:38:22"
                                            },
                                            {
                                              "name": "additionalRecipientsToken",
                                              "nodeType": "YulIdentifier",
                                              "src": "24755:25:22"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "24659:6:22"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24659:143:22"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "24659:143:22"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "eventConsiderationArrPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "24975:24:22"
                                                },
                                                {
                                                  "name": "ReceivedItem_amount_offset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "25029:26:22"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "24942:3:22"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "24942:139:22"
                                            },
                                            {
                                              "name": "additionalRecipientCdPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "25107:24:22"
                                            },
                                            {
                                              "name": "TwoWords",
                                              "nodeType": "YulIdentifier",
                                              "src": "25157:8:22"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldatacopy",
                                            "nodeType": "YulIdentifier",
                                            "src": "24904:12:22"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24904:283:22"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "24904:283:22"
                                      }
                                    ]
                                  },
                                  "condition": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "21851:1:22"
                                      },
                                      {
                                        "name": "totalAdditionalRecipients",
                                        "nodeType": "YulIdentifier",
                                        "src": "21854:25:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "21848:2:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21848:32:22"
                                  },
                                  "nodeType": "YulForLoop",
                                  "post": {
                                    "nodeType": "YulBlock",
                                    "src": "21881:54:22",
                                    "statements": [
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "21903:14:22",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "21912:1:22"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "21915:1:22",
                                              "type": "",
                                              "value": "1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "21908:3:22"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "21908:9:22"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulIdentifier",
                                            "src": "21903:1:22"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "pre": {
                                    "nodeType": "YulBlock",
                                    "src": "21845:2:22",
                                    "statements": []
                                  },
                                  "src": "21841:3364:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "receivedItemsHash_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "25676:21:22"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "BasicOrder_considerationHashesArray_ptr",
                                            "nodeType": "YulIdentifier",
                                            "src": "25754:39:22"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "totalAdditionalRecipients",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "25827:25:22"
                                                  },
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "25854:1:22",
                                                    "type": "",
                                                    "value": "1"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "25823:3:22"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "25823:33:22"
                                              },
                                              {
                                                "name": "OneWord",
                                                "nodeType": "YulIdentifier",
                                                "src": "25858:7:22"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "25819:3:22"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "25819:47:22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "keccak256",
                                          "nodeType": "YulIdentifier",
                                          "src": "25719:9:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25719:169:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "25648:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25648:258:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "25648:258:22"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "26325:125:22",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_additionalRecipients_length_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "26388:44:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "26354:12:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26354:96:22"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "totalAdditionalRecipients",
                                      "nodeType": "YulIdentifier",
                                      "src": "26325:25:22"
                                    }
                                  ]
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "26597:1626:22",
                                    "statements": [
                                      {
                                        "nodeType": "YulVariableDeclaration",
                                        "src": "26694:184:22",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "BasicOrder_additionalRecipients_data_cdPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "26755:42:22"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "AdditionalRecipients_size",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "26827:25:22"
                                                },
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "26854:1:22"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mul",
                                                "nodeType": "YulIdentifier",
                                                "src": "26823:3:22"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "26823:33:22"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "26726:3:22"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "26726:152:22"
                                        },
                                        "variables": [
                                          {
                                            "name": "additionalRecipientCdPtr",
                                            "nodeType": "YulTypedName",
                                            "src": "26698:24:22",
                                            "type": ""
                                          }
                                        ]
                                      },
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "27209:146:22",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "eventConsiderationArrPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "27266:24:22"
                                            },
                                            {
                                              "name": "ReceivedItem_size",
                                              "nodeType": "YulIdentifier",
                                              "src": "27316:17:22"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "27237:3:22"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "27237:118:22"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "eventConsiderationArrPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "27209:24:22"
                                          }
                                        ]
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "eventConsiderationArrPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "27475:24:22"
                                            },
                                            {
                                              "name": "additionalRecipientsItemType",
                                              "nodeType": "YulIdentifier",
                                              "src": "27525:28:22"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "27443:6:22"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "27443:132:22"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "27443:132:22"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "eventConsiderationArrPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "27713:24:22"
                                                },
                                                {
                                                  "name": "OneWord",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "27739:7:22"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "27709:3:22"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "27709:38:22"
                                            },
                                            {
                                              "name": "additionalRecipientsToken",
                                              "nodeType": "YulIdentifier",
                                              "src": "27773:25:22"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "27677:6:22"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "27677:143:22"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "27677:143:22"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "eventConsiderationArrPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "27993:24:22"
                                                },
                                                {
                                                  "name": "ReceivedItem_amount_offset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "28047:26:22"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "27960:3:22"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "27960:139:22"
                                            },
                                            {
                                              "name": "additionalRecipientCdPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "28125:24:22"
                                            },
                                            {
                                              "name": "TwoWords",
                                              "nodeType": "YulIdentifier",
                                              "src": "28175:8:22"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldatacopy",
                                            "nodeType": "YulIdentifier",
                                            "src": "27922:12:22"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "27922:283:22"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "27922:283:22"
                                      }
                                    ]
                                  },
                                  "condition": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "26512:1:22"
                                      },
                                      {
                                        "name": "totalAdditionalRecipients",
                                        "nodeType": "YulIdentifier",
                                        "src": "26515:25:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "26509:2:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "26509:32:22"
                                  },
                                  "nodeType": "YulForLoop",
                                  "post": {
                                    "nodeType": "YulBlock",
                                    "src": "26542:54:22",
                                    "statements": [
                                      {
                                        "nodeType": "YulAssignment",
                                        "src": "26564:14:22",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "i",
                                              "nodeType": "YulIdentifier",
                                              "src": "26573:1:22"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "26576:1:22",
                                              "type": "",
                                              "value": "1"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "26569:3:22"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "26569:9:22"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "i",
                                            "nodeType": "YulIdentifier",
                                            "src": "26564:1:22"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "pre": {
                                    "nodeType": "YulBlock",
                                    "src": "26506:2:22",
                                    "statements": []
                                  },
                                  "src": "26502:1721:22"
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 3530,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "22292:25:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3530,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "22962:25:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3530,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "26827:25:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3621,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "22220:42:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3621,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "26755:42:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3618,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "18437:44:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3618,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "19151:44:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3618,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "26388:44:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3582,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "17594:36:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3518,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "17860:39:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3518,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "20867:39:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3518,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "25754:39:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3642,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "17530:42:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3642,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "22844:42:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3636,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "21455:43:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3630,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "16707:41:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3630,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "21174:41:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3639,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "22513:44:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3633,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "17143:38:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3633,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "21328:38:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3627,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "16610:41:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3627,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "17956:41:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3627,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "23598:41:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3579,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "17203:35:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3579,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "19973:35:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3609,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "21694:50:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3407,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "19931:19:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3527,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "18023:29:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3527,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "23669:29:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3494,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "20030:9:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3485,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "18778:7:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3485,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "19531:7:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3485,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "22633:7:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3485,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "23291:7:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3485,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "24721:7:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3485,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "25858:7:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3485,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "27739:7:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3555,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "18679:46:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3419,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "25029:26:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3419,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "28047:26:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3416,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "24298:17:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3416,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "27316:17:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3491,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "17260:10:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3488,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "17652:8:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3488,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "25157:8:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3488,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "28175:8:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2878,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "21237:28:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2878,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "24507:28:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2878,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "27525:28:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2880,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "21388:25:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2880,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "24755:25:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2880,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "27773:25:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2875,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "16770:16:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2875,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "19683:16:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3542,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "25676:21:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2915,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "16653:8:22",
                                "valueSize": 1
                              }
                            ],
                            "id": 2918,
                            "nodeType": "InlineAssembly",
                            "src": "16318:11919:22"
                          }
                        ]
                      },
                      {
                        "id": 2926,
                        "nodeType": "Block",
                        "src": "28257:3626:22",
                        "statements": [
                          {
                            "assignments": [
                              2922
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2922,
                                "mutability": "mutable",
                                "name": "typeHash",
                                "nameLocation": "28739:8:22",
                                "nodeType": "VariableDeclaration",
                                "scope": 2926,
                                "src": "28731:16:22",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "typeName": {
                                  "id": 2921,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "28731:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "documentation": " Next, handle offered items. Memory Layout:\n  EIP712 data for OfferItem\n   - 0x80:  OfferItem EIP-712 typehash (constant)\n   - 0xa0:  itemType\n   - 0xc0:  token\n   - 0xe0:  identifier (reused for offeredItemsHash)\n   - 0x100: startAmount\n   - 0x120: endAmount",
                            "id": 2924,
                            "initialValue": {
                              "id": 2923,
                              "name": "_OFFER_ITEM_TYPEHASH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3170,
                              "src": "28750:20:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "28731:39:22"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "28875:2998:22",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_offerItem_typeHash_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29053:33:22"
                                      },
                                      {
                                        "name": "typeHash",
                                        "nodeType": "YulIdentifier",
                                        "src": "29088:8:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "29046:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29046:51:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "29046:51:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_offerItem_itemType_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29182:33:22"
                                      },
                                      {
                                        "name": "offeredItemType",
                                        "nodeType": "YulIdentifier",
                                        "src": "29217:15:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "29175:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29175:58:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "29175:58:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_offerItem_token_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29628:30:22"
                                      },
                                      {
                                        "name": "BasicOrder_offerToken_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29680:27:22"
                                      },
                                      {
                                        "name": "ThreeWords",
                                        "nodeType": "YulIdentifier",
                                        "src": "29729:10:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldatacopy",
                                      "nodeType": "YulIdentifier",
                                      "src": "29594:12:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29594:163:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "29594:163:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_offerItem_endAmount_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29912:34:22"
                                      },
                                      {
                                        "name": "BasicOrder_offerAmount_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "29968:28:22"
                                      },
                                      {
                                        "name": "OneWord",
                                        "nodeType": "YulIdentifier",
                                        "src": "30018:7:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldatacopy",
                                      "nodeType": "YulIdentifier",
                                      "src": "29878:12:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "29878:165:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "29878:165:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "30228:1:22",
                                        "type": "",
                                        "value": "0"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "BasicOrder_offerItem_typeHash_ptr",
                                            "nodeType": "YulIdentifier",
                                            "src": "30286:33:22"
                                          },
                                          {
                                            "name": "EIP712_OfferItem_size",
                                            "nodeType": "YulIdentifier",
                                            "src": "30345:21:22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "keccak256",
                                          "nodeType": "YulIdentifier",
                                          "src": "30251:9:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30251:137:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "30200:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30200:206:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "30200:206:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_order_offerHashes_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "30680:32:22"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "30724:1:22",
                                            "type": "",
                                            "value": "0"
                                          },
                                          {
                                            "name": "OneWord",
                                            "nodeType": "YulIdentifier",
                                            "src": "30727:7:22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "keccak256",
                                          "nodeType": "YulIdentifier",
                                          "src": "30714:9:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30714:21:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "30673:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30673:63:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "30673:63:22"
                                },
                                {
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "30871:331:22",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "OrderFulfilled_offer_length_baseOffset",
                                        "nodeType": "YulIdentifier",
                                        "src": "30928:38:22"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "BasicOrder_additionalRecipients_length_cdPtr",
                                                "nodeType": "YulIdentifier",
                                                "src": "31059:44:22"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "calldataload",
                                              "nodeType": "YulIdentifier",
                                              "src": "31017:12:22"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31017:112:22"
                                          },
                                          {
                                            "name": "OneWord",
                                            "nodeType": "YulIdentifier",
                                            "src": "31155:7:22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "30988:3:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "30988:196:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30903:3:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30903:299:22"
                                  },
                                  "variables": [
                                    {
                                      "name": "eventConsiderationArrPtr",
                                      "nodeType": "YulTypedName",
                                      "src": "30875:24:22",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "eventConsiderationArrPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "31285:24:22"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "31311:1:22",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "31278:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31278:35:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "31278:35:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "eventConsiderationArrPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "31401:24:22"
                                          },
                                          {
                                            "name": "OneWord",
                                            "nodeType": "YulIdentifier",
                                            "src": "31427:7:22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "31397:3:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31397:38:22"
                                      },
                                      {
                                        "name": "offeredItemType",
                                        "nodeType": "YulIdentifier",
                                        "src": "31437:15:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "31390:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31390:63:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "31390:63:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "eventConsiderationArrPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "31708:24:22"
                                          },
                                          {
                                            "name": "AdditionalRecipients_size",
                                            "nodeType": "YulIdentifier",
                                            "src": "31734:25:22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "31704:3:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "31704:56:22"
                                      },
                                      {
                                        "name": "BasicOrder_offerToken_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "31782:27:22"
                                      },
                                      {
                                        "name": "ThreeWords",
                                        "nodeType": "YulIdentifier",
                                        "src": "31831:10:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldatacopy",
                                      "nodeType": "YulIdentifier",
                                      "src": "31670:12:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "31670:189:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "31670:189:22"
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 3530,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "31734:25:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3618,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "31059:44:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3594,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "29968:28:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3654,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "29912:34:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3648,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "29182:33:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3651,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "29628:30:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3645,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "29053:33:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3645,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "30286:33:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3591,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "29680:27:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3591,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "31782:27:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3663,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "30680:32:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3524,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "30345:21:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3485,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "30018:7:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3485,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "30727:7:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3485,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "31155:7:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3485,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "31427:7:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3558,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "30928:38:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3491,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "29729:10:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3491,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "31831:10:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2883,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "29217:15:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2883,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "31437:15:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2922,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "29088:8:22",
                                "valueSize": 1
                              }
                            ],
                            "id": 2925,
                            "nodeType": "InlineAssembly",
                            "src": "28866:3007:22"
                          }
                        ]
                      },
                      {
                        "id": 2943,
                        "nodeType": "Block",
                        "src": "31893:2850:22",
                        "statements": [
                          {
                            "assignments": [
                              2929
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2929,
                                "mutability": "mutable",
                                "name": "offerer",
                                "nameLocation": "32915:7:22",
                                "nodeType": "VariableDeclaration",
                                "scope": 2943,
                                "src": "32907:15:22",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 2928,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "32907:7:22",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "documentation": " Once consideration items and offer items have been handled,\n derive the final order hash. Memory Layout:\n  0x80-0x1c0: EIP712 data for order\n   - 0x80:   Order EIP-712 typehash (constant)\n   - 0xa0:   orderParameters.offerer\n   - 0xc0:   orderParameters.zone\n   - 0xe0:   keccak256(abi.encodePacked(offerHashes))\n   - 0x100:  keccak256(abi.encodePacked(considerationHashes))\n   - 0x120:  orderParameters.basicOrderType (% 4 = orderType)\n   - 0x140:  orderParameters.startTime\n   - 0x160:  orderParameters.endTime\n   - 0x180:  orderParameters.zoneHash\n   - 0x1a0:  orderParameters.salt\n   - 0x1c0:  orderParameters.conduitKey\n   - 0x1e0:  _nonces[orderParameters.offerer] (from storage)",
                            "id": 2930,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "32907:15:22"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "32945:81:22",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "32963:49:22",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_offerer_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "32987:24:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "32974:12:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "32974:38:22"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "offerer",
                                      "nodeType": "YulIdentifier",
                                      "src": "32963:7:22"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 3585,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "32987:24:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2929,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "32963:7:22",
                                "valueSize": 1
                              }
                            ],
                            "id": 2931,
                            "nodeType": "InlineAssembly",
                            "src": "32936:90:22"
                          },
                          {
                            "assignments": [
                              2933
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2933,
                                "mutability": "mutable",
                                "name": "nonce",
                                "nameLocation": "33129:5:22",
                                "nodeType": "VariableDeclaration",
                                "scope": 2943,
                                "src": "33121:13:22",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 2932,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "33121:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 2937,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 2935,
                                  "name": "offerer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2929,
                                  "src": "33147:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2934,
                                "name": "_getNonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5560,
                                "src": "33137:9:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view returns (uint256)"
                                }
                              },
                              "id": 2936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "33137:18:22",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "33121:34:22"
                          },
                          {
                            "assignments": [
                              2939
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2939,
                                "mutability": "mutable",
                                "name": "typeHash",
                                "nameLocation": "33251:8:22",
                                "nodeType": "VariableDeclaration",
                                "scope": 2943,
                                "src": "33243:16:22",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "typeName": {
                                  "id": 2938,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "33243:7:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 2941,
                            "initialValue": {
                              "id": 2940,
                              "name": "_ORDER_TYPEHASH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3174,
                              "src": "33262:15:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "33243:34:22"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "33301:1432:22",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_order_typeHash_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "33383:29:22"
                                      },
                                      {
                                        "name": "typeHash",
                                        "nodeType": "YulIdentifier",
                                        "src": "33414:8:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "33376:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33376:47:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "33376:47:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_order_offerer_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "33589:28:22"
                                      },
                                      {
                                        "name": "BasicOrder_offerer_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "33639:24:22"
                                      },
                                      {
                                        "name": "TwoWords",
                                        "nodeType": "YulIdentifier",
                                        "src": "33685:8:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldatacopy",
                                      "nodeType": "YulIdentifier",
                                      "src": "33555:12:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33555:156:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "33555:156:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_order_considerationHashes_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "33835:40:22"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "receivedItemsHash_ptr",
                                            "nodeType": "YulIdentifier",
                                            "src": "33903:21:22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "33897:5:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "33897:28:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "33807:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "33807:136:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "33807:136:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_order_orderType_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "34037:30:22"
                                      },
                                      {
                                        "name": "orderType",
                                        "nodeType": "YulIdentifier",
                                        "src": "34069:9:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "34030:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34030:49:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "34030:49:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_order_startTime_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "34254:30:22"
                                      },
                                      {
                                        "name": "BasicOrder_startTime_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "34306:26:22"
                                      },
                                      {
                                        "name": "FiveWords",
                                        "nodeType": "YulIdentifier",
                                        "src": "34354:9:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldatacopy",
                                      "nodeType": "YulIdentifier",
                                      "src": "34220:12:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34220:161:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "34220:161:22"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_order_nonce_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "34487:26:22"
                                      },
                                      {
                                        "name": "nonce",
                                        "nodeType": "YulIdentifier",
                                        "src": "34515:5:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "34480:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34480:41:22"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "34480:41:22"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "34589:130:22",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_order_typeHash_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "34633:29:22"
                                      },
                                      {
                                        "name": "EIP712_Order_size",
                                        "nodeType": "YulIdentifier",
                                        "src": "34684:17:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "keccak256",
                                      "nodeType": "YulIdentifier",
                                      "src": "34602:9:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "34602:117:22"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "orderHash",
                                      "nodeType": "YulIdentifier",
                                      "src": "34589:9:22"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "london",
                            "externalReferences": [
                              {
                                "declaration": 3585,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "33639:24:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3666,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "33835:40:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3675,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "34487:26:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3660,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "33589:28:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3669,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "34037:30:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3672,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "34254:30:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3657,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "33383:29:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3657,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "34633:29:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3600,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "34306:26:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3521,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "34684:17:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3497,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "34354:9:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3488,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "33685:8:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2933,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "34515:5:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2911,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "34589:9:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2872,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "34069:9:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 3542,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "33903:21:22",
                                "valueSize": 1
                              },
                              {
                                "declaration": 2939,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "33414:8:22",
                                "valueSize": 1
                              }
                            ],
                            "id": 2942,
                            "nodeType": "InlineAssembly",
                            "src": "33292:1441:22"
                          }
                        ]
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "34762:3422:22",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "35964:228:22",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "OrderFulfilled_baseOffset",
                                    "nodeType": "YulIdentifier",
                                    "src": "36005:25:22"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "BasicOrder_additionalRecipients_length_cdPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "36086:44:22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "calldataload",
                                          "nodeType": "YulIdentifier",
                                          "src": "36073:12:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "36073:58:22"
                                      },
                                      {
                                        "name": "OneWord",
                                        "nodeType": "YulIdentifier",
                                        "src": "36153:7:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "36048:3:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36048:130:22"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "35984:3:22"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "35984:208:22"
                              },
                              "variables": [
                                {
                                  "name": "eventDataPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "35968:12:22",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "eventDataPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "36289:12:22"
                                  },
                                  {
                                    "name": "orderHash",
                                    "nodeType": "YulIdentifier",
                                    "src": "36303:9:22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36282:6:22"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36282:31:22"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36282:31:22"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "eventDataPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "36397:12:22"
                                      },
                                      {
                                        "name": "OrderFulfilled_fulfiller_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "36411:31:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36393:3:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36393:50:22"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "caller",
                                      "nodeType": "YulIdentifier",
                                      "src": "36445:6:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36445:8:22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36386:6:22"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36386:68:22"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36386:68:22"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "eventDataPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "36617:12:22"
                                      },
                                      {
                                        "name": "OrderFulfilled_offer_head_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "36631:32:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36613:3:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36613:51:22"
                                  },
                                  {
                                    "name": "OrderFulfilled_offer_body_offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "36682:32:22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36547:6:22"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36547:181:22"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36547:181:22"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "eventDataPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "36814:12:22"
                                      },
                                      {
                                        "name": "OrderFulfilled_consideration_head_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "36828:40:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "36810:3:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "36810:59:22"
                                  },
                                  {
                                    "name": "OrderFulfilled_consideration_body_offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "36887:40:22"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "36741:6:22"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "36741:200:22"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "36741:200:22"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "37177:232:22",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "OrderFulfilled_baseSize",
                                    "nodeType": "YulIdentifier",
                                    "src": "37214:23:22"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "BasicOrder_additionalRecipients_length_cdPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "37293:44:22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "calldataload",
                                          "nodeType": "YulIdentifier",
                                          "src": "37280:12:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "37280:58:22"
                                      },
                                      {
                                        "name": "ReceivedItem_size",
                                        "nodeType": "YulIdentifier",
                                        "src": "37360:17:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "37255:3:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37255:140:22"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "37193:3:22"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37193:216:22"
                              },
                              "variables": [
                                {
                                  "name": "dataSize",
                                  "nodeType": "YulTypedName",
                                  "src": "37181:8:22",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "eventDataPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "37667:12:22"
                                  },
                                  {
                                    "name": "dataSize",
                                    "nodeType": "YulIdentifier",
                                    "src": "37757:8:22"
                                  },
                                  {
                                    "name": "OrderFulfilled_selector",
                                    "nodeType": "YulIdentifier",
                                    "src": "37845:23:22"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_offerer_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "37956:24:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "37943:12:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "37943:38:22"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_zone_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "38067:21:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "calldataload",
                                      "nodeType": "YulIdentifier",
                                      "src": "38054:12:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "38054:35:22"
                                  }
                                ],
                                "functionName": {
                                  "name": "log3",
                                  "nodeType": "YulIdentifier",
                                  "src": "37581:4:22"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "37581:522:22"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "37581:522:22"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ZeroSlot",
                                    "nodeType": "YulIdentifier",
                                    "src": "38162:8:22"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "38172:1:22",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "38155:6:22"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "38155:19:22"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "38155:19:22"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3618,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "36086:44:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3618,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "37293:44:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3585,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "37956:24:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3588,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "38067:21:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "36153:7:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3552,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "36005:25:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3545,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "37214:23:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3573,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "36887:40:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3570,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "36828:40:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3561,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "36411:31:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3567,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "36682:32:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3564,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "36631:32:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3549,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "37845:23:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3416,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "37360:17:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3503,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "38162:8:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 2911,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "36303:9:22",
                            "valueSize": 1
                          }
                        ],
                        "id": 2944,
                        "nodeType": "InlineAssembly",
                        "src": "34753:3431:22"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2946,
                              "name": "orderHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2911,
                              "src": "38322:9:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 2947,
                                "name": "parameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2869,
                                "src": "38345:10:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                  "typeString": "struct BasicOrderParameters calldata"
                                }
                              },
                              "id": 2948,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "zoneHash",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3965,
                              "src": "38345:19:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 2949,
                              "name": "orderType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2872,
                              "src": "38378:9:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_OrderType_$3815",
                                "typeString": "enum OrderType"
                              }
                            },
                            {
                              "expression": {
                                "id": 2950,
                                "name": "parameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2869,
                                "src": "38401:10:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                  "typeString": "struct BasicOrderParameters calldata"
                                }
                              },
                              "id": 2951,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "offerer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3948,
                              "src": "38401:18:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "expression": {
                                "id": 2952,
                                "name": "parameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2869,
                                "src": "38433:10:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                  "typeString": "struct BasicOrderParameters calldata"
                                }
                              },
                              "id": 2953,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "zone",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3950,
                              "src": "38433:15:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_OrderType_$3815",
                                "typeString": "enum OrderType"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 2945,
                            "name": "_assertRestrictedBasicOrderValidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8439,
                            "src": "38273:35:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes32_$_t_enum$_OrderType_$3815_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,bytes32,enum OrderType,address,address) view"
                            }
                          },
                          "id": 2954,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38273:185:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2955,
                        "nodeType": "ExpressionStatement",
                        "src": "38273:185:22"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2957,
                              "name": "orderHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2911,
                              "src": "38579:9:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 2958,
                                "name": "parameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2869,
                                "src": "38602:10:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                  "typeString": "struct BasicOrderParameters calldata"
                                }
                              },
                              "id": 2959,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "offerer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3948,
                              "src": "38602:18:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "expression": {
                                "id": 2960,
                                "name": "parameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2869,
                                "src": "38634:10:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                                  "typeString": "struct BasicOrderParameters calldata"
                                }
                              },
                              "id": 2961,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "signature",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3979,
                              "src": "38634:20:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "id": 2956,
                            "name": "_validateBasicOrderAndUpdateStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7162,
                            "src": "38531:34:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,address,bytes memory)"
                            }
                          },
                          "id": 2962,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "38531:133:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2963,
                        "nodeType": "ExpressionStatement",
                        "src": "38531:133:22"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2866,
                    "nodeType": "StructuredDocumentation",
                    "src": "11921:1847:22",
                    "text": " @dev Internal function to prepare fulfillment of a basic order with\n      manual calldata and memory access. This calculates the order hash,\n      emits an OrderFulfilled event, and asserts basic order validity.\n      Note that calldata offsets must be validated as this function\n      accesses constant calldata pointers for dynamic types that match\n      default ABI encoding, but valid ABI encoding can use arbitrary\n      offsets. Checking that the offsets were produced by default encoding\n      will ensure that other functions using Solidity's calldata accessors\n      (which calculate pointers from the stored offsets) are reading the\n      same data as the order hash is derived from. Also note that This\n      function accesses memory directly. It does not clear the expanded\n      memory regions used, nor does it update the free memory pointer, so\n      other direct memory access must not assume that unused memory is\n      empty.\n @param parameters                   The parameters of the basic order.\n @param orderType                    The order type.\n @param receivedItemType             The item type of the initial\n                                     consideration item on the order.\n @param additionalRecipientsItemType The item type of any additional\n                                     consideration item on the order.\n @param additionalRecipientsToken    The ERC20 token contract address (if\n                                     applicable) for any additional\n                                     consideration item on the order.\n @param offeredItemType              The item type of the offered item on\n                                     the order."
                  },
                  "id": 2965,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_prepareBasicFulfillmentFromCalldata",
                  "nameLocation": "13782:36:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2884,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2869,
                        "mutability": "mutable",
                        "name": "parameters",
                        "nameLocation": "13858:10:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 2965,
                        "src": "13828:40:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_calldata_ptr",
                          "typeString": "struct BasicOrderParameters"
                        },
                        "typeName": {
                          "id": 2868,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2867,
                            "name": "BasicOrderParameters",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3980,
                            "src": "13828:20:22"
                          },
                          "referencedDeclaration": 3980,
                          "src": "13828:20:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_BasicOrderParameters_$3980_storage_ptr",
                            "typeString": "struct BasicOrderParameters"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2872,
                        "mutability": "mutable",
                        "name": "orderType",
                        "nameLocation": "13888:9:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 2965,
                        "src": "13878:19:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_OrderType_$3815",
                          "typeString": "enum OrderType"
                        },
                        "typeName": {
                          "id": 2871,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2870,
                            "name": "OrderType",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3815,
                            "src": "13878:9:22"
                          },
                          "referencedDeclaration": 3815,
                          "src": "13878:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_OrderType_$3815",
                            "typeString": "enum OrderType"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2875,
                        "mutability": "mutable",
                        "name": "receivedItemType",
                        "nameLocation": "13916:16:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 2965,
                        "src": "13907:25:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ItemType_$3854",
                          "typeString": "enum ItemType"
                        },
                        "typeName": {
                          "id": 2874,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2873,
                            "name": "ItemType",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3854,
                            "src": "13907:8:22"
                          },
                          "referencedDeclaration": 3854,
                          "src": "13907:8:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ItemType_$3854",
                            "typeString": "enum ItemType"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2878,
                        "mutability": "mutable",
                        "name": "additionalRecipientsItemType",
                        "nameLocation": "13951:28:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 2965,
                        "src": "13942:37:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ItemType_$3854",
                          "typeString": "enum ItemType"
                        },
                        "typeName": {
                          "id": 2877,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2876,
                            "name": "ItemType",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3854,
                            "src": "13942:8:22"
                          },
                          "referencedDeclaration": 3854,
                          "src": "13942:8:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ItemType_$3854",
                            "typeString": "enum ItemType"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2880,
                        "mutability": "mutable",
                        "name": "additionalRecipientsToken",
                        "nameLocation": "13997:25:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 2965,
                        "src": "13989:33:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2879,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13989:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2883,
                        "mutability": "mutable",
                        "name": "offeredItemType",
                        "nameLocation": "14041:15:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 2965,
                        "src": "14032:24:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ItemType_$3854",
                          "typeString": "enum ItemType"
                        },
                        "typeName": {
                          "id": 2882,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 2881,
                            "name": "ItemType",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3854,
                            "src": "14032:8:22"
                          },
                          "referencedDeclaration": 3854,
                          "src": "14032:8:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ItemType_$3854",
                            "typeString": "enum ItemType"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13818:244:22"
                  },
                  "returnParameters": {
                    "id": 2885,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14072:0:22"
                  },
                  "scope": 3152,
                  "src": "13773:24898:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3065,
                    "nodeType": "Block",
                    "src": "39351:2128:22",
                    "statements": [
                      {
                        "assignments": [
                          2978
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2978,
                            "mutability": "mutable",
                            "name": "etherRemaining",
                            "nameLocation": "39433:14:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 3065,
                            "src": "39425:22:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2977,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "39425:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2981,
                        "initialValue": {
                          "expression": {
                            "id": 2979,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "39450:3:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2980,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "src": "39450:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "39425:34:22"
                      },
                      {
                        "assignments": [
                          2983
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 2983,
                            "mutability": "mutable",
                            "name": "totalAdditionalRecipients",
                            "nameLocation": "39556:25:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 3065,
                            "src": "39548:33:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 2982,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "39548:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 2986,
                        "initialValue": {
                          "expression": {
                            "id": 2984,
                            "name": "additionalRecipients",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2974,
                            "src": "39584:20:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "struct AdditionalRecipient calldata[] calldata"
                            }
                          },
                          "id": 2985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "39584:27:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "39548:63:22"
                      },
                      {
                        "body": {
                          "id": 3030,
                          "nodeType": "Block",
                          "src": "39726:1078:22",
                          "statements": [
                            {
                              "assignments": [
                                2996
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 2996,
                                  "mutability": "mutable",
                                  "name": "additionalRecipient",
                                  "nameLocation": "39819:19:22",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3030,
                                  "src": "39790:48:22",
                                  "stateVariable": false,
                                  "storageLocation": "calldata",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AdditionalRecipient_$3985_calldata_ptr",
                                    "typeString": "struct AdditionalRecipient"
                                  },
                                  "typeName": {
                                    "id": 2995,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 2994,
                                      "name": "AdditionalRecipient",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 3985,
                                      "src": "39790:19:22"
                                    },
                                    "referencedDeclaration": 3985,
                                    "src": "39790:19:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AdditionalRecipient_$3985_storage_ptr",
                                      "typeString": "struct AdditionalRecipient"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3001,
                              "initialValue": {
                                "components": [
                                  {
                                    "baseExpression": {
                                      "id": 2997,
                                      "name": "additionalRecipients",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2974,
                                      "src": "39859:20:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "struct AdditionalRecipient calldata[] calldata"
                                      }
                                    },
                                    "id": 2999,
                                    "indexExpression": {
                                      "id": 2998,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2988,
                                      "src": "39880:1:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "39859:23:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AdditionalRecipient_$3985_calldata_ptr",
                                      "typeString": "struct AdditionalRecipient calldata"
                                    }
                                  }
                                ],
                                "id": 3000,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "39841:55:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AdditionalRecipient_$3985_calldata_ptr",
                                  "typeString": "struct AdditionalRecipient calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "39790:106:22"
                            },
                            {
                              "assignments": [
                                3003
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3003,
                                  "mutability": "mutable",
                                  "name": "additionalRecipientAmount",
                                  "nameLocation": "39997:25:22",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3030,
                                  "src": "39989:33:22",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3002,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "39989:7:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3006,
                              "initialValue": {
                                "expression": {
                                  "id": 3004,
                                  "name": "additionalRecipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2996,
                                  "src": "40025:19:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AdditionalRecipient_$3985_calldata_ptr",
                                    "typeString": "struct AdditionalRecipient calldata"
                                  }
                                },
                                "id": 3005,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3982,
                                "src": "40025:26:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "39989:62:22"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3009,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 3007,
                                  "name": "additionalRecipientAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3003,
                                  "src": "40128:25:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "id": 3008,
                                  "name": "etherRemaining",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2978,
                                  "src": "40156:14:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "40128:42:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 3014,
                              "nodeType": "IfStatement",
                              "src": "40124:115:22",
                              "trueBody": {
                                "id": 3013,
                                "nodeType": "Block",
                                "src": "40172:67:22",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 3010,
                                        "name": "InsufficientEtherSupplied",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1886,
                                        "src": "40197:25:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 3011,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "40197:27:22",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 3012,
                                    "nodeType": "RevertStatement",
                                    "src": "40190:34:22"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 3016,
                                      "name": "additionalRecipient",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2996,
                                      "src": "40342:19:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AdditionalRecipient_$3985_calldata_ptr",
                                        "typeString": "struct AdditionalRecipient calldata"
                                      }
                                    },
                                    "id": 3017,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "recipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3984,
                                    "src": "40342:29:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 3018,
                                    "name": "additionalRecipientAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3003,
                                    "src": "40389:25:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 3015,
                                  "name": "_transferEth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4663,
                                  "src": "40312:12:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                                    "typeString": "function (address payable,uint256)"
                                  }
                                },
                                "id": 3019,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "40312:116:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3020,
                              "nodeType": "ExpressionStatement",
                              "src": "40312:116:22"
                            },
                            {
                              "id": 3025,
                              "nodeType": "UncheckedBlock",
                              "src": "40523:135:22",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 3023,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 3021,
                                      "name": "etherRemaining",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2978,
                                      "src": "40600:14:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "-=",
                                    "rightHandSide": {
                                      "id": 3022,
                                      "name": "additionalRecipientAmount",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3003,
                                      "src": "40618:25:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "40600:43:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3024,
                                  "nodeType": "ExpressionStatement",
                                  "src": "40600:43:22"
                                }
                              ]
                            },
                            {
                              "id": 3029,
                              "nodeType": "UncheckedBlock",
                              "src": "40748:46:22",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 3027,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": true,
                                    "src": "40776:3:22",
                                    "subExpression": {
                                      "id": 3026,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2988,
                                      "src": "40778:1:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3028,
                                  "nodeType": "ExpressionStatement",
                                  "src": "40776:3:22"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2993,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 2991,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2988,
                            "src": "39693:1:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 2992,
                            "name": "totalAdditionalRecipients",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2983,
                            "src": "39697:25:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "39693:29:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3031,
                        "initializationExpression": {
                          "assignments": [
                            2988
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 2988,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "39686:1:22",
                              "nodeType": "VariableDeclaration",
                              "scope": 3031,
                              "src": "39678:9:22",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 2987,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "39678:7:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 2990,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 2989,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "39690:1:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "39678:13:22"
                        },
                        "nodeType": "ForStatement",
                        "src": "39673:1131:22"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3032,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2968,
                            "src": "40878:6:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 3033,
                            "name": "etherRemaining",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2978,
                            "src": "40887:14:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "40878:23:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3039,
                        "nodeType": "IfStatement",
                        "src": "40874:88:22",
                        "trueBody": {
                          "id": 3038,
                          "nodeType": "Block",
                          "src": "40903:59:22",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 3035,
                                  "name": "InsufficientEtherSupplied",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1886,
                                  "src": "40924:25:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 3036,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "40924:27:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3037,
                              "nodeType": "RevertStatement",
                              "src": "40917:34:22"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3041,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2970,
                              "src": "41027:2:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "id": 3042,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2968,
                              "src": "41031:6:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3040,
                            "name": "_transferEth",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4663,
                            "src": "41014:12:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                              "typeString": "function (address payable,uint256)"
                            }
                          },
                          "id": 3043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "41014:24:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3044,
                        "nodeType": "ExpressionStatement",
                        "src": "41014:24:22"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3047,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3045,
                            "name": "etherRemaining",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2978,
                            "src": "41127:14:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 3046,
                            "name": "amount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2968,
                            "src": "41144:6:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "41127:23:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3061,
                        "nodeType": "IfStatement",
                        "src": "41123:277:22",
                        "trueBody": {
                          "id": 3060,
                          "nodeType": "Block",
                          "src": "41152:248:22",
                          "statements": [
                            {
                              "id": 3059,
                              "nodeType": "UncheckedBlock",
                              "src": "41230:160:22",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "expression": {
                                              "id": 3051,
                                              "name": "msg",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -15,
                                              "src": "41338:3:22",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_message",
                                                "typeString": "msg"
                                              }
                                            },
                                            "id": 3052,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sender",
                                            "nodeType": "MemberAccess",
                                            "src": "41338:10:22",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 3050,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "41330:8:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_payable_$",
                                            "typeString": "type(address payable)"
                                          },
                                          "typeName": {
                                            "id": 3049,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "41330:8:22",
                                            "stateMutability": "payable",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 3053,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "41330:19:22",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 3056,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 3054,
                                          "name": "etherRemaining",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2978,
                                          "src": "41351:14:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "id": 3055,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2968,
                                          "src": "41368:6:22",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "41351:23:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 3048,
                                      "name": "_transferEth",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4663,
                                      "src": "41317:12:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                                        "typeString": "function (address payable,uint256)"
                                      }
                                    },
                                    "id": 3057,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "41317:58:22",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 3058,
                                  "nodeType": "ExpressionStatement",
                                  "src": "41317:58:22"
                                }
                              ]
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3062,
                            "name": "_clearReentrancyGuard",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7754,
                            "src": "41449:21:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 3063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "41449:23:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3064,
                        "nodeType": "ExpressionStatement",
                        "src": "41449:23:22"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 2966,
                    "nodeType": "StructuredDocumentation",
                    "src": "38677:508:22",
                    "text": " @dev Internal function to transfer Ether (or other native tokens) to a\n      given recipient as part of basic order fulfillment. Note that\n      conduits are not utilized for native tokens as the transferred\n      amount must be provided as msg.value.\n @param amount               The amount to transfer.\n @param to                   The recipient of the native token transfer.\n @param additionalRecipients The additional recipients of the order."
                  },
                  "id": 3066,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferEthAndFinalize",
                  "nameLocation": "39199:23:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 2975,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 2968,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "39240:6:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3066,
                        "src": "39232:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2967,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "39232:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2970,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "39272:2:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3066,
                        "src": "39256:18:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 2969,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "39256:15:22",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 2974,
                        "mutability": "mutable",
                        "name": "additionalRecipients",
                        "nameLocation": "39315:20:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3066,
                        "src": "39284:51:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct AdditionalRecipient[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 2972,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 2971,
                              "name": "AdditionalRecipient",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 3985,
                              "src": "39284:19:22"
                            },
                            "referencedDeclaration": 3985,
                            "src": "39284:19:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdditionalRecipient_$3985_storage_ptr",
                              "typeString": "struct AdditionalRecipient"
                            }
                          },
                          "id": 2973,
                          "nodeType": "ArrayTypeName",
                          "src": "39284:21:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_storage_$dyn_storage_ptr",
                            "typeString": "struct AdditionalRecipient[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "39222:119:22"
                  },
                  "returnParameters": {
                    "id": 2976,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "39351:0:22"
                  },
                  "scope": 3152,
                  "src": "39190:2289:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3150,
                    "nodeType": "Block",
                    "src": "42412:1857:22",
                    "statements": [
                      {
                        "assignments": [
                          3087
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3087,
                            "mutability": "mutable",
                            "name": "conduitKey",
                            "nameLocation": "42487:10:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 3150,
                            "src": "42479:18:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 3086,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "42479:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3088,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "42479:18:22"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "42593:285:22",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "42687:181:22",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "BasicOrder_fulfillerConduit_cdPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "42756:33:22"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "fromOfferer",
                                            "nodeType": "YulIdentifier",
                                            "src": "42815:11:22"
                                          },
                                          {
                                            "name": "OneWord",
                                            "nodeType": "YulIdentifier",
                                            "src": "42828:7:22"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "42811:3:22"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "42811:25:22"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "42731:3:22"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "42731:123:22"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "42701:12:22"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "42701:167:22"
                              },
                              "variableNames": [
                                {
                                  "name": "conduitKey",
                                  "nodeType": "YulIdentifier",
                                  "src": "42687:10:22"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3606,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "42756:33:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "42828:7:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3087,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "42687:10:22",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3081,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "42815:11:22",
                            "valueSize": 1
                          }
                        ],
                        "id": 3089,
                        "nodeType": "InlineAssembly",
                        "src": "42584:294:22"
                      },
                      {
                        "assignments": [
                          3091
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3091,
                            "mutability": "mutable",
                            "name": "totalAdditionalRecipients",
                            "nameLocation": "42974:25:22",
                            "nodeType": "VariableDeclaration",
                            "scope": 3150,
                            "src": "42966:33:22",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3090,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "42966:7:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3094,
                        "initialValue": {
                          "expression": {
                            "id": 3092,
                            "name": "additionalRecipients",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3079,
                            "src": "43002:20:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "struct AdditionalRecipient calldata[] calldata"
                            }
                          },
                          "id": 3093,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "43002:27:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "42966:63:22"
                      },
                      {
                        "body": {
                          "id": 3136,
                          "nodeType": "Block",
                          "src": "43144:885:22",
                          "statements": [
                            {
                              "assignments": [
                                3104
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3104,
                                  "mutability": "mutable",
                                  "name": "additionalRecipient",
                                  "nameLocation": "43237:19:22",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3136,
                                  "src": "43208:48:22",
                                  "stateVariable": false,
                                  "storageLocation": "calldata",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AdditionalRecipient_$3985_calldata_ptr",
                                    "typeString": "struct AdditionalRecipient"
                                  },
                                  "typeName": {
                                    "id": 3103,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 3102,
                                      "name": "AdditionalRecipient",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 3985,
                                      "src": "43208:19:22"
                                    },
                                    "referencedDeclaration": 3985,
                                    "src": "43208:19:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AdditionalRecipient_$3985_storage_ptr",
                                      "typeString": "struct AdditionalRecipient"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3109,
                              "initialValue": {
                                "components": [
                                  {
                                    "baseExpression": {
                                      "id": 3105,
                                      "name": "additionalRecipients",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3079,
                                      "src": "43277:20:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "struct AdditionalRecipient calldata[] calldata"
                                      }
                                    },
                                    "id": 3107,
                                    "indexExpression": {
                                      "id": 3106,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3096,
                                      "src": "43298:1:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "43277:23:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AdditionalRecipient_$3985_calldata_ptr",
                                      "typeString": "struct AdditionalRecipient calldata"
                                    }
                                  }
                                ],
                                "id": 3108,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "43259:55:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AdditionalRecipient_$3985_calldata_ptr",
                                  "typeString": "struct AdditionalRecipient calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "43208:106:22"
                            },
                            {
                              "assignments": [
                                3111
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 3111,
                                  "mutability": "mutable",
                                  "name": "additionalRecipientAmount",
                                  "nameLocation": "43337:25:22",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 3136,
                                  "src": "43329:33:22",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 3110,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "43329:7:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 3114,
                              "initialValue": {
                                "expression": {
                                  "id": 3112,
                                  "name": "additionalRecipient",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3104,
                                  "src": "43365:19:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AdditionalRecipient_$3985_calldata_ptr",
                                    "typeString": "struct AdditionalRecipient calldata"
                                  }
                                },
                                "id": 3113,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3982,
                                "src": "43365:26:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "43329:62:22"
                            },
                            {
                              "condition": {
                                "id": 3115,
                                "name": "fromOfferer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3081,
                                "src": "43485:11:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 3121,
                              "nodeType": "IfStatement",
                              "src": "43481:85:22",
                              "trueBody": {
                                "id": 3120,
                                "nodeType": "Block",
                                "src": "43498:68:22",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 3118,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 3116,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3075,
                                        "src": "43516:6:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "-=",
                                      "rightHandSide": {
                                        "id": 3117,
                                        "name": "additionalRecipientAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3111,
                                        "src": "43526:25:22",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "43516:35:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 3119,
                                    "nodeType": "ExpressionStatement",
                                    "src": "43516:35:22"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 3123,
                                    "name": "erc20Token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3073,
                                    "src": "43689:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 3124,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3069,
                                    "src": "43717:4:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 3125,
                                      "name": "additionalRecipient",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3104,
                                      "src": "43739:19:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AdditionalRecipient_$3985_calldata_ptr",
                                        "typeString": "struct AdditionalRecipient calldata"
                                      }
                                    },
                                    "id": 3126,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "recipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3984,
                                    "src": "43739:29:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 3127,
                                    "name": "additionalRecipientAmount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3111,
                                    "src": "43786:25:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 3128,
                                    "name": "conduitKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3087,
                                    "src": "43829:10:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 3129,
                                    "name": "accumulator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3083,
                                    "src": "43857:11:22",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 3122,
                                  "name": "_transferERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4722,
                                  "src": "43657:14:22",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,bytes32,bytes memory)"
                                  }
                                },
                                "id": 3130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "43657:225:22",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 3131,
                              "nodeType": "ExpressionStatement",
                              "src": "43657:225:22"
                            },
                            {
                              "id": 3135,
                              "nodeType": "UncheckedBlock",
                              "src": "43973:46:22",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 3133,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": true,
                                    "src": "44001:3:22",
                                    "subExpression": {
                                      "id": 3132,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3096,
                                      "src": "44003:1:22",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 3134,
                                  "nodeType": "ExpressionStatement",
                                  "src": "44001:3:22"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 3099,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3096,
                            "src": "43111:1:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "id": 3100,
                            "name": "totalAdditionalRecipients",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3091,
                            "src": "43115:25:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "43111:29:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 3137,
                        "initializationExpression": {
                          "assignments": [
                            3096
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3096,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "43104:1:22",
                              "nodeType": "VariableDeclaration",
                              "scope": 3137,
                              "src": "43096:9:22",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3095,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "43096:7:22",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 3098,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 3097,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "43108:1:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "43096:13:22"
                        },
                        "nodeType": "ForStatement",
                        "src": "43091:938:22"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 3139,
                              "name": "erc20Token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3073,
                              "src": "44135:10:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3140,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3069,
                              "src": "44147:4:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3141,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3071,
                              "src": "44153:2:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 3142,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3075,
                              "src": "44157:6:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 3143,
                              "name": "conduitKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3087,
                              "src": "44165:10:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 3144,
                              "name": "accumulator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3083,
                              "src": "44177:11:22",
                              "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_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3138,
                            "name": "_transferERC20",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4722,
                            "src": "44120:14:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,address,address,uint256,bytes32,bytes memory)"
                            }
                          },
                          "id": 3145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "44120:69:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3146,
                        "nodeType": "ExpressionStatement",
                        "src": "44120:69:22"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 3147,
                            "name": "_clearReentrancyGuard",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7754,
                            "src": "44239:21:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 3148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "44239:23:22",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3149,
                        "nodeType": "ExpressionStatement",
                        "src": "44239:23:22"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3067,
                    "nodeType": "StructuredDocumentation",
                    "src": "41485:657:22",
                    "text": " @dev Internal function to transfer ERC20 tokens to a given recipient as\n      part of basic order fulfillment.\n @param from                 The originator of the ERC20 token transfer.\n @param to                   The recipient of the ERC20 token transfer.\n @param erc20Token           The ERC20 token to transfer.\n @param amount               The amount of ERC20 tokens to transfer.\n @param additionalRecipients The additional recipients of the order.\n @param fromOfferer          A boolean indicating whether to decrement\n                             amount from the offered amount."
                  },
                  "id": 3151,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferERC20AndFinalize",
                  "nameLocation": "42156:25:22",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3084,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3069,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "42199:4:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3151,
                        "src": "42191:12:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3068,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "42191:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3071,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "42221:2:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3151,
                        "src": "42213:10:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3070,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "42213:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3073,
                        "mutability": "mutable",
                        "name": "erc20Token",
                        "nameLocation": "42241:10:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3151,
                        "src": "42233:18:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3072,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "42233:7:22",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3075,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "42269:6:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3151,
                        "src": "42261:14:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 3074,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "42261:7:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3079,
                        "mutability": "mutable",
                        "name": "additionalRecipients",
                        "nameLocation": "42316:20:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3151,
                        "src": "42285:51:22",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct AdditionalRecipient[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 3077,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 3076,
                              "name": "AdditionalRecipient",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 3985,
                              "src": "42285:19:22"
                            },
                            "referencedDeclaration": 3985,
                            "src": "42285:19:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdditionalRecipient_$3985_storage_ptr",
                              "typeString": "struct AdditionalRecipient"
                            }
                          },
                          "id": 3078,
                          "nodeType": "ArrayTypeName",
                          "src": "42285:21:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_storage_$dyn_storage_ptr",
                            "typeString": "struct AdditionalRecipient[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3081,
                        "mutability": "mutable",
                        "name": "fromOfferer",
                        "nameLocation": "42351:11:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3151,
                        "src": "42346:16:22",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 3080,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "42346:4:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3083,
                        "mutability": "mutable",
                        "name": "accumulator",
                        "nameLocation": "42385:11:22",
                        "nodeType": "VariableDeclaration",
                        "scope": 3151,
                        "src": "42372:24:22",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 3082,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "42372:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "42181:221:22"
                  },
                  "returnParameters": {
                    "id": 3085,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "42412:0:22"
                  },
                  "scope": 3152,
                  "src": "42147:2122:22",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3153,
              "src": "778:43493:22",
              "usedErrors": [
                1856,
                1859,
                1866,
                1869,
                1874,
                1883,
                1886,
                1893,
                1896,
                1901,
                1906,
                1909,
                1912,
                1917,
                1920,
                1923,
                2208,
                2217,
                2220,
                2223,
                2226,
                2233,
                2236,
                2249,
                2264,
                2275,
                2280,
                2289
              ]
            }
          ],
          "src": "32:44240:22"
        },
        "id": 22
      },
      "seaport/contracts/lib/ConsiderationBase.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/ConsiderationBase.sol",
          "exportedSymbols": {
            "AccumulatorArmed": [
              3772
            ],
            "AccumulatorDisarmed": [
              3769
            ],
            "Accumulator_array_length_ptr": [
              3784
            ],
            "Accumulator_array_offset": [
              3790
            ],
            "Accumulator_array_offset_ptr": [
              3781
            ],
            "Accumulator_conduitKey_ptr": [
              3775
            ],
            "Accumulator_itemSizeOffsetDifference": [
              3787
            ],
            "Accumulator_selector_ptr": [
              3778
            ],
            "AdditionalRecipients_size": [
              3530
            ],
            "AdvancedOrder_numerator_offset": [
              3482
            ],
            "BasicOrder_additionalRecipients_data_cdPtr": [
              3621
            ],
            "BasicOrder_additionalRecipients_head_cdPtr": [
              3612
            ],
            "BasicOrder_additionalRecipients_head_ptr": [
              3678
            ],
            "BasicOrder_additionalRecipients_length_cdPtr": [
              3618
            ],
            "BasicOrder_basicOrderType_cdPtr": [
              3597
            ],
            "BasicOrder_considerationAmount_cdPtr": [
              3582
            ],
            "BasicOrder_considerationHashesArray_ptr": [
              3518
            ],
            "BasicOrder_considerationItem_endAmount_ptr": [
              3642
            ],
            "BasicOrder_considerationItem_identifier_ptr": [
              3636
            ],
            "BasicOrder_considerationItem_itemType_ptr": [
              3630
            ],
            "BasicOrder_considerationItem_startAmount_ptr": [
              3639
            ],
            "BasicOrder_considerationItem_token_ptr": [
              3633
            ],
            "BasicOrder_considerationItem_typeHash_ptr": [
              3627
            ],
            "BasicOrder_considerationToken_cdPtr": [
              3579
            ],
            "BasicOrder_endAmount_cdPtr": [
              3515
            ],
            "BasicOrder_fulfillerConduit_cdPtr": [
              3606
            ],
            "BasicOrder_offerAmount_cdPtr": [
              3594
            ],
            "BasicOrder_offerItem_endAmount_ptr": [
              3654
            ],
            "BasicOrder_offerItem_itemType_ptr": [
              3648
            ],
            "BasicOrder_offerItem_token_ptr": [
              3651
            ],
            "BasicOrder_offerItem_typeHash_ptr": [
              3645
            ],
            "BasicOrder_offerToken_cdPtr": [
              3591
            ],
            "BasicOrder_offererConduit_cdPtr": [
              3603
            ],
            "BasicOrder_offerer_cdPtr": [
              3585
            ],
            "BasicOrder_order_considerationHashes_ptr": [
              3666
            ],
            "BasicOrder_order_nonce_ptr": [
              3675
            ],
            "BasicOrder_order_offerHashes_ptr": [
              3663
            ],
            "BasicOrder_order_offerer_ptr": [
              3660
            ],
            "BasicOrder_order_orderType_ptr": [
              3669
            ],
            "BasicOrder_order_startTime_ptr": [
              3672
            ],
            "BasicOrder_order_typeHash_ptr": [
              3657
            ],
            "BasicOrder_parameters_cdPtr": [
              3576
            ],
            "BasicOrder_parameters_ptr": [
              3624
            ],
            "BasicOrder_signature_cdPtr": [
              3615
            ],
            "BasicOrder_signature_ptr": [
              3681
            ],
            "BasicOrder_startTime_cdPtr": [
              3600
            ],
            "BasicOrder_totalOriginalAdditionalRecipients_cdPtr": [
              3609
            ],
            "BasicOrder_zone_cdPtr": [
              3588
            ],
            "Common_amount_offset": [
              3413
            ],
            "Common_identifier_offset": [
              3410
            ],
            "Common_token_offset": [
              3407
            ],
            "ConduitControllerInterface": [
              1733
            ],
            "Conduit_execute_ConduitTransfer_length": [
              3739
            ],
            "Conduit_execute_ConduitTransfer_length_ptr": [
              3745
            ],
            "Conduit_execute_ConduitTransfer_offset_ptr": [
              3742
            ],
            "Conduit_execute_ConduitTransfer_ptr": [
              3736
            ],
            "Conduit_execute_signature": [
              3733
            ],
            "Conduit_execute_transferAmount_ptr": [
              3763
            ],
            "Conduit_execute_transferFrom_ptr": [
              3754
            ],
            "Conduit_execute_transferIdentifier_ptr": [
              3760
            ],
            "Conduit_execute_transferItemType_ptr": [
              3748
            ],
            "Conduit_execute_transferTo_ptr": [
              3757
            ],
            "Conduit_execute_transferToken_ptr": [
              3751
            ],
            "Conduit_transferItem_amount_ptr": [
              3808
            ],
            "Conduit_transferItem_from_ptr": [
              3799
            ],
            "Conduit_transferItem_identifier_ptr": [
              3805
            ],
            "Conduit_transferItem_size": [
              3793
            ],
            "Conduit_transferItem_to_ptr": [
              3802
            ],
            "Conduit_transferItem_token_ptr": [
              3796
            ],
            "ConsiderItem_recipient_offset": [
              3431
            ],
            "ConsiderationBase": [
              3384
            ],
            "ConsiderationEventsAndErrors": [
              1924
            ],
            "ConsiderationItem_recipient_offset": [
              3428
            ],
            "CostPerWord": [
              3708
            ],
            "Create2AddressDerivation_length": [
              3717
            ],
            "Create2AddressDerivation_ptr": [
              3714
            ],
            "DefaultFreeMemoryPointer": [
              3506
            ],
            "EIP2098_allButHighestBitMask": [
              3685
            ],
            "EIP712_ConsiderationItem_size": [
              3527
            ],
            "EIP712_DigestPayload_size": [
              3539
            ],
            "EIP712_DomainSeparator_offset": [
              3533
            ],
            "EIP712_OfferItem_size": [
              3524
            ],
            "EIP712_OrderHash_offset": [
              3536
            ],
            "EIP712_Order_size": [
              3521
            ],
            "EIP_712_PREFIX": [
              3702
            ],
            "Execution_conduit_offset": [
              3437
            ],
            "Execution_offerer_offset": [
              3434
            ],
            "ExtraGasBuffer": [
              3705
            ],
            "FiveWords": [
              3497
            ],
            "FourWords": [
              3494
            ],
            "FreeMemoryPointerSlot": [
              3500
            ],
            "Fulfillment_itemIndex_offset": [
              3479
            ],
            "InvalidFulfillmentComponentData_error_len": [
              3444
            ],
            "InvalidFulfillmentComponentData_error_signature": [
              3441
            ],
            "MaskOverByteTwelve": [
              3721
            ],
            "MaskOverFirstFourBytes": [
              3729
            ],
            "MaskOverLastTwentyBytes": [
              3725
            ],
            "MemoryExpansionCoefficient": [
              3711
            ],
            "MissingItemAmount_error_len": [
              3464
            ],
            "MissingItemAmount_error_signature": [
              3461
            ],
            "NameLengthPtr": [
              3389
            ],
            "NameWithLength": [
              3392
            ],
            "NoContract_error_length": [
              3698
            ],
            "NoContract_error_sig_ptr": [
              3692
            ],
            "NoContract_error_signature": [
              3689
            ],
            "NoContract_error_token_ptr": [
              3695
            ],
            "OneConduitExecute_size": [
              3766
            ],
            "OneWord": [
              3485
            ],
            "OrderFulfilled_baseOffset": [
              3552
            ],
            "OrderFulfilled_baseSize": [
              3545
            ],
            "OrderFulfilled_consideration_body_offset": [
              3573
            ],
            "OrderFulfilled_consideration_head_offset": [
              3570
            ],
            "OrderFulfilled_consideration_length_baseOffset": [
              3555
            ],
            "OrderFulfilled_fulfiller_offset": [
              3561
            ],
            "OrderFulfilled_offer_body_offset": [
              3567
            ],
            "OrderFulfilled_offer_head_offset": [
              3564
            ],
            "OrderFulfilled_offer_length_baseOffset": [
              3558
            ],
            "OrderFulfilled_selector": [
              3549
            ],
            "OrderParameters_conduit_offset": [
              3473
            ],
            "OrderParameters_consideration_head_offset": [
              3470
            ],
            "OrderParameters_nonce_offset": [
              3476
            ],
            "OrderParameters_offer_head_offset": [
              3467
            ],
            "Panic_arithmetic": [
              3457
            ],
            "Panic_error_length": [
              3454
            ],
            "Panic_error_offset": [
              3451
            ],
            "Panic_error_signature": [
              3448
            ],
            "ReceivedItem_CommonParams_size": [
              3425
            ],
            "ReceivedItem_amount_offset": [
              3419
            ],
            "ReceivedItem_recipient_offset": [
              3422
            ],
            "ReceivedItem_size": [
              3416
            ],
            "Slot0x80": [
              3509
            ],
            "Slot0xA0": [
              3512
            ],
            "ThreeWords": [
              3491
            ],
            "TwoWords": [
              3488
            ],
            "Version": [
              3395
            ],
            "Version_length": [
              3398
            ],
            "ZeroSlot": [
              3503
            ],
            "_ENTERED": [
              3404
            ],
            "_NOT_ENTERED": [
              3401
            ],
            "receivedItemsHash_ptr": [
              3542
            ]
          },
          "id": 3385,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3154,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:23"
            },
            {
              "absolutePath": "seaport/contracts/interfaces/ConduitControllerInterface.sol",
              "file": "../interfaces/ConduitControllerInterface.sol",
              "id": 3156,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3385,
              "sourceUnit": 1734,
              "src": "76:94:23",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3155,
                    "name": "ConduitControllerInterface",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1733,
                    "src": "89:26:23",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol",
              "file": "../interfaces/ConsiderationEventsAndErrors.sol",
              "id": 3158,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3385,
              "sourceUnit": 1925,
              "src": "191:98:23",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3157,
                    "name": "ConsiderationEventsAndErrors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1924,
                    "src": "204:28:23",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationConstants.sol",
              "file": "./ConsiderationConstants.sol",
              "id": 3159,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 3385,
              "sourceUnit": 3809,
              "src": "291:38:23",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 3161,
                    "name": "ConsiderationEventsAndErrors",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1924,
                    "src": "494:28:23"
                  },
                  "id": 3162,
                  "nodeType": "InheritanceSpecifier",
                  "src": "494:28:23"
                }
              ],
              "canonicalName": "ConsiderationBase",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 3160,
                "nodeType": "StructuredDocumentation",
                "src": "331:132:23",
                "text": " @title ConsiderationBase\n @author 0age\n @notice ConsiderationBase contains immutable constants and constructor logic."
              },
              "fullyImplemented": true,
              "id": 3384,
              "linearizedBaseContracts": [
                3384,
                1924
              ],
              "name": "ConsiderationBase",
              "nameLocation": "473:17:23",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 3164,
                  "mutability": "immutable",
                  "name": "_NAME_HASH",
                  "nameLocation": "636:10:23",
                  "nodeType": "VariableDeclaration",
                  "scope": 3384,
                  "src": "609:37:23",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3163,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "609:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3166,
                  "mutability": "immutable",
                  "name": "_VERSION_HASH",
                  "nameLocation": "679:13:23",
                  "nodeType": "VariableDeclaration",
                  "scope": 3384,
                  "src": "652:40:23",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3165,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "652:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3168,
                  "mutability": "immutable",
                  "name": "_EIP_712_DOMAIN_TYPEHASH",
                  "nameLocation": "725:24:23",
                  "nodeType": "VariableDeclaration",
                  "scope": 3384,
                  "src": "698:51:23",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3167,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "698:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3170,
                  "mutability": "immutable",
                  "name": "_OFFER_ITEM_TYPEHASH",
                  "nameLocation": "782:20:23",
                  "nodeType": "VariableDeclaration",
                  "scope": 3384,
                  "src": "755:47:23",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3169,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "755:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3172,
                  "mutability": "immutable",
                  "name": "_CONSIDERATION_ITEM_TYPEHASH",
                  "nameLocation": "835:28:23",
                  "nodeType": "VariableDeclaration",
                  "scope": 3384,
                  "src": "808:55:23",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3171,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "808:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3174,
                  "mutability": "immutable",
                  "name": "_ORDER_TYPEHASH",
                  "nameLocation": "896:15:23",
                  "nodeType": "VariableDeclaration",
                  "scope": 3384,
                  "src": "869:42:23",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3173,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "869:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3176,
                  "mutability": "immutable",
                  "name": "_CHAIN_ID",
                  "nameLocation": "944:9:23",
                  "nodeType": "VariableDeclaration",
                  "scope": 3384,
                  "src": "917:36:23",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3175,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "917:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3178,
                  "mutability": "immutable",
                  "name": "_DOMAIN_SEPARATOR",
                  "nameLocation": "986:17:23",
                  "nodeType": "VariableDeclaration",
                  "scope": 3384,
                  "src": "959:44:23",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3177,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "959:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3181,
                  "mutability": "immutable",
                  "name": "_CONDUIT_CONTROLLER",
                  "nameLocation": "1114:19:23",
                  "nodeType": "VariableDeclaration",
                  "scope": 3384,
                  "src": "1068:65:23",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_ConduitControllerInterface_$1733",
                    "typeString": "contract ConduitControllerInterface"
                  },
                  "typeName": {
                    "id": 3180,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 3179,
                      "name": "ConduitControllerInterface",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 1733,
                      "src": "1068:26:23"
                    },
                    "referencedDeclaration": 1733,
                    "src": "1068:26:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ConduitControllerInterface_$1733",
                      "typeString": "contract ConduitControllerInterface"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3183,
                  "mutability": "immutable",
                  "name": "_CONDUIT_CREATION_CODE_HASH",
                  "nameLocation": "1243:27:23",
                  "nodeType": "VariableDeclaration",
                  "scope": 3384,
                  "src": "1216:54:23",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3182,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1216:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3224,
                    "nodeType": "Block",
                    "src": "1669:810:23",
                    "statements": [
                      {
                        "expression": {
                          "id": 3198,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 3189,
                                "name": "_NAME_HASH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3164,
                                "src": "1774:10:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 3190,
                                "name": "_VERSION_HASH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3166,
                                "src": "1798:13:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 3191,
                                "name": "_EIP_712_DOMAIN_TYPEHASH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3168,
                                "src": "1825:24:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 3192,
                                "name": "_OFFER_ITEM_TYPEHASH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3170,
                                "src": "1863:20:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 3193,
                                "name": "_CONSIDERATION_ITEM_TYPEHASH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3172,
                                "src": "1897:28:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 3194,
                                "name": "_ORDER_TYPEHASH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3174,
                                "src": "1939:15:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "id": 3195,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "1760:204:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$",
                              "typeString": "tuple(bytes32,bytes32,bytes32,bytes32,bytes32,bytes32)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 3196,
                              "name": "_deriveTypehashes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3383,
                              "src": "1967:17:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$__$returns$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$",
                                "typeString": "function () pure returns (bytes32,bytes32,bytes32,bytes32,bytes32,bytes32)"
                              }
                            },
                            "id": 3197,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1967:19:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$",
                              "typeString": "tuple(bytes32,bytes32,bytes32,bytes32,bytes32,bytes32)"
                            }
                          },
                          "src": "1760:226:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3199,
                        "nodeType": "ExpressionStatement",
                        "src": "1760:226:23"
                      },
                      {
                        "expression": {
                          "id": 3203,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3200,
                            "name": "_CHAIN_ID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3176,
                            "src": "2075:9:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 3201,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "2087:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 3202,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "chainid",
                            "nodeType": "MemberAccess",
                            "src": "2087:13:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2075:25:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3204,
                        "nodeType": "ExpressionStatement",
                        "src": "2075:25:23"
                      },
                      {
                        "expression": {
                          "id": 3208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3205,
                            "name": "_DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3178,
                            "src": "2110:17:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 3206,
                              "name": "_deriveDomainSeparator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3247,
                              "src": "2130:22:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                "typeString": "function () view returns (bytes32)"
                              }
                            },
                            "id": 3207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2130:24:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "2110:44:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3209,
                        "nodeType": "ExpressionStatement",
                        "src": "2110:44:23"
                      },
                      {
                        "expression": {
                          "id": 3214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3210,
                            "name": "_CONDUIT_CONTROLLER",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3181,
                            "src": "2213:19:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ConduitControllerInterface_$1733",
                              "typeString": "contract ConduitControllerInterface"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3212,
                                "name": "conduitController",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3186,
                                "src": "2262:17:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3211,
                              "name": "ConduitControllerInterface",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1733,
                              "src": "2235:26:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ConduitControllerInterface_$1733_$",
                                "typeString": "type(contract ConduitControllerInterface)"
                              }
                            },
                            "id": 3213,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2235:45:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ConduitControllerInterface_$1733",
                              "typeString": "contract ConduitControllerInterface"
                            }
                          },
                          "src": "2213:67:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_ConduitControllerInterface_$1733",
                            "typeString": "contract ConduitControllerInterface"
                          }
                        },
                        "id": 3215,
                        "nodeType": "ExpressionStatement",
                        "src": "2213:67:23"
                      },
                      {
                        "expression": {
                          "id": 3222,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 3216,
                                "name": "_CONDUIT_CREATION_CODE_HASH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3183,
                                "src": "2373:27:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              null
                            ],
                            "id": 3217,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "2372:31:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bytes32_$__$",
                              "typeString": "tuple(bytes32,)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "components": [
                              {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "id": 3218,
                                    "name": "_CONDUIT_CONTROLLER",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3181,
                                    "src": "2420:19:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ConduitControllerInterface_$1733",
                                      "typeString": "contract ConduitControllerInterface"
                                    }
                                  },
                                  "id": 3219,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "getConduitCodeHashes",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1732,
                                  "src": "2420:40:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$_t_bytes32_$",
                                    "typeString": "function () view external returns (bytes32,bytes32)"
                                  }
                                },
                                "id": 3220,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2420:42:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                                  "typeString": "tuple(bytes32,bytes32)"
                                }
                              }
                            ],
                            "id": 3221,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2406:66:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$",
                              "typeString": "tuple(bytes32,bytes32)"
                            }
                          },
                          "src": "2372:100:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3223,
                        "nodeType": "ExpressionStatement",
                        "src": "2372:100:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3184,
                    "nodeType": "StructuredDocumentation",
                    "src": "1277:348:23",
                    "text": " @dev Derive and set hashes, reference chainId, and associated domain\n      separator during deployment.\n @param conduitController A contract that deploys conduits, or proxies\n                          that may optionally be used to transfer approved\n                          ERC20/721/1155 tokens."
                  },
                  "id": 3225,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3187,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3186,
                        "mutability": "mutable",
                        "name": "conduitController",
                        "nameLocation": "1650:17:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 3225,
                        "src": "1642:25:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 3185,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1642:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1641:27:23"
                  },
                  "returnParameters": {
                    "id": 3188,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1669:0:23"
                  },
                  "scope": 3384,
                  "src": "1630:849:23",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 3246,
                    "nodeType": "Block",
                    "src": "2694:271:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 3234,
                                  "name": "_EIP_712_DOMAIN_TYPEHASH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3168,
                                  "src": "2789:24:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 3235,
                                  "name": "_NAME_HASH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3164,
                                  "src": "2831:10:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 3236,
                                  "name": "_VERSION_HASH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3166,
                                  "src": "2859:13:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 3237,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "2890:5:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 3238,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "chainid",
                                  "nodeType": "MemberAccess",
                                  "src": "2890:13:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 3241,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "2929:4:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_ConsiderationBase_$3384",
                                        "typeString": "contract ConsiderationBase"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_ConsiderationBase_$3384",
                                        "typeString": "contract ConsiderationBase"
                                      }
                                    ],
                                    "id": 3240,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2921:7:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 3239,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2921:7:23",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 3242,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2921:13:23",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "id": 3232,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2761:3:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 3233,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "2761:10:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 3243,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2761:187:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 3231,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "2738:9:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 3244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2738:220:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 3230,
                        "id": 3245,
                        "nodeType": "Return",
                        "src": "2731:227:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3226,
                    "nodeType": "StructuredDocumentation",
                    "src": "2485:138:23",
                    "text": " @dev Internal view function to derive the EIP-712 domain separator.\n @return The derived domain separator."
                  },
                  "id": 3247,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_deriveDomainSeparator",
                  "nameLocation": "2637:22:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3227,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2659:2:23"
                  },
                  "returnParameters": {
                    "id": 3230,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3229,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3247,
                        "src": "2685:7:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3228,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2685:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2684:9:23"
                  },
                  "scope": 3384,
                  "src": "2628:337:23",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3254,
                    "nodeType": "Block",
                    "src": "3204:395:23",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "3267:326:23",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3288:1:23",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "OneWord",
                                    "nodeType": "YulIdentifier",
                                    "src": "3291:7:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3281:6:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3281:18:23"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3281:18:23"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "NameLengthPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "3492:13:23"
                                  },
                                  {
                                    "name": "NameWithLength",
                                    "nodeType": "YulIdentifier",
                                    "src": "3507:14:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "3485:6:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3485:37:23"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3485:37:23"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "3542:1:23",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ThreeWords",
                                    "nodeType": "YulIdentifier",
                                    "src": "3545:10:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "return",
                                  "nodeType": "YulIdentifier",
                                  "src": "3535:6:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3535:21:23"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3535:21:23"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3389,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3492:13:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3392,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3507:14:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3291:7:23",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3491,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3545:10:23",
                            "valueSize": 1
                          }
                        ],
                        "id": 3253,
                        "nodeType": "InlineAssembly",
                        "src": "3258:335:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3248,
                    "nodeType": "StructuredDocumentation",
                    "src": "2971:165:23",
                    "text": " @dev Internal pure function to retrieve the default name of this\n      contract and return.\n @return The name of this contract."
                  },
                  "id": 3255,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_name",
                  "nameLocation": "3150:5:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3249,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3155:2:23"
                  },
                  "returnParameters": {
                    "id": 3252,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3251,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3255,
                        "src": "3189:13:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3250,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3189:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3188:15:23"
                  },
                  "scope": 3384,
                  "src": "3141:458:23",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3263,
                    "nodeType": "Block",
                    "src": "3873:83:23",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "436f6e73696465726174696f6e",
                          "id": 3261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3934:15:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_64987f6373075400d7cbff689f2b7bc23753c7e6ce20688196489b8f5d9d7e6c",
                            "typeString": "literal_string \"Consideration\""
                          },
                          "value": "Consideration"
                        },
                        "functionReturnParameters": 3260,
                        "id": 3262,
                        "nodeType": "Return",
                        "src": "3927:22:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3256,
                    "nodeType": "StructuredDocumentation",
                    "src": "3605:194:23",
                    "text": " @dev Internal pure function to retrieve the default name of this contract\n      as a string that can be used internally.\n @return The name of this contract."
                  },
                  "id": 3264,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_nameString",
                  "nameLocation": "3813:11:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3257,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "3824:2:23"
                  },
                  "returnParameters": {
                    "id": 3260,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3259,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 3264,
                        "src": "3858:13:23",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 3258,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "3858:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3857:15:23"
                  },
                  "scope": 3384,
                  "src": "3804:152:23",
                  "stateMutability": "pure",
                  "virtual": true,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 3382,
                    "nodeType": "Block",
                    "src": "5051:2705:23",
                    "statements": [
                      {
                        "expression": {
                          "id": 3288,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3280,
                            "name": "nameHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3268,
                            "src": "5113:8:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "expression": {
                                      "argumentTypes": [],
                                      "id": 3284,
                                      "name": "_nameString",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3264,
                                      "src": "5140:11:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$__$returns$_t_string_memory_ptr_$",
                                        "typeString": "function () pure returns (string memory)"
                                      }
                                    },
                                    "id": 3285,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5140:13:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  ],
                                  "id": 3283,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5134:5:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 3282,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5134:5:23",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3286,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5134:20:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 3281,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "5124:9:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 3287,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5124:31:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "5113:42:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3289,
                        "nodeType": "ExpressionStatement",
                        "src": "5113:42:23"
                      },
                      {
                        "expression": {
                          "id": 3297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3290,
                            "name": "versionHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3270,
                            "src": "5228:11:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "hexValue": "31",
                                    "id": 3294,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5258:3:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                      "typeString": "literal_string \"1\""
                                    },
                                    "value": "1"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                      "typeString": "literal_string \"1\""
                                    }
                                  ],
                                  "id": 3293,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "5252:5:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                    "typeString": "type(bytes storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 3292,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "5252:5:23",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 3295,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5252:10:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 3291,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "5242:9:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 3296,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5242:21:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "5228:35:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3298,
                        "nodeType": "ExpressionStatement",
                        "src": "5228:35:23"
                      },
                      {
                        "assignments": [
                          3300
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3300,
                            "mutability": "mutable",
                            "name": "offerItemTypeString",
                            "nameLocation": "5362:19:23",
                            "nodeType": "VariableDeclaration",
                            "scope": 3382,
                            "src": "5349:32:23",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3299,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "5349:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3311,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "4f666665724974656d28",
                              "id": 3303,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5414:12:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f",
                                "typeString": "literal_string \"OfferItem(\""
                              },
                              "value": "OfferItem("
                            },
                            {
                              "hexValue": "75696e7438206974656d547970652c",
                              "id": 3304,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5444:17:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46",
                                "typeString": "literal_string \"uint8 itemType,\""
                              },
                              "value": "uint8 itemType,"
                            },
                            {
                              "hexValue": "6164647265737320746f6b656e2c",
                              "id": 3305,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5479:16:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e",
                                "typeString": "literal_string \"address token,\""
                              },
                              "value": "address token,"
                            },
                            {
                              "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                              "id": 3306,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5513:31:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123",
                                "typeString": "literal_string \"uint256 identifierOrCriteria,\""
                              },
                              "value": "uint256 identifierOrCriteria,"
                            },
                            {
                              "hexValue": "75696e74323536207374617274416d6f756e742c",
                              "id": 3307,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5562:22:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac",
                                "typeString": "literal_string \"uint256 startAmount,\""
                              },
                              "value": "uint256 startAmount,"
                            },
                            {
                              "hexValue": "75696e7432353620656e64416d6f756e74",
                              "id": 3308,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5602:19:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549",
                                "typeString": "literal_string \"uint256 endAmount\""
                              },
                              "value": "uint256 endAmount"
                            },
                            {
                              "hexValue": "29",
                              "id": 3309,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5635:3:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed",
                                "typeString": "literal_string \")\""
                              },
                              "value": ")"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_aacf40397f290752224d37e4a68924c35aa8778403c596f7f7f1b1f4da3a673f",
                                "typeString": "literal_string \"OfferItem(\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46",
                                "typeString": "literal_string \"uint8 itemType,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e",
                                "typeString": "literal_string \"address token,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123",
                                "typeString": "literal_string \"uint256 identifierOrCriteria,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac",
                                "typeString": "literal_string \"uint256 startAmount,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_64dbbb5043149dd397f27d296f04ff1fdcfd400eca6e228b3ed21410a0f9b549",
                                "typeString": "literal_string \"uint256 endAmount\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed",
                                "typeString": "literal_string \")\""
                              }
                            ],
                            "expression": {
                              "id": 3301,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "5384:3:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 3302,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "src": "5384:16:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 3310,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5384:264:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5349:299:23"
                      },
                      {
                        "assignments": [
                          3313
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3313,
                            "mutability": "mutable",
                            "name": "considerationItemTypeString",
                            "nameLocation": "5755:27:23",
                            "nodeType": "VariableDeclaration",
                            "scope": 3382,
                            "src": "5742:40:23",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3312,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "5742:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3325,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "436f6e73696465726174696f6e4974656d28",
                              "id": 3316,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5815:20:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc",
                                "typeString": "literal_string \"ConsiderationItem(\""
                              },
                              "value": "ConsiderationItem("
                            },
                            {
                              "hexValue": "75696e7438206974656d547970652c",
                              "id": 3317,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5853:17:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46",
                                "typeString": "literal_string \"uint8 itemType,\""
                              },
                              "value": "uint8 itemType,"
                            },
                            {
                              "hexValue": "6164647265737320746f6b656e2c",
                              "id": 3318,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5888:16:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e",
                                "typeString": "literal_string \"address token,\""
                              },
                              "value": "address token,"
                            },
                            {
                              "hexValue": "75696e74323536206964656e7469666965724f7243726974657269612c",
                              "id": 3319,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5922:31:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123",
                                "typeString": "literal_string \"uint256 identifierOrCriteria,\""
                              },
                              "value": "uint256 identifierOrCriteria,"
                            },
                            {
                              "hexValue": "75696e74323536207374617274416d6f756e742c",
                              "id": 3320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5971:22:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac",
                                "typeString": "literal_string \"uint256 startAmount,\""
                              },
                              "value": "uint256 startAmount,"
                            },
                            {
                              "hexValue": "75696e7432353620656e64416d6f756e742c",
                              "id": 3321,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6011:20:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f",
                                "typeString": "literal_string \"uint256 endAmount,\""
                              },
                              "value": "uint256 endAmount,"
                            },
                            {
                              "hexValue": "6164647265737320726563697069656e74",
                              "id": 3322,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6049:19:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9",
                                "typeString": "literal_string \"address recipient\""
                              },
                              "value": "address recipient"
                            },
                            {
                              "hexValue": "29",
                              "id": 3323,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6082:3:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed",
                                "typeString": "literal_string \")\""
                              },
                              "value": ")"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_7889dd0997369035bc9ad613965e170085bf5df0ac85565e66874573491557dc",
                                "typeString": "literal_string \"ConsiderationItem(\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8007478ed608a2020cbbaa3a3ae942dd52604e3d91ae9018ef33022dd213cb46",
                                "typeString": "literal_string \"uint8 itemType,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_fe688e707daaa1bdb68fcddb6e6dd66531d323da412c794a87cb05850867254e",
                                "typeString": "literal_string \"address token,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_78ce7ee256057b8f82836d05e5d061913da7f3336e5386b999806d627fa48123",
                                "typeString": "literal_string \"uint256 identifierOrCriteria,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_678d288bf78edb124db46188b0e26933a99975a3411d111a6fba3b7a907c2aac",
                                "typeString": "literal_string \"uint256 startAmount,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_170728d91822f81f087ee0ce677744b2d3fcd9fb67ccea50d4159389fcd4e02f",
                                "typeString": "literal_string \"uint256 endAmount,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_8cd93c7bcb50a934d8e1c8f6b2e182d277aed8f3f1fb65e3485bf9e3c6a02df9",
                                "typeString": "literal_string \"address recipient\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed",
                                "typeString": "literal_string \")\""
                              }
                            ],
                            "expression": {
                              "id": 3314,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "5785:3:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 3315,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "src": "5785:16:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 3324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5785:310:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5742:353:23"
                      },
                      {
                        "assignments": [
                          3327
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3327,
                            "mutability": "mutable",
                            "name": "orderComponentsPartialTypeString",
                            "nameLocation": "6225:32:23",
                            "nodeType": "VariableDeclaration",
                            "scope": 3382,
                            "src": "6212:45:23",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 3326,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "6212:5:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 3344,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "4f72646572436f6d706f6e656e747328",
                              "id": 3330,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6290:18:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573",
                                "typeString": "literal_string \"OrderComponents(\""
                              },
                              "value": "OrderComponents("
                            },
                            {
                              "hexValue": "61646472657373206f6666657265722c",
                              "id": 3331,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6326:18:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d",
                                "typeString": "literal_string \"address offerer,\""
                              },
                              "value": "address offerer,"
                            },
                            {
                              "hexValue": "61646472657373207a6f6e652c",
                              "id": 3332,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6362:15:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e",
                                "typeString": "literal_string \"address zone,\""
                              },
                              "value": "address zone,"
                            },
                            {
                              "hexValue": "4f666665724974656d5b5d206f666665722c",
                              "id": 3333,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6395:20:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256",
                                "typeString": "literal_string \"OfferItem[] offer,\""
                              },
                              "value": "OfferItem[] offer,"
                            },
                            {
                              "hexValue": "436f6e73696465726174696f6e4974656d5b5d20636f6e73696465726174696f6e2c",
                              "id": 3334,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6433:36:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f",
                                "typeString": "literal_string \"ConsiderationItem[] consideration,\""
                              },
                              "value": "ConsiderationItem[] consideration,"
                            },
                            {
                              "hexValue": "75696e7438206f72646572547970652c",
                              "id": 3335,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6487:18:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f",
                                "typeString": "literal_string \"uint8 orderType,\""
                              },
                              "value": "uint8 orderType,"
                            },
                            {
                              "hexValue": "75696e7432353620737461727454696d652c",
                              "id": 3336,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6523:20:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54",
                                "typeString": "literal_string \"uint256 startTime,\""
                              },
                              "value": "uint256 startTime,"
                            },
                            {
                              "hexValue": "75696e7432353620656e6454696d652c",
                              "id": 3337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6561:18:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51",
                                "typeString": "literal_string \"uint256 endTime,\""
                              },
                              "value": "uint256 endTime,"
                            },
                            {
                              "hexValue": "62797465733332207a6f6e65486173682c",
                              "id": 3338,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6597:19:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c",
                                "typeString": "literal_string \"bytes32 zoneHash,\""
                              },
                              "value": "bytes32 zoneHash,"
                            },
                            {
                              "hexValue": "75696e743235362073616c742c",
                              "id": 3339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6634:15:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9",
                                "typeString": "literal_string \"uint256 salt,\""
                              },
                              "value": "uint256 salt,"
                            },
                            {
                              "hexValue": "6279746573333220636f6e647569744b65792c",
                              "id": 3340,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6667:21:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83",
                                "typeString": "literal_string \"bytes32 conduitKey,\""
                              },
                              "value": "bytes32 conduitKey,"
                            },
                            {
                              "hexValue": "75696e74323536206e6f6e6365",
                              "id": 3341,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6706:15:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362",
                                "typeString": "literal_string \"uint256 nonce\""
                              },
                              "value": "uint256 nonce"
                            },
                            {
                              "hexValue": "29",
                              "id": 3342,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6735:3:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed",
                                "typeString": "literal_string \")\""
                              },
                              "value": ")"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_7c24b828b942c5e7cb26b776ef61cb762b25dd7217c72ddf94e78e31e47f1573",
                                "typeString": "literal_string \"OrderComponents(\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_b1dcc058a6b0f4e0935ca3786dddf98835fecc3b69bd0eca7de13103aa81e81d",
                                "typeString": "literal_string \"address offerer,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_0c518b2465c4749498834e393b56f1f39b72a0de7a7e2d6579fc7122d677bf5e",
                                "typeString": "literal_string \"address zone,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4feeeb9b94dc1c2be8567b49f842b1678be35dc3df3d8e057bb17b60870ec256",
                                "typeString": "literal_string \"OfferItem[] offer,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_da66c4f29ee6f8772e9a72a63848ce7067565ba9e6f5e1576b2d828c3f38229f",
                                "typeString": "literal_string \"ConsiderationItem[] consideration,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_3ca99a1f17421d983438cc17eb08862a0680b9d69f23168b6da798602e65107f",
                                "typeString": "literal_string \"uint8 orderType,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_705824597b772078d6698090db71322fb0f7189e8d9525092f61d899a83f7d54",
                                "typeString": "literal_string \"uint256 startTime,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_74a66df12ca0ea8a30448202025ad9f27cfc2dfc717b4ef59990e8161131fb51",
                                "typeString": "literal_string \"uint256 endTime,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_4bb12ba2e4bdb1e75495d81aa011d8cdd2d2f8c05db1b34e0236ee9ad67a7a6c",
                                "typeString": "literal_string \"bytes32 zoneHash,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_7afce5645cc56fac870e2fe75e80ac27df3fcb6cd3912779279ab14e789c90b9",
                                "typeString": "literal_string \"uint256 salt,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_cfcd111a38c5c9a40b605be3751a38afdc9e395727494a35e59d28f25a1a5e83",
                                "typeString": "literal_string \"bytes32 conduitKey,\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_57010f4150eb08e779a691a31a26f7592ae1229ccc4d87d3555e3f40fad8b362",
                                "typeString": "literal_string \"uint256 nonce\""
                              },
                              {
                                "typeIdentifier": "t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed",
                                "typeString": "literal_string \")\""
                              }
                            ],
                            "expression": {
                              "id": 3328,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "6260:3:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 3329,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "src": "6260:16:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 3343,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6260:488:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6212:536:23"
                      },
                      {
                        "expression": {
                          "id": 3357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3345,
                            "name": "eip712DomainTypehash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3272,
                            "src": "6847:20:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "hexValue": "454950373132446f6d61696e28",
                                    "id": 3349,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6927:15:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a",
                                      "typeString": "literal_string \"EIP712Domain(\""
                                    },
                                    "value": "EIP712Domain("
                                  },
                                  {
                                    "hexValue": "737472696e67206e616d652c",
                                    "id": 3350,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6964:14:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597",
                                      "typeString": "literal_string \"string name,\""
                                    },
                                    "value": "string name,"
                                  },
                                  {
                                    "hexValue": "737472696e672076657273696f6e2c",
                                    "id": 3351,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7000:17:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c",
                                      "typeString": "literal_string \"string version,\""
                                    },
                                    "value": "string version,"
                                  },
                                  {
                                    "hexValue": "75696e7432353620636861696e49642c",
                                    "id": 3352,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7039:18:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b",
                                      "typeString": "literal_string \"uint256 chainId,\""
                                    },
                                    "value": "uint256 chainId,"
                                  },
                                  {
                                    "hexValue": "6164647265737320766572696679696e67436f6e7472616374",
                                    "id": 3353,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7079:27:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b",
                                      "typeString": "literal_string \"address verifyingContract\""
                                    },
                                    "value": "address verifyingContract"
                                  },
                                  {
                                    "hexValue": "29",
                                    "id": 3354,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "string",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7124:3:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed",
                                      "typeString": "literal_string \")\""
                                    },
                                    "value": ")"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_stringliteral_de06c25f21a371a1bc92887b399d179e16db7e78ff9780730d4f2f1217f0227a",
                                      "typeString": "literal_string \"EIP712Domain(\""
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_0376df606842aeeddf95ba5db6e827bf40e254b68db9531357ede6679d404597",
                                      "typeString": "literal_string \"string name,\""
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_59f8a695163fe72b45680abd680645bb66c8df0e236a50c4f8a610af2d5a606c",
                                      "typeString": "literal_string \"string version,\""
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_43fde9c96e882d48ec2b3bfc68b495c65e04789cf76c3487375805a9d865e46b",
                                      "typeString": "literal_string \"uint256 chainId,\""
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_40ab939a78baf41674810042aff4b66e1c8507c1fbb0af0c7e28dc4250f2dd9b",
                                      "typeString": "literal_string \"address verifyingContract\""
                                    },
                                    {
                                      "typeIdentifier": "t_stringliteral_59d76dc3b33357eda30db1508968fbb18f21b9cd2442f1559b20154ddaa4d7ed",
                                      "typeString": "literal_string \")\""
                                    }
                                  ],
                                  "expression": {
                                    "id": 3347,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "6893:3:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 3348,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "6893:16:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 3355,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6893:248:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 3346,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "6870:9:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 3356,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6870:281:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "6847:304:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3358,
                        "nodeType": "ExpressionStatement",
                        "src": "6847:304:23"
                      },
                      {
                        "expression": {
                          "id": 3363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3359,
                            "name": "offerItemTypehash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3274,
                            "src": "7241:17:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3361,
                                "name": "offerItemTypeString",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3300,
                                "src": "7271:19:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 3360,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "7261:9:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 3362,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7261:30:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "7241:50:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3364,
                        "nodeType": "ExpressionStatement",
                        "src": "7241:50:23"
                      },
                      {
                        "expression": {
                          "id": 3369,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3365,
                            "name": "considerationItemTypehash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3276,
                            "src": "7381:25:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 3367,
                                "name": "considerationItemTypeString",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3313,
                                "src": "7419:27:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 3366,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "7409:9:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 3368,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7409:38:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "7381:66:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3370,
                        "nodeType": "ExpressionStatement",
                        "src": "7381:66:23"
                      },
                      {
                        "expression": {
                          "id": 3380,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 3371,
                            "name": "orderTypehash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3278,
                            "src": "7538:13:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "id": 3375,
                                    "name": "orderComponentsPartialTypeString",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3327,
                                    "src": "7611:32:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 3376,
                                    "name": "considerationItemTypeString",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3313,
                                    "src": "7661:27:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "id": 3377,
                                    "name": "offerItemTypeString",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3300,
                                    "src": "7706:19:23",
                                    "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"
                                    }
                                  ],
                                  "expression": {
                                    "id": 3373,
                                    "name": "abi",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -1,
                                    "src": "7577:3:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_abi",
                                      "typeString": "abi"
                                    }
                                  },
                                  "id": 3374,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "encodePacked",
                                  "nodeType": "MemberAccess",
                                  "src": "7577:16:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                    "typeString": "function () pure returns (bytes memory)"
                                  }
                                },
                                "id": 3378,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7577:162:23",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "id": 3372,
                              "name": "keccak256",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -8,
                              "src": "7554:9:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (bytes memory) pure returns (bytes32)"
                              }
                            },
                            "id": 3379,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7554:195:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "7538:211:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 3381,
                        "nodeType": "ExpressionStatement",
                        "src": "7538:211:23"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 3265,
                    "nodeType": "StructuredDocumentation",
                    "src": "3962:768:23",
                    "text": " @dev Internal pure function to derive required EIP-712 typehashes and\n      other hashes during contract creation.\n @return nameHash                  The hash of the name of the contract.\n @return versionHash               The hash of the version string of the\n                                   contract.\n @return eip712DomainTypehash      The primary EIP-712 domain typehash.\n @return offerItemTypehash         The EIP-712 typehash for OfferItem\n                                   types.\n @return considerationItemTypehash The EIP-712 typehash for\n                                   ConsiderationItem types.\n @return orderTypehash             The EIP-712 typehash for Order types."
                  },
                  "id": 3383,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_deriveTypehashes",
                  "nameLocation": "4744:17:23",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 3266,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4761:2:23"
                  },
                  "returnParameters": {
                    "id": 3279,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3268,
                        "mutability": "mutable",
                        "name": "nameHash",
                        "nameLocation": "4832:8:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 3383,
                        "src": "4824:16:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3267,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4824:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3270,
                        "mutability": "mutable",
                        "name": "versionHash",
                        "nameLocation": "4862:11:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 3383,
                        "src": "4854:19:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3269,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4854:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3272,
                        "mutability": "mutable",
                        "name": "eip712DomainTypehash",
                        "nameLocation": "4895:20:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 3383,
                        "src": "4887:28:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3271,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4887:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3274,
                        "mutability": "mutable",
                        "name": "offerItemTypehash",
                        "nameLocation": "4937:17:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 3383,
                        "src": "4929:25:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3273,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4929:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3276,
                        "mutability": "mutable",
                        "name": "considerationItemTypehash",
                        "nameLocation": "4976:25:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 3383,
                        "src": "4968:33:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3275,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4968:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 3278,
                        "mutability": "mutable",
                        "name": "orderTypehash",
                        "nameLocation": "5023:13:23",
                        "nodeType": "VariableDeclaration",
                        "scope": 3383,
                        "src": "5015:21:23",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 3277,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5015:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4810:236:23"
                  },
                  "scope": 3384,
                  "src": "4735:3021:23",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 3385,
              "src": "464:7294:23",
              "usedErrors": [
                1856,
                1859,
                1866,
                1869,
                1874,
                1883,
                1886,
                1893,
                1896,
                1901,
                1906,
                1909,
                1912,
                1917,
                1920,
                1923
              ]
            }
          ],
          "src": "32:7727:23"
        },
        "id": 23
      },
      "seaport/contracts/lib/ConsiderationConstants.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/ConsiderationConstants.sol",
          "exportedSymbols": {
            "AccumulatorArmed": [
              3772
            ],
            "AccumulatorDisarmed": [
              3769
            ],
            "Accumulator_array_length_ptr": [
              3784
            ],
            "Accumulator_array_offset": [
              3790
            ],
            "Accumulator_array_offset_ptr": [
              3781
            ],
            "Accumulator_conduitKey_ptr": [
              3775
            ],
            "Accumulator_itemSizeOffsetDifference": [
              3787
            ],
            "Accumulator_selector_ptr": [
              3778
            ],
            "AdditionalRecipients_size": [
              3530
            ],
            "AdvancedOrder_numerator_offset": [
              3482
            ],
            "BasicOrder_additionalRecipients_data_cdPtr": [
              3621
            ],
            "BasicOrder_additionalRecipients_head_cdPtr": [
              3612
            ],
            "BasicOrder_additionalRecipients_head_ptr": [
              3678
            ],
            "BasicOrder_additionalRecipients_length_cdPtr": [
              3618
            ],
            "BasicOrder_basicOrderType_cdPtr": [
              3597
            ],
            "BasicOrder_considerationAmount_cdPtr": [
              3582
            ],
            "BasicOrder_considerationHashesArray_ptr": [
              3518
            ],
            "BasicOrder_considerationItem_endAmount_ptr": [
              3642
            ],
            "BasicOrder_considerationItem_identifier_ptr": [
              3636
            ],
            "BasicOrder_considerationItem_itemType_ptr": [
              3630
            ],
            "BasicOrder_considerationItem_startAmount_ptr": [
              3639
            ],
            "BasicOrder_considerationItem_token_ptr": [
              3633
            ],
            "BasicOrder_considerationItem_typeHash_ptr": [
              3627
            ],
            "BasicOrder_considerationToken_cdPtr": [
              3579
            ],
            "BasicOrder_endAmount_cdPtr": [
              3515
            ],
            "BasicOrder_fulfillerConduit_cdPtr": [
              3606
            ],
            "BasicOrder_offerAmount_cdPtr": [
              3594
            ],
            "BasicOrder_offerItem_endAmount_ptr": [
              3654
            ],
            "BasicOrder_offerItem_itemType_ptr": [
              3648
            ],
            "BasicOrder_offerItem_token_ptr": [
              3651
            ],
            "BasicOrder_offerItem_typeHash_ptr": [
              3645
            ],
            "BasicOrder_offerToken_cdPtr": [
              3591
            ],
            "BasicOrder_offererConduit_cdPtr": [
              3603
            ],
            "BasicOrder_offerer_cdPtr": [
              3585
            ],
            "BasicOrder_order_considerationHashes_ptr": [
              3666
            ],
            "BasicOrder_order_nonce_ptr": [
              3675
            ],
            "BasicOrder_order_offerHashes_ptr": [
              3663
            ],
            "BasicOrder_order_offerer_ptr": [
              3660
            ],
            "BasicOrder_order_orderType_ptr": [
              3669
            ],
            "BasicOrder_order_startTime_ptr": [
              3672
            ],
            "BasicOrder_order_typeHash_ptr": [
              3657
            ],
            "BasicOrder_parameters_cdPtr": [
              3576
            ],
            "BasicOrder_parameters_ptr": [
              3624
            ],
            "BasicOrder_signature_cdPtr": [
              3615
            ],
            "BasicOrder_signature_ptr": [
              3681
            ],
            "BasicOrder_startTime_cdPtr": [
              3600
            ],
            "BasicOrder_totalOriginalAdditionalRecipients_cdPtr": [
              3609
            ],
            "BasicOrder_zone_cdPtr": [
              3588
            ],
            "Common_amount_offset": [
              3413
            ],
            "Common_identifier_offset": [
              3410
            ],
            "Common_token_offset": [
              3407
            ],
            "Conduit_execute_ConduitTransfer_length": [
              3739
            ],
            "Conduit_execute_ConduitTransfer_length_ptr": [
              3745
            ],
            "Conduit_execute_ConduitTransfer_offset_ptr": [
              3742
            ],
            "Conduit_execute_ConduitTransfer_ptr": [
              3736
            ],
            "Conduit_execute_signature": [
              3733
            ],
            "Conduit_execute_transferAmount_ptr": [
              3763
            ],
            "Conduit_execute_transferFrom_ptr": [
              3754
            ],
            "Conduit_execute_transferIdentifier_ptr": [
              3760
            ],
            "Conduit_execute_transferItemType_ptr": [
              3748
            ],
            "Conduit_execute_transferTo_ptr": [
              3757
            ],
            "Conduit_execute_transferToken_ptr": [
              3751
            ],
            "Conduit_transferItem_amount_ptr": [
              3808
            ],
            "Conduit_transferItem_from_ptr": [
              3799
            ],
            "Conduit_transferItem_identifier_ptr": [
              3805
            ],
            "Conduit_transferItem_size": [
              3793
            ],
            "Conduit_transferItem_to_ptr": [
              3802
            ],
            "Conduit_transferItem_token_ptr": [
              3796
            ],
            "ConsiderItem_recipient_offset": [
              3431
            ],
            "ConsiderationItem_recipient_offset": [
              3428
            ],
            "CostPerWord": [
              3708
            ],
            "Create2AddressDerivation_length": [
              3717
            ],
            "Create2AddressDerivation_ptr": [
              3714
            ],
            "DefaultFreeMemoryPointer": [
              3506
            ],
            "EIP2098_allButHighestBitMask": [
              3685
            ],
            "EIP712_ConsiderationItem_size": [
              3527
            ],
            "EIP712_DigestPayload_size": [
              3539
            ],
            "EIP712_DomainSeparator_offset": [
              3533
            ],
            "EIP712_OfferItem_size": [
              3524
            ],
            "EIP712_OrderHash_offset": [
              3536
            ],
            "EIP712_Order_size": [
              3521
            ],
            "EIP_712_PREFIX": [
              3702
            ],
            "Execution_conduit_offset": [
              3437
            ],
            "Execution_offerer_offset": [
              3434
            ],
            "ExtraGasBuffer": [
              3705
            ],
            "FiveWords": [
              3497
            ],
            "FourWords": [
              3494
            ],
            "FreeMemoryPointerSlot": [
              3500
            ],
            "Fulfillment_itemIndex_offset": [
              3479
            ],
            "InvalidFulfillmentComponentData_error_len": [
              3444
            ],
            "InvalidFulfillmentComponentData_error_signature": [
              3441
            ],
            "MaskOverByteTwelve": [
              3721
            ],
            "MaskOverFirstFourBytes": [
              3729
            ],
            "MaskOverLastTwentyBytes": [
              3725
            ],
            "MemoryExpansionCoefficient": [
              3711
            ],
            "MissingItemAmount_error_len": [
              3464
            ],
            "MissingItemAmount_error_signature": [
              3461
            ],
            "NameLengthPtr": [
              3389
            ],
            "NameWithLength": [
              3392
            ],
            "NoContract_error_length": [
              3698
            ],
            "NoContract_error_sig_ptr": [
              3692
            ],
            "NoContract_error_signature": [
              3689
            ],
            "NoContract_error_token_ptr": [
              3695
            ],
            "OneConduitExecute_size": [
              3766
            ],
            "OneWord": [
              3485
            ],
            "OrderFulfilled_baseOffset": [
              3552
            ],
            "OrderFulfilled_baseSize": [
              3545
            ],
            "OrderFulfilled_consideration_body_offset": [
              3573
            ],
            "OrderFulfilled_consideration_head_offset": [
              3570
            ],
            "OrderFulfilled_consideration_length_baseOffset": [
              3555
            ],
            "OrderFulfilled_fulfiller_offset": [
              3561
            ],
            "OrderFulfilled_offer_body_offset": [
              3567
            ],
            "OrderFulfilled_offer_head_offset": [
              3564
            ],
            "OrderFulfilled_offer_length_baseOffset": [
              3558
            ],
            "OrderFulfilled_selector": [
              3549
            ],
            "OrderParameters_conduit_offset": [
              3473
            ],
            "OrderParameters_consideration_head_offset": [
              3470
            ],
            "OrderParameters_nonce_offset": [
              3476
            ],
            "OrderParameters_offer_head_offset": [
              3467
            ],
            "Panic_arithmetic": [
              3457
            ],
            "Panic_error_length": [
              3454
            ],
            "Panic_error_offset": [
              3451
            ],
            "Panic_error_signature": [
              3448
            ],
            "ReceivedItem_CommonParams_size": [
              3425
            ],
            "ReceivedItem_amount_offset": [
              3419
            ],
            "ReceivedItem_recipient_offset": [
              3422
            ],
            "ReceivedItem_size": [
              3416
            ],
            "Slot0x80": [
              3509
            ],
            "Slot0xA0": [
              3512
            ],
            "ThreeWords": [
              3491
            ],
            "TwoWords": [
              3488
            ],
            "Version": [
              3395
            ],
            "Version_length": [
              3398
            ],
            "ZeroSlot": [
              3503
            ],
            "_ENTERED": [
              3404
            ],
            "_NOT_ENTERED": [
              3401
            ],
            "receivedItemsHash_ptr": [
              3542
            ]
          },
          "id": 3809,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3386,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:24"
            },
            {
              "constant": true,
              "id": 3389,
              "mutability": "constant",
              "name": "NameLengthPtr",
              "nameLocation": "2097:13:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "2080:35:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3387,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2080:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3435",
                "id": 3388,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2113:2:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_45_by_1",
                  "typeString": "int_const 45"
                },
                "value": "45"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3392,
              "mutability": "constant",
              "name": "NameWithLength",
              "nameLocation": "2134:14:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "2117:64:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3390,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2117:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "307830643433364636453733363936343635373236313734363936463645",
                "id": 3391,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2151:30:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_269014098098874041013807413292910_by_1",
                  "typeString": "int_const 2690...(25 digits omitted)...2910"
                },
                "value": "0x0d436F6E73696465726174696F6E"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3395,
              "mutability": "constant",
              "name": "Version",
              "nameLocation": "2201:7:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "2184:31:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3393,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2184:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783331",
                "id": 3394,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2211:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_49_by_1",
                  "typeString": "int_const 49"
                },
                "value": "0x31"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3398,
              "mutability": "constant",
              "name": "Version_length",
              "nameLocation": "2234:14:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "2217:35:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3396,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2217:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "31",
                "id": 3397,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2251:1:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1_by_1",
                  "typeString": "int_const 1"
                },
                "value": "1"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3401,
              "mutability": "constant",
              "name": "_NOT_ENTERED",
              "nameLocation": "2272:12:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "2255:33:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3399,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2255:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "31",
                "id": 3400,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2287:1:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1_by_1",
                  "typeString": "int_const 1"
                },
                "value": "1"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3404,
              "mutability": "constant",
              "name": "_ENTERED",
              "nameLocation": "2307:8:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "2290:29:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3402,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2290:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "32",
                "id": 3403,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2318:1:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_2_by_1",
                  "typeString": "int_const 2"
                },
                "value": "2"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3407,
              "mutability": "constant",
              "name": "Common_token_offset",
              "nameLocation": "2471:19:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "2454:43:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3405,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2454:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 3406,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2493:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3410,
              "mutability": "constant",
              "name": "Common_identifier_offset",
              "nameLocation": "2516:24:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "2499:48:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3408,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2499:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783430",
                "id": 3409,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2543:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_64_by_1",
                  "typeString": "int_const 64"
                },
                "value": "0x40"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3413,
              "mutability": "constant",
              "name": "Common_amount_offset",
              "nameLocation": "2566:20:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "2549:44:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3411,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2549:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783630",
                "id": 3412,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2589:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_96_by_1",
                  "typeString": "int_const 96"
                },
                "value": "0x60"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3416,
              "mutability": "constant",
              "name": "ReceivedItem_size",
              "nameLocation": "2613:17:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "2596:41:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3414,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2596:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786130",
                "id": 3415,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2633:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_160_by_1",
                  "typeString": "int_const 160"
                },
                "value": "0xa0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3419,
              "mutability": "constant",
              "name": "ReceivedItem_amount_offset",
              "nameLocation": "2656:26:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "2639:50:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3417,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2639:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783630",
                "id": 3418,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2685:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_96_by_1",
                  "typeString": "int_const 96"
                },
                "value": "0x60"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3422,
              "mutability": "constant",
              "name": "ReceivedItem_recipient_offset",
              "nameLocation": "2708:29:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "2691:53:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3420,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2691:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783830",
                "id": 3421,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2740:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_128_by_1",
                  "typeString": "int_const 128"
                },
                "value": "0x80"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3425,
              "mutability": "constant",
              "name": "ReceivedItem_CommonParams_size",
              "nameLocation": "2764:30:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "2747:54:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3423,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2747:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783630",
                "id": 3424,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2797:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_96_by_1",
                  "typeString": "int_const 96"
                },
                "value": "0x60"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3428,
              "mutability": "constant",
              "name": "ConsiderationItem_recipient_offset",
              "nameLocation": "2821:34:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "2804:58:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3426,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2804:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786130",
                "id": 3427,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2858:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_160_by_1",
                  "typeString": "int_const 160"
                },
                "value": "0xa0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3431,
              "mutability": "constant",
              "name": "ConsiderItem_recipient_offset",
              "nameLocation": "2956:29:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "2939:53:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3429,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2939:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786130",
                "id": 3430,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2988:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_160_by_1",
                  "typeString": "int_const 160"
                },
                "value": "0xa0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3434,
              "mutability": "constant",
              "name": "Execution_offerer_offset",
              "nameLocation": "3012:24:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "2995:48:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3432,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2995:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 3433,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3039:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3437,
              "mutability": "constant",
              "name": "Execution_conduit_offset",
              "nameLocation": "3062:24:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "3045:48:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3435,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3045:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783430",
                "id": 3436,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3089:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_64_by_1",
                  "typeString": "int_const 64"
                },
                "value": "0x40"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3441,
              "mutability": "constant",
              "name": "InvalidFulfillmentComponentData_error_signature",
              "nameLocation": "3113:47:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "3096:141:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3438,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3096:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307837666461373237393030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 3439,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3169:66:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_57829694491433599956760509916192848133310438881256311050796729709605798543360_by_1",
                      "typeString": "int_const 5782...(69 digits omitted)...3360"
                    },
                    "value": "0x7fda727900000000000000000000000000000000000000000000000000000000"
                  }
                ],
                "id": 3440,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "3163:74:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_57829694491433599956760509916192848133310438881256311050796729709605798543360_by_1",
                  "typeString": "int_const 5782...(69 digits omitted)...3360"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3444,
              "mutability": "constant",
              "name": "InvalidFulfillmentComponentData_error_len",
              "nameLocation": "3256:41:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "3239:65:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3442,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3239:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 3443,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3300:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3448,
              "mutability": "constant",
              "name": "Panic_error_signature",
              "nameLocation": "3324:21:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "3307:115:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3445,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3307:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307834653438376237313030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 3446,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3354:66:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_35408467139433450592217433187231851964531694900788300625387963629091585785856_by_1",
                      "typeString": "int_const 3540...(69 digits omitted)...5856"
                    },
                    "value": "0x4e487b7100000000000000000000000000000000000000000000000000000000"
                  }
                ],
                "id": 3447,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "3348:74:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_35408467139433450592217433187231851964531694900788300625387963629091585785856_by_1",
                  "typeString": "int_const 3540...(69 digits omitted)...5856"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3451,
              "mutability": "constant",
              "name": "Panic_error_offset",
              "nameLocation": "3441:18:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "3424:42:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3449,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3424:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783034",
                "id": 3450,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3462:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_4_by_1",
                  "typeString": "int_const 4"
                },
                "value": "0x04"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3454,
              "mutability": "constant",
              "name": "Panic_error_length",
              "nameLocation": "3485:18:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "3468:42:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3452,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3468:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783234",
                "id": 3453,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3506:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_36_by_1",
                  "typeString": "int_const 36"
                },
                "value": "0x24"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3457,
              "mutability": "constant",
              "name": "Panic_arithmetic",
              "nameLocation": "3529:16:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "3512:40:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3455,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3512:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783131",
                "id": 3456,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3548:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_17_by_1",
                  "typeString": "int_const 17"
                },
                "value": "0x11"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3461,
              "mutability": "constant",
              "name": "MissingItemAmount_error_signature",
              "nameLocation": "3572:33:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "3555:127:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3458,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3555:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307839316233653531343030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 3459,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3614:66:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_65903209708281305491247531932642880901070546646261226988310371542132880048128_by_1",
                      "typeString": "int_const 6590...(69 digits omitted)...8128"
                    },
                    "value": "0x91b3e51400000000000000000000000000000000000000000000000000000000"
                  }
                ],
                "id": 3460,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "3608:74:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_65903209708281305491247531932642880901070546646261226988310371542132880048128_by_1",
                  "typeString": "int_const 6590...(69 digits omitted)...8128"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3464,
              "mutability": "constant",
              "name": "MissingItemAmount_error_len",
              "nameLocation": "3701:27:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "3684:51:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3462,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3684:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 3463,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3731:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3467,
              "mutability": "constant",
              "name": "OrderParameters_offer_head_offset",
              "nameLocation": "3755:33:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "3738:57:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3465,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3738:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783430",
                "id": 3466,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3791:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_64_by_1",
                  "typeString": "int_const 64"
                },
                "value": "0x40"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3470,
              "mutability": "constant",
              "name": "OrderParameters_consideration_head_offset",
              "nameLocation": "3814:41:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "3797:65:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3468,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3797:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783630",
                "id": 3469,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3858:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_96_by_1",
                  "typeString": "int_const 96"
                },
                "value": "0x60"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3473,
              "mutability": "constant",
              "name": "OrderParameters_conduit_offset",
              "nameLocation": "3881:30:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "3864:55:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3471,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3864:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313230",
                "id": 3472,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3914:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_288_by_1",
                  "typeString": "int_const 288"
                },
                "value": "0x120"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3476,
              "mutability": "constant",
              "name": "OrderParameters_nonce_offset",
              "nameLocation": "3938:28:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "3921:53:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3474,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3921:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313430",
                "id": 3475,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3969:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_320_by_1",
                  "typeString": "int_const 320"
                },
                "value": "0x140"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3479,
              "mutability": "constant",
              "name": "Fulfillment_itemIndex_offset",
              "nameLocation": "3994:28:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "3977:52:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3477,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3977:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 3478,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4025:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3482,
              "mutability": "constant",
              "name": "AdvancedOrder_numerator_offset",
              "nameLocation": "4049:30:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4032:54:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3480,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4032:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 3481,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4082:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3485,
              "mutability": "constant",
              "name": "OneWord",
              "nameLocation": "4106:7:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4089:31:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3483,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4089:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 3484,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4116:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3488,
              "mutability": "constant",
              "name": "TwoWords",
              "nameLocation": "4139:8:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4122:32:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3486,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4122:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783430",
                "id": 3487,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4150:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_64_by_1",
                  "typeString": "int_const 64"
                },
                "value": "0x40"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3491,
              "mutability": "constant",
              "name": "ThreeWords",
              "nameLocation": "4173:10:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4156:34:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3489,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4156:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783630",
                "id": 3490,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4186:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_96_by_1",
                  "typeString": "int_const 96"
                },
                "value": "0x60"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3494,
              "mutability": "constant",
              "name": "FourWords",
              "nameLocation": "4209:9:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4192:33:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3492,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4192:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783830",
                "id": 3493,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4221:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_128_by_1",
                  "typeString": "int_const 128"
                },
                "value": "0x80"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3497,
              "mutability": "constant",
              "name": "FiveWords",
              "nameLocation": "4244:9:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4227:33:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3495,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4227:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786130",
                "id": 3496,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4256:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_160_by_1",
                  "typeString": "int_const 160"
                },
                "value": "0xa0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3500,
              "mutability": "constant",
              "name": "FreeMemoryPointerSlot",
              "nameLocation": "4280:21:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4263:45:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3498,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4263:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783430",
                "id": 3499,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4304:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_64_by_1",
                  "typeString": "int_const 64"
                },
                "value": "0x40"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3503,
              "mutability": "constant",
              "name": "ZeroSlot",
              "nameLocation": "4327:8:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4310:32:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3501,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4310:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783630",
                "id": 3502,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4338:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_96_by_1",
                  "typeString": "int_const 96"
                },
                "value": "0x60"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3506,
              "mutability": "constant",
              "name": "DefaultFreeMemoryPointer",
              "nameLocation": "4361:24:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4344:48:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3504,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4344:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783830",
                "id": 3505,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4388:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_128_by_1",
                  "typeString": "int_const 128"
                },
                "value": "0x80"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3509,
              "mutability": "constant",
              "name": "Slot0x80",
              "nameLocation": "4412:8:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4395:32:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3507,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4395:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783830",
                "id": 3508,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4423:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_128_by_1",
                  "typeString": "int_const 128"
                },
                "value": "0x80"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3512,
              "mutability": "constant",
              "name": "Slot0xA0",
              "nameLocation": "4446:8:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4429:32:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3510,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4429:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786130",
                "id": 3511,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4457:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_160_by_1",
                  "typeString": "int_const 160"
                },
                "value": "0xa0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3515,
              "mutability": "constant",
              "name": "BasicOrder_endAmount_cdPtr",
              "nameLocation": "4481:26:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4464:51:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3513,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4464:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313034",
                "id": 3514,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4510:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_260_by_1",
                  "typeString": "int_const 260"
                },
                "value": "0x104"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3518,
              "mutability": "constant",
              "name": "BasicOrder_considerationHashesArray_ptr",
              "nameLocation": "4535:39:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4518:64:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3516,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4518:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313630",
                "id": 3517,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4577:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_352_by_1",
                  "typeString": "int_const 352"
                },
                "value": "0x160"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3521,
              "mutability": "constant",
              "name": "EIP712_Order_size",
              "nameLocation": "4602:17:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4585:42:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3519,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4585:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313830",
                "id": 3520,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4622:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_384_by_1",
                  "typeString": "int_const 384"
                },
                "value": "0x180"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3524,
              "mutability": "constant",
              "name": "EIP712_OfferItem_size",
              "nameLocation": "4646:21:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4629:45:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3522,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4629:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786330",
                "id": 3523,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4670:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_192_by_1",
                  "typeString": "int_const 192"
                },
                "value": "0xc0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3527,
              "mutability": "constant",
              "name": "EIP712_ConsiderationItem_size",
              "nameLocation": "4693:29:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4676:53:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3525,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4676:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786530",
                "id": 3526,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4725:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_224_by_1",
                  "typeString": "int_const 224"
                },
                "value": "0xe0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3530,
              "mutability": "constant",
              "name": "AdditionalRecipients_size",
              "nameLocation": "4748:25:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4731:49:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3528,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4731:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783430",
                "id": 3529,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4776:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_64_by_1",
                  "typeString": "int_const 64"
                },
                "value": "0x40"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3533,
              "mutability": "constant",
              "name": "EIP712_DomainSeparator_offset",
              "nameLocation": "4800:29:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4783:53:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3531,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4783:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783032",
                "id": 3532,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4832:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_2_by_1",
                  "typeString": "int_const 2"
                },
                "value": "0x02"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3536,
              "mutability": "constant",
              "name": "EIP712_OrderHash_offset",
              "nameLocation": "4855:23:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4838:47:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3534,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4838:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783232",
                "id": 3535,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4881:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_34_by_1",
                  "typeString": "int_const 34"
                },
                "value": "0x22"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3539,
              "mutability": "constant",
              "name": "EIP712_DigestPayload_size",
              "nameLocation": "4904:25:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4887:49:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3537,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4887:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783432",
                "id": 3538,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4932:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_66_by_1",
                  "typeString": "int_const 66"
                },
                "value": "0x42"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3542,
              "mutability": "constant",
              "name": "receivedItemsHash_ptr",
              "nameLocation": "4956:21:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "4939:45:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3540,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4939:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783630",
                "id": 3541,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4980:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_96_by_1",
                  "typeString": "int_const 96"
                },
                "value": "0x60"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3545,
              "mutability": "constant",
              "name": "OrderFulfilled_baseSize",
              "nameLocation": "6118:23:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "6101:48:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3543,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6101:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078316530",
                "id": 3544,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6144:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_480_by_1",
                  "typeString": "int_const 480"
                },
                "value": "0x1e0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3549,
              "mutability": "constant",
              "name": "OrderFulfilled_selector",
              "nameLocation": "6168:23:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "6151:117:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3546,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6151:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307839643961663865333864363663363265326331326630323235323439666439643732316335346238336634386439333532633937633663616364636236663331",
                    "id": 3547,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6200:66:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_71286929443441903619420626123257826409604698619988279456855157774814467026737_by_1",
                      "typeString": "int_const 7128...(69 digits omitted)...6737"
                    },
                    "value": "0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31"
                  }
                ],
                "id": 3548,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "6194:74:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_71286929443441903619420626123257826409604698619988279456855157774814467026737_by_1",
                  "typeString": "int_const 7128...(69 digits omitted)...6737"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3552,
              "mutability": "constant",
              "name": "OrderFulfilled_baseOffset",
              "nameLocation": "6503:25:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "6486:50:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3550,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6486:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313830",
                "id": 3551,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6531:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_384_by_1",
                  "typeString": "int_const 384"
                },
                "value": "0x180"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3555,
              "mutability": "constant",
              "name": "OrderFulfilled_consideration_length_baseOffset",
              "nameLocation": "6555:46:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "6538:71:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3553,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6538:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078326130",
                "id": 3554,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6604:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_672_by_1",
                  "typeString": "int_const 672"
                },
                "value": "0x2a0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3558,
              "mutability": "constant",
              "name": "OrderFulfilled_offer_length_baseOffset",
              "nameLocation": "6628:38:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "6611:63:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3556,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6611:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078323030",
                "id": 3557,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6669:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_512_by_1",
                  "typeString": "int_const 512"
                },
                "value": "0x200"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3561,
              "mutability": "constant",
              "name": "OrderFulfilled_fulfiller_offset",
              "nameLocation": "6754:31:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "6737:55:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3559,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6737:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 3560,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6788:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3564,
              "mutability": "constant",
              "name": "OrderFulfilled_offer_head_offset",
              "nameLocation": "6811:32:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "6794:56:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3562,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6794:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783430",
                "id": 3563,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6846:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_64_by_1",
                  "typeString": "int_const 64"
                },
                "value": "0x40"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3567,
              "mutability": "constant",
              "name": "OrderFulfilled_offer_body_offset",
              "nameLocation": "6869:32:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "6852:56:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3565,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6852:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783830",
                "id": 3566,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6904:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_128_by_1",
                  "typeString": "int_const 128"
                },
                "value": "0x80"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3570,
              "mutability": "constant",
              "name": "OrderFulfilled_consideration_head_offset",
              "nameLocation": "6927:40:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "6910:64:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3568,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6910:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783630",
                "id": 3569,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6970:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_96_by_1",
                  "typeString": "int_const 96"
                },
                "value": "0x60"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3573,
              "mutability": "constant",
              "name": "OrderFulfilled_consideration_body_offset",
              "nameLocation": "6993:40:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "6976:65:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3571,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6976:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313230",
                "id": 3572,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7036:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_288_by_1",
                  "typeString": "int_const 288"
                },
                "value": "0x120"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3576,
              "mutability": "constant",
              "name": "BasicOrder_parameters_cdPtr",
              "nameLocation": "7085:27:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "7068:51:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3574,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7068:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783034",
                "id": 3575,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7115:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_4_by_1",
                  "typeString": "int_const 4"
                },
                "value": "0x04"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3579,
              "mutability": "constant",
              "name": "BasicOrder_considerationToken_cdPtr",
              "nameLocation": "7138:35:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "7121:59:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3577,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7121:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783234",
                "id": 3578,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7176:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_36_by_1",
                  "typeString": "int_const 36"
                },
                "value": "0x24"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3582,
              "mutability": "constant",
              "name": "BasicOrder_considerationAmount_cdPtr",
              "nameLocation": "7268:36:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "7251:60:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3580,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7251:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783634",
                "id": 3581,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7307:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_100_by_1",
                  "typeString": "int_const 100"
                },
                "value": "0x64"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3585,
              "mutability": "constant",
              "name": "BasicOrder_offerer_cdPtr",
              "nameLocation": "7330:24:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "7313:48:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3583,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7313:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783834",
                "id": 3584,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7357:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_132_by_1",
                  "typeString": "int_const 132"
                },
                "value": "0x84"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3588,
              "mutability": "constant",
              "name": "BasicOrder_zone_cdPtr",
              "nameLocation": "7380:21:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "7363:45:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3586,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7363:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786134",
                "id": 3587,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7404:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_164_by_1",
                  "typeString": "int_const 164"
                },
                "value": "0xa4"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3591,
              "mutability": "constant",
              "name": "BasicOrder_offerToken_cdPtr",
              "nameLocation": "7427:27:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "7410:51:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3589,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7410:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786334",
                "id": 3590,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7457:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_196_by_1",
                  "typeString": "int_const 196"
                },
                "value": "0xc4"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3594,
              "mutability": "constant",
              "name": "BasicOrder_offerAmount_cdPtr",
              "nameLocation": "7541:28:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "7524:53:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3592,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7524:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313034",
                "id": 3593,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7572:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_260_by_1",
                  "typeString": "int_const 260"
                },
                "value": "0x104"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3597,
              "mutability": "constant",
              "name": "BasicOrder_basicOrderType_cdPtr",
              "nameLocation": "7596:31:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "7579:56:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3595,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7579:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313234",
                "id": 3596,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7630:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_292_by_1",
                  "typeString": "int_const 292"
                },
                "value": "0x124"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3600,
              "mutability": "constant",
              "name": "BasicOrder_startTime_cdPtr",
              "nameLocation": "7654:26:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "7637:51:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3598,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7637:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313434",
                "id": 3599,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7683:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_324_by_1",
                  "typeString": "int_const 324"
                },
                "value": "0x144"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3603,
              "mutability": "constant",
              "name": "BasicOrder_offererConduit_cdPtr",
              "nameLocation": "7867:31:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "7850:56:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3601,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7850:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078316334",
                "id": 3602,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7901:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_452_by_1",
                  "typeString": "int_const 452"
                },
                "value": "0x1c4"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3606,
              "mutability": "constant",
              "name": "BasicOrder_fulfillerConduit_cdPtr",
              "nameLocation": "7925:33:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "7908:58:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3604,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7908:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078316534",
                "id": 3605,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7961:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_484_by_1",
                  "typeString": "int_const 484"
                },
                "value": "0x1e4"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3609,
              "mutability": "constant",
              "name": "BasicOrder_totalOriginalAdditionalRecipients_cdPtr",
              "nameLocation": "7985:50:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "7968:75:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3607,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7968:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078323034",
                "id": 3608,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "8038:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_516_by_1",
                  "typeString": "int_const 516"
                },
                "value": "0x204"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3612,
              "mutability": "constant",
              "name": "BasicOrder_additionalRecipients_head_cdPtr",
              "nameLocation": "8062:42:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "8045:67:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3610,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "8045:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078323234",
                "id": 3611,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "8107:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_548_by_1",
                  "typeString": "int_const 548"
                },
                "value": "0x224"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3615,
              "mutability": "constant",
              "name": "BasicOrder_signature_cdPtr",
              "nameLocation": "8131:26:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "8114:51:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3613,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "8114:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078323434",
                "id": 3614,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "8160:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_580_by_1",
                  "typeString": "int_const 580"
                },
                "value": "0x244"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3618,
              "mutability": "constant",
              "name": "BasicOrder_additionalRecipients_length_cdPtr",
              "nameLocation": "8184:44:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "8167:69:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3616,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "8167:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078323634",
                "id": 3617,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "8231:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_612_by_1",
                  "typeString": "int_const 612"
                },
                "value": "0x264"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3621,
              "mutability": "constant",
              "name": "BasicOrder_additionalRecipients_data_cdPtr",
              "nameLocation": "8255:42:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "8238:67:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3619,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "8238:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078323834",
                "id": 3620,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "8300:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_644_by_1",
                  "typeString": "int_const 644"
                },
                "value": "0x284"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3624,
              "mutability": "constant",
              "name": "BasicOrder_parameters_ptr",
              "nameLocation": "8325:25:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "8308:49:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3622,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "8308:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 3623,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "8353:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3627,
              "mutability": "constant",
              "name": "BasicOrder_considerationItem_typeHash_ptr",
              "nameLocation": "8681:41:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "8664:65:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3625,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "8664:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783830",
                "id": 3626,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "8725:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_128_by_1",
                  "typeString": "int_const 128"
                },
                "value": "0x80"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3630,
              "mutability": "constant",
              "name": "BasicOrder_considerationItem_itemType_ptr",
              "nameLocation": "8761:41:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "8744:65:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3628,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "8744:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786130",
                "id": 3629,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "8805:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_160_by_1",
                  "typeString": "int_const 160"
                },
                "value": "0xa0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3633,
              "mutability": "constant",
              "name": "BasicOrder_considerationItem_token_ptr",
              "nameLocation": "8828:38:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "8811:62:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3631,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "8811:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786330",
                "id": 3632,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "8869:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_192_by_1",
                  "typeString": "int_const 192"
                },
                "value": "0xc0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3636,
              "mutability": "constant",
              "name": "BasicOrder_considerationItem_identifier_ptr",
              "nameLocation": "8892:43:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "8875:67:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3634,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "8875:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786530",
                "id": 3635,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "8938:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_224_by_1",
                  "typeString": "int_const 224"
                },
                "value": "0xe0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3639,
              "mutability": "constant",
              "name": "BasicOrder_considerationItem_startAmount_ptr",
              "nameLocation": "8961:44:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "8944:69:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3637,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "8944:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313030",
                "id": 3638,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "9008:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_256_by_1",
                  "typeString": "int_const 256"
                },
                "value": "0x100"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3642,
              "mutability": "constant",
              "name": "BasicOrder_considerationItem_endAmount_ptr",
              "nameLocation": "9032:42:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "9015:67:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3640,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "9015:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313230",
                "id": 3641,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "9077:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_288_by_1",
                  "typeString": "int_const 288"
                },
                "value": "0x120"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3645,
              "mutability": "constant",
              "name": "BasicOrder_offerItem_typeHash_ptr",
              "nameLocation": "9472:33:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "9455:77:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3643,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "9455:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "id": 3644,
                "name": "DefaultFreeMemoryPointer",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 3506,
                "src": "9508:24:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3648,
              "mutability": "constant",
              "name": "BasicOrder_offerItem_itemType_ptr",
              "nameLocation": "9551:33:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "9534:57:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3646,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "9534:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786130",
                "id": 3647,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "9587:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_160_by_1",
                  "typeString": "int_const 160"
                },
                "value": "0xa0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3651,
              "mutability": "constant",
              "name": "BasicOrder_offerItem_token_ptr",
              "nameLocation": "9610:30:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "9593:54:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3649,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "9593:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786330",
                "id": 3650,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "9643:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_192_by_1",
                  "typeString": "int_const 192"
                },
                "value": "0xc0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3654,
              "mutability": "constant",
              "name": "BasicOrder_offerItem_endAmount_ptr",
              "nameLocation": "9796:34:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "9779:59:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3652,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "9779:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313230",
                "id": 3653,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "9833:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_288_by_1",
                  "typeString": "int_const 288"
                },
                "value": "0x120"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3657,
              "mutability": "constant",
              "name": "BasicOrder_order_typeHash_ptr",
              "nameLocation": "10399:29:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "10382:53:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3655,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "10382:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783830",
                "id": 3656,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "10431:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_128_by_1",
                  "typeString": "int_const 128"
                },
                "value": "0x80"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3660,
              "mutability": "constant",
              "name": "BasicOrder_order_offerer_ptr",
              "nameLocation": "10454:28:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "10437:52:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3658,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "10437:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786130",
                "id": 3659,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "10485:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_160_by_1",
                  "typeString": "int_const 160"
                },
                "value": "0xa0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3663,
              "mutability": "constant",
              "name": "BasicOrder_order_offerHashes_ptr",
              "nameLocation": "10562:32:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "10545:56:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3661,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "10545:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786530",
                "id": 3662,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "10597:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_224_by_1",
                  "typeString": "int_const 224"
                },
                "value": "0xe0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3666,
              "mutability": "constant",
              "name": "BasicOrder_order_considerationHashes_ptr",
              "nameLocation": "10620:40:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "10603:65:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3664,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "10603:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313030",
                "id": 3665,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "10663:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_256_by_1",
                  "typeString": "int_const 256"
                },
                "value": "0x100"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3669,
              "mutability": "constant",
              "name": "BasicOrder_order_orderType_ptr",
              "nameLocation": "10687:30:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "10670:55:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3667,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "10670:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313230",
                "id": 3668,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "10720:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_288_by_1",
                  "typeString": "int_const 288"
                },
                "value": "0x120"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3672,
              "mutability": "constant",
              "name": "BasicOrder_order_startTime_ptr",
              "nameLocation": "10744:30:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "10727:55:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3670,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "10727:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313430",
                "id": 3671,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "10777:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_320_by_1",
                  "typeString": "int_const 320"
                },
                "value": "0x140"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3675,
              "mutability": "constant",
              "name": "BasicOrder_order_nonce_ptr",
              "nameLocation": "11034:26:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "11017:51:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3673,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "11017:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078316530",
                "id": 3674,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "11063:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_480_by_1",
                  "typeString": "int_const 480"
                },
                "value": "0x1e0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3678,
              "mutability": "constant",
              "name": "BasicOrder_additionalRecipients_head_ptr",
              "nameLocation": "11087:40:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "11070:65:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3676,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "11070:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078323430",
                "id": 3677,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "11130:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_576_by_1",
                  "typeString": "int_const 576"
                },
                "value": "0x240"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3681,
              "mutability": "constant",
              "name": "BasicOrder_signature_ptr",
              "nameLocation": "11154:24:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "11137:49:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3679,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "11137:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078323630",
                "id": 3680,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "11181:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_608_by_1",
                  "typeString": "int_const 608"
                },
                "value": "0x260"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3685,
              "mutability": "constant",
              "name": "EIP2098_allButHighestBitMask",
              "nameLocation": "11227:28:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "11210:122:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              },
              "typeName": {
                "id": 3682,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "11210:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666",
                    "id": 3683,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "11264:66:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1",
                      "typeString": "int_const 5789...(69 digits omitted)...9967"
                    },
                    "value": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
                  }
                ],
                "id": 3684,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "11258:74:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1",
                  "typeString": "int_const 5789...(69 digits omitted)...9967"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3689,
              "mutability": "constant",
              "name": "NoContract_error_signature",
              "nameLocation": "11402:26:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "11385:120:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3686,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "11385:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307835663135643637323030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 3687,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "11437:66:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_43008304450922786202210492095377626797441506865803949691986084171659119427584_by_1",
                      "typeString": "int_const 4300...(69 digits omitted)...7584"
                    },
                    "value": "0x5f15d67200000000000000000000000000000000000000000000000000000000"
                  }
                ],
                "id": 3688,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "11431:74:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_43008304450922786202210492095377626797441506865803949691986084171659119427584_by_1",
                  "typeString": "int_const 4300...(69 digits omitted)...7584"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3692,
              "mutability": "constant",
              "name": "NoContract_error_sig_ptr",
              "nameLocation": "11524:24:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "11507:47:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3690,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "11507:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "307830",
                "id": 3691,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "11551:3:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_0_by_1",
                  "typeString": "int_const 0"
                },
                "value": "0x0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3695,
              "mutability": "constant",
              "name": "NoContract_error_token_ptr",
              "nameLocation": "11573:26:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "11556:49:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3693,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "11556:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "307834",
                "id": 3694,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "11602:3:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_4_by_1",
                  "typeString": "int_const 4"
                },
                "value": "0x4"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3698,
              "mutability": "constant",
              "name": "NoContract_error_length",
              "nameLocation": "11624:23:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "11607:47:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3696,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "11607:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783234",
                "id": 3697,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "11650:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_36_by_1",
                  "typeString": "int_const 36"
                },
                "value": "0x24"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3702,
              "mutability": "constant",
              "name": "EIP_712_PREFIX",
              "nameLocation": "11690:14:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "11673:108:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3699,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "11673:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307831393031303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 3700,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "11713:66:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_11309588061646438093662687302255421419811724423900836950936401294474059186176_by_1",
                      "typeString": "int_const 1130...(69 digits omitted)...6176"
                    },
                    "value": "0x1901000000000000000000000000000000000000000000000000000000000000"
                  }
                ],
                "id": 3701,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "11707:74:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_11309588061646438093662687302255421419811724423900836950936401294474059186176_by_1",
                  "typeString": "int_const 1130...(69 digits omitted)...6176"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3705,
              "mutability": "constant",
              "name": "ExtraGasBuffer",
              "nameLocation": "11801:14:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "11784:38:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3703,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "11784:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 3704,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "11818:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3708,
              "mutability": "constant",
              "name": "CostPerWord",
              "nameLocation": "11841:11:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "11824:32:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3706,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "11824:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "33",
                "id": 3707,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "11855:1:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_3_by_1",
                  "typeString": "int_const 3"
                },
                "value": "3"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3711,
              "mutability": "constant",
              "name": "MemoryExpansionCoefficient",
              "nameLocation": "11875:26:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "11858:51:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3709,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "11858:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078323030",
                "id": 3710,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "11904:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_512_by_1",
                  "typeString": "int_const 512"
                },
                "value": "0x200"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3714,
              "mutability": "constant",
              "name": "Create2AddressDerivation_ptr",
              "nameLocation": "11929:28:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "11912:52:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3712,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "11912:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783062",
                "id": 3713,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "11960:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_11_by_1",
                  "typeString": "int_const 11"
                },
                "value": "0x0b"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3717,
              "mutability": "constant",
              "name": "Create2AddressDerivation_length",
              "nameLocation": "11983:31:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "11966:55:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3715,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "11966:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783535",
                "id": 3716,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "12017:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_85_by_1",
                  "typeString": "int_const 85"
                },
                "value": "0x55"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3721,
              "mutability": "constant",
              "name": "MaskOverByteTwelve",
              "nameLocation": "12041:18:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "12024:112:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3718,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "12024:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307830303030303030303030303030303030303030303030666630303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 3719,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12068:66:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_372682917519380244141939632342652170012262798458880_by_1",
                      "typeString": "int_const 3726...(43 digits omitted)...8880"
                    },
                    "value": "0x0000000000000000000000ff0000000000000000000000000000000000000000"
                  }
                ],
                "id": 3720,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "12062:74:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_372682917519380244141939632342652170012262798458880_by_1",
                  "typeString": "int_const 3726...(43 digits omitted)...8880"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3725,
              "mutability": "constant",
              "name": "MaskOverLastTwentyBytes",
              "nameLocation": "12156:23:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "12139:117:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3722,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "12139:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307830303030303030303030303030303030303030303030303066666666666666666666666666666666666666666666666666666666666666666666666666666666",
                    "id": 3723,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12188:66:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542975_by_1",
                      "typeString": "int_const 1461...(41 digits omitted)...2975"
                    },
                    "value": "0x000000000000000000000000ffffffffffffffffffffffffffffffffffffffff"
                  }
                ],
                "id": 3724,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "12182:74:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1461501637330902918203684832716283019655932542975_by_1",
                  "typeString": "int_const 1461...(41 digits omitted)...2975"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3729,
              "mutability": "constant",
              "name": "MaskOverFirstFourBytes",
              "nameLocation": "12276:22:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "12259:116:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3726,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "12259:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307866666666666666663030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 3727,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12307:66:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_115792089210356248756420345214020892766250353992003419616917011526809519390720_by_1",
                      "typeString": "int_const 1157...(70 digits omitted)...0720"
                    },
                    "value": "0xffffffff00000000000000000000000000000000000000000000000000000000"
                  }
                ],
                "id": 3728,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "12301:74:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_115792089210356248756420345214020892766250353992003419616917011526809519390720_by_1",
                  "typeString": "int_const 1157...(70 digits omitted)...0720"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3733,
              "mutability": "constant",
              "name": "Conduit_execute_signature",
              "nameLocation": "12395:25:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "12378:119:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3730,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "12378:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307834636533346161323030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 3731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "12429:66:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_34777365872773961339311961615113117744096016053484145012885398825620056571904_by_1",
                      "typeString": "int_const 3477...(69 digits omitted)...1904"
                    },
                    "value": "0x4ce34aa200000000000000000000000000000000000000000000000000000000"
                  }
                ],
                "id": 3732,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "12423:74:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_34777365872773961339311961615113117744096016053484145012885398825620056571904_by_1",
                  "typeString": "int_const 3477...(69 digits omitted)...1904"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3736,
              "mutability": "constant",
              "name": "Conduit_execute_ConduitTransfer_ptr",
              "nameLocation": "12517:35:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "12500:59:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3734,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "12500:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 3735,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "12555:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3739,
              "mutability": "constant",
              "name": "Conduit_execute_ConduitTransfer_length",
              "nameLocation": "12578:38:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "12561:62:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3737,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "12561:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783031",
                "id": 3738,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "12619:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_1_by_1",
                  "typeString": "int_const 1"
                },
                "value": "0x01"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3742,
              "mutability": "constant",
              "name": "Conduit_execute_ConduitTransfer_offset_ptr",
              "nameLocation": "12643:42:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "12626:66:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3740,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "12626:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783034",
                "id": 3741,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "12688:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_4_by_1",
                  "typeString": "int_const 4"
                },
                "value": "0x04"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3745,
              "mutability": "constant",
              "name": "Conduit_execute_ConduitTransfer_length_ptr",
              "nameLocation": "12711:42:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "12694:66:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3743,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "12694:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783234",
                "id": 3744,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "12756:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_36_by_1",
                  "typeString": "int_const 36"
                },
                "value": "0x24"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3748,
              "mutability": "constant",
              "name": "Conduit_execute_transferItemType_ptr",
              "nameLocation": "12779:36:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "12762:60:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3746,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "12762:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783434",
                "id": 3747,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "12818:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_68_by_1",
                  "typeString": "int_const 68"
                },
                "value": "0x44"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3751,
              "mutability": "constant",
              "name": "Conduit_execute_transferToken_ptr",
              "nameLocation": "12841:33:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "12824:57:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3749,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "12824:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783634",
                "id": 3750,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "12877:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_100_by_1",
                  "typeString": "int_const 100"
                },
                "value": "0x64"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3754,
              "mutability": "constant",
              "name": "Conduit_execute_transferFrom_ptr",
              "nameLocation": "12900:32:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "12883:56:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3752,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "12883:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783834",
                "id": 3753,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "12935:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_132_by_1",
                  "typeString": "int_const 132"
                },
                "value": "0x84"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3757,
              "mutability": "constant",
              "name": "Conduit_execute_transferTo_ptr",
              "nameLocation": "12958:30:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "12941:54:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3755,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "12941:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786134",
                "id": 3756,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "12991:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_164_by_1",
                  "typeString": "int_const 164"
                },
                "value": "0xa4"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3760,
              "mutability": "constant",
              "name": "Conduit_execute_transferIdentifier_ptr",
              "nameLocation": "13014:38:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "12997:62:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3758,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "12997:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786334",
                "id": 3759,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13055:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_196_by_1",
                  "typeString": "int_const 196"
                },
                "value": "0xc4"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3763,
              "mutability": "constant",
              "name": "Conduit_execute_transferAmount_ptr",
              "nameLocation": "13078:34:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "13061:58:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3761,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "13061:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786534",
                "id": 3762,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13115:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_228_by_1",
                  "typeString": "int_const 228"
                },
                "value": "0xe4"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3766,
              "mutability": "constant",
              "name": "OneConduitExecute_size",
              "nameLocation": "13139:22:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "13122:47:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3764,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "13122:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313034",
                "id": 3765,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13164:5:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_260_by_1",
                  "typeString": "int_const 260"
                },
                "value": "0x104"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3769,
              "mutability": "constant",
              "name": "AccumulatorDisarmed",
              "nameLocation": "13262:19:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "13245:43:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3767,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "13245:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 3768,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13284:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3772,
              "mutability": "constant",
              "name": "AccumulatorArmed",
              "nameLocation": "13307:16:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "13290:40:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3770,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "13290:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783430",
                "id": 3771,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13326:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_64_by_1",
                  "typeString": "int_const 64"
                },
                "value": "0x40"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3775,
              "mutability": "constant",
              "name": "Accumulator_conduitKey_ptr",
              "nameLocation": "13349:26:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "13332:50:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3773,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "13332:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 3774,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13378:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3778,
              "mutability": "constant",
              "name": "Accumulator_selector_ptr",
              "nameLocation": "13401:24:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "13384:48:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3776,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "13384:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783430",
                "id": 3777,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13428:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_64_by_1",
                  "typeString": "int_const 64"
                },
                "value": "0x40"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3781,
              "mutability": "constant",
              "name": "Accumulator_array_offset_ptr",
              "nameLocation": "13451:28:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "13434:52:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3779,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "13434:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783434",
                "id": 3780,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13482:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_68_by_1",
                  "typeString": "int_const 68"
                },
                "value": "0x44"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3784,
              "mutability": "constant",
              "name": "Accumulator_array_length_ptr",
              "nameLocation": "13505:28:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "13488:52:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3782,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "13488:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783634",
                "id": 3783,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13536:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_100_by_1",
                  "typeString": "int_const 100"
                },
                "value": "0x64"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3787,
              "mutability": "constant",
              "name": "Accumulator_itemSizeOffsetDifference",
              "nameLocation": "13560:36:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "13543:60:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3785,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "13543:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783363",
                "id": 3786,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13599:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_60_by_1",
                  "typeString": "int_const 60"
                },
                "value": "0x3c"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3790,
              "mutability": "constant",
              "name": "Accumulator_array_offset",
              "nameLocation": "13623:24:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "13606:48:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3788,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "13606:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 3789,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13650:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3793,
              "mutability": "constant",
              "name": "Conduit_transferItem_size",
              "nameLocation": "13673:25:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "13656:49:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3791,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "13656:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786330",
                "id": 3792,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13701:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_192_by_1",
                  "typeString": "int_const 192"
                },
                "value": "0xc0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3796,
              "mutability": "constant",
              "name": "Conduit_transferItem_token_ptr",
              "nameLocation": "13724:30:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "13707:54:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3794,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "13707:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 3795,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13757:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3799,
              "mutability": "constant",
              "name": "Conduit_transferItem_from_ptr",
              "nameLocation": "13780:29:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "13763:53:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3797,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "13763:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783430",
                "id": 3798,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13812:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_64_by_1",
                  "typeString": "int_const 64"
                },
                "value": "0x40"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3802,
              "mutability": "constant",
              "name": "Conduit_transferItem_to_ptr",
              "nameLocation": "13835:27:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "13818:51:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3800,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "13818:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783630",
                "id": 3801,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13865:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_96_by_1",
                  "typeString": "int_const 96"
                },
                "value": "0x60"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3805,
              "mutability": "constant",
              "name": "Conduit_transferItem_identifier_ptr",
              "nameLocation": "13888:35:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "13871:59:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3803,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "13871:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783830",
                "id": 3804,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13926:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_128_by_1",
                  "typeString": "int_const 128"
                },
                "value": "0x80"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 3808,
              "mutability": "constant",
              "name": "Conduit_transferItem_amount_ptr",
              "nameLocation": "13949:31:24",
              "nodeType": "VariableDeclaration",
              "scope": 3809,
              "src": "13932:55:24",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 3806,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "13932:7:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786130",
                "id": 3807,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "13983:4:24",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_160_by_1",
                  "typeString": "int_const 160"
                },
                "value": "0xa0"
              },
              "visibility": "internal"
            }
          ],
          "src": "32:13957:24"
        },
        "id": 24
      },
      "seaport/contracts/lib/ConsiderationEnums.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/ConsiderationEnums.sol",
          "exportedSymbols": {
            "BasicOrderRouteType": [
              3847
            ],
            "BasicOrderType": [
              3840
            ],
            "ItemType": [
              3854
            ],
            "OrderType": [
              3815
            ],
            "Side": [
              3857
            ]
          },
          "id": 3858,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3810,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:25"
            },
            {
              "canonicalName": "OrderType",
              "id": 3815,
              "members": [
                {
                  "id": 3811,
                  "name": "FULL_OPEN",
                  "nameLocation": "145:9:25",
                  "nodeType": "EnumValue",
                  "src": "145:9:25"
                },
                {
                  "id": 3812,
                  "name": "PARTIAL_OPEN",
                  "nameLocation": "215:12:25",
                  "nodeType": "EnumValue",
                  "src": "215:12:25"
                },
                {
                  "id": 3813,
                  "name": "FULL_RESTRICTED",
                  "nameLocation": "295:15:25",
                  "nodeType": "EnumValue",
                  "src": "295:15:25"
                },
                {
                  "id": 3814,
                  "name": "PARTIAL_RESTRICTED",
                  "nameLocation": "385:18:25",
                  "nodeType": "EnumValue",
                  "src": "385:18:25"
                }
              ],
              "name": "OrderType",
              "nameLocation": "82:9:25",
              "nodeType": "EnumDefinition",
              "src": "77:328:25"
            },
            {
              "canonicalName": "BasicOrderType",
              "id": 3840,
              "members": [
                {
                  "id": 3816,
                  "name": "ETH_TO_ERC721_FULL_OPEN",
                  "nameLocation": "499:23:25",
                  "nodeType": "EnumValue",
                  "src": "499:23:25"
                },
                {
                  "id": 3817,
                  "name": "ETH_TO_ERC721_PARTIAL_OPEN",
                  "nameLocation": "583:26:25",
                  "nodeType": "EnumValue",
                  "src": "583:26:25"
                },
                {
                  "id": 3818,
                  "name": "ETH_TO_ERC721_FULL_RESTRICTED",
                  "nameLocation": "677:29:25",
                  "nodeType": "EnumValue",
                  "src": "677:29:25"
                },
                {
                  "id": 3819,
                  "name": "ETH_TO_ERC721_PARTIAL_RESTRICTED",
                  "nameLocation": "781:32:25",
                  "nodeType": "EnumValue",
                  "src": "781:32:25"
                },
                {
                  "id": 3820,
                  "name": "ETH_TO_ERC1155_FULL_OPEN",
                  "nameLocation": "867:24:25",
                  "nodeType": "EnumValue",
                  "src": "867:24:25"
                },
                {
                  "id": 3821,
                  "name": "ETH_TO_ERC1155_PARTIAL_OPEN",
                  "nameLocation": "952:27:25",
                  "nodeType": "EnumValue",
                  "src": "952:27:25"
                },
                {
                  "id": 3822,
                  "name": "ETH_TO_ERC1155_FULL_RESTRICTED",
                  "nameLocation": "1047:30:25",
                  "nodeType": "EnumValue",
                  "src": "1047:30:25"
                },
                {
                  "id": 3823,
                  "name": "ETH_TO_ERC1155_PARTIAL_RESTRICTED",
                  "nameLocation": "1152:33:25",
                  "nodeType": "EnumValue",
                  "src": "1152:33:25"
                },
                {
                  "id": 3824,
                  "name": "ERC20_TO_ERC721_FULL_OPEN",
                  "nameLocation": "1239:25:25",
                  "nodeType": "EnumValue",
                  "src": "1239:25:25"
                },
                {
                  "id": 3825,
                  "name": "ERC20_TO_ERC721_PARTIAL_OPEN",
                  "nameLocation": "1325:28:25",
                  "nodeType": "EnumValue",
                  "src": "1325:28:25"
                },
                {
                  "id": 3826,
                  "name": "ERC20_TO_ERC721_FULL_RESTRICTED",
                  "nameLocation": "1422:31:25",
                  "nodeType": "EnumValue",
                  "src": "1422:31:25"
                },
                {
                  "id": 3827,
                  "name": "ERC20_TO_ERC721_PARTIAL_RESTRICTED",
                  "nameLocation": "1529:34:25",
                  "nodeType": "EnumValue",
                  "src": "1529:34:25"
                },
                {
                  "id": 3828,
                  "name": "ERC20_TO_ERC1155_FULL_OPEN",
                  "nameLocation": "1618:26:25",
                  "nodeType": "EnumValue",
                  "src": "1618:26:25"
                },
                {
                  "id": 3829,
                  "name": "ERC20_TO_ERC1155_PARTIAL_OPEN",
                  "nameLocation": "1706:29:25",
                  "nodeType": "EnumValue",
                  "src": "1706:29:25"
                },
                {
                  "id": 3830,
                  "name": "ERC20_TO_ERC1155_FULL_RESTRICTED",
                  "nameLocation": "1804:32:25",
                  "nodeType": "EnumValue",
                  "src": "1804:32:25"
                },
                {
                  "id": 3831,
                  "name": "ERC20_TO_ERC1155_PARTIAL_RESTRICTED",
                  "nameLocation": "1912:35:25",
                  "nodeType": "EnumValue",
                  "src": "1912:35:25"
                },
                {
                  "id": 3832,
                  "name": "ERC721_TO_ERC20_FULL_OPEN",
                  "nameLocation": "2002:25:25",
                  "nodeType": "EnumValue",
                  "src": "2002:25:25"
                },
                {
                  "id": 3833,
                  "name": "ERC721_TO_ERC20_PARTIAL_OPEN",
                  "nameLocation": "2089:28:25",
                  "nodeType": "EnumValue",
                  "src": "2089:28:25"
                },
                {
                  "id": 3834,
                  "name": "ERC721_TO_ERC20_FULL_RESTRICTED",
                  "nameLocation": "2186:31:25",
                  "nodeType": "EnumValue",
                  "src": "2186:31:25"
                },
                {
                  "id": 3835,
                  "name": "ERC721_TO_ERC20_PARTIAL_RESTRICTED",
                  "nameLocation": "2293:34:25",
                  "nodeType": "EnumValue",
                  "src": "2293:34:25"
                },
                {
                  "id": 3836,
                  "name": "ERC1155_TO_ERC20_FULL_OPEN",
                  "nameLocation": "2382:26:25",
                  "nodeType": "EnumValue",
                  "src": "2382:26:25"
                },
                {
                  "id": 3837,
                  "name": "ERC1155_TO_ERC20_PARTIAL_OPEN",
                  "nameLocation": "2470:29:25",
                  "nodeType": "EnumValue",
                  "src": "2470:29:25"
                },
                {
                  "id": 3838,
                  "name": "ERC1155_TO_ERC20_FULL_RESTRICTED",
                  "nameLocation": "2568:32:25",
                  "nodeType": "EnumValue",
                  "src": "2568:32:25"
                },
                {
                  "id": 3839,
                  "name": "ERC1155_TO_ERC20_PARTIAL_RESTRICTED",
                  "nameLocation": "2676:35:25",
                  "nodeType": "EnumValue",
                  "src": "2676:35:25"
                }
              ],
              "name": "BasicOrderType",
              "nameLocation": "431:14:25",
              "nodeType": "EnumDefinition",
              "src": "426:2287:25"
            },
            {
              "canonicalName": "BasicOrderRouteType",
              "id": 3847,
              "members": [
                {
                  "id": 3841,
                  "name": "ETH_TO_ERC721",
                  "nameLocation": "2845:13:25",
                  "nodeType": "EnumValue",
                  "src": "2845:13:25"
                },
                {
                  "id": 3842,
                  "name": "ETH_TO_ERC1155",
                  "nameLocation": "2946:14:25",
                  "nodeType": "EnumValue",
                  "src": "2946:14:25"
                },
                {
                  "id": 3843,
                  "name": "ERC20_TO_ERC721",
                  "nameLocation": "3028:15:25",
                  "nodeType": "EnumValue",
                  "src": "3028:15:25"
                },
                {
                  "id": 3844,
                  "name": "ERC20_TO_ERC1155",
                  "nameLocation": "3112:16:25",
                  "nodeType": "EnumValue",
                  "src": "3112:16:25"
                },
                {
                  "id": 3845,
                  "name": "ERC721_TO_ERC20",
                  "nameLocation": "3196:15:25",
                  "nodeType": "EnumValue",
                  "src": "3196:15:25"
                },
                {
                  "id": 3846,
                  "name": "ERC1155_TO_ERC20",
                  "nameLocation": "3280:16:25",
                  "nodeType": "EnumValue",
                  "src": "3280:16:25"
                }
              ],
              "name": "BasicOrderRouteType",
              "nameLocation": "2739:19:25",
              "nodeType": "EnumDefinition",
              "src": "2734:564:25"
            },
            {
              "canonicalName": "ItemType",
              "id": 3854,
              "members": [
                {
                  "id": 3848,
                  "name": "NATIVE",
                  "nameLocation": "3388:6:25",
                  "nodeType": "EnumValue",
                  "src": "3388:6:25"
                },
                {
                  "id": 3849,
                  "name": "ERC20",
                  "nameLocation": "3480:5:25",
                  "nodeType": "EnumValue",
                  "src": "3480:5:25"
                },
                {
                  "id": 3850,
                  "name": "ERC721",
                  "nameLocation": "3515:6:25",
                  "nodeType": "EnumValue",
                  "src": "3515:6:25"
                },
                {
                  "id": 3851,
                  "name": "ERC1155",
                  "nameLocation": "3552:7:25",
                  "nodeType": "EnumValue",
                  "src": "3552:7:25"
                },
                {
                  "id": 3852,
                  "name": "ERC721_WITH_CRITERIA",
                  "nameLocation": "3630:20:25",
                  "nodeType": "EnumValue",
                  "src": "3630:20:25"
                },
                {
                  "id": 3853,
                  "name": "ERC1155_WITH_CRITERIA",
                  "nameLocation": "3717:21:25",
                  "nodeType": "EnumValue",
                  "src": "3717:21:25"
                }
              ],
              "name": "ItemType",
              "nameLocation": "3324:8:25",
              "nodeType": "EnumDefinition",
              "src": "3319:421:25"
            },
            {
              "canonicalName": "Side",
              "id": 3857,
              "members": [
                {
                  "id": 3855,
                  "name": "OFFER",
                  "nameLocation": "3811:5:25",
                  "nodeType": "EnumValue",
                  "src": "3811:5:25"
                },
                {
                  "id": 3856,
                  "name": "CONSIDERATION",
                  "nameLocation": "3865:13:25",
                  "nodeType": "EnumValue",
                  "src": "3865:13:25"
                }
              ],
              "name": "Side",
              "nameLocation": "3766:4:25",
              "nodeType": "EnumDefinition",
              "src": "3761:119:25"
            }
          ],
          "src": "32:3849:25"
        },
        "id": 25
      },
      "seaport/contracts/lib/ConsiderationStructs.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/ConsiderationStructs.sol",
          "exportedSymbols": {
            "AdditionalRecipient": [
              3985
            ],
            "AdvancedOrder": [
              4031
            ],
            "BasicOrderParameters": [
              3980
            ],
            "BasicOrderType": [
              3840
            ],
            "ConsiderationItem": [
              3918
            ],
            "CriteriaResolver": [
              4053
            ],
            "Execution": [
              4075
            ],
            "Fulfillment": [
              4062
            ],
            "FulfillmentComponent": [
              4067
            ],
            "ItemType": [
              3854
            ],
            "OfferItem": [
              3904
            ],
            "Order": [
              4019
            ],
            "OrderComponents": [
              3892
            ],
            "OrderParameters": [
              4013
            ],
            "OrderStatus": [
              4040
            ],
            "OrderType": [
              3815
            ],
            "ReceivedItem": [
              3940
            ],
            "Side": [
              3857
            ],
            "SpentItem": [
              3928
            ]
          },
          "id": 4076,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 3859,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:26"
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationEnums.sol",
              "file": "./ConsiderationEnums.sol",
              "id": 3864,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4076,
              "sourceUnit": 3858,
              "src": "77:101:26",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 3860,
                    "name": "OrderType",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3815,
                    "src": "90:9:26",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 3861,
                    "name": "BasicOrderType",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3840,
                    "src": "105:14:26",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 3862,
                    "name": "ItemType",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3854,
                    "src": "125:8:26",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 3863,
                    "name": "Side",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3857,
                    "src": "139:4:26",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "canonicalName": "OrderComponents",
              "id": 3892,
              "members": [
                {
                  "constant": false,
                  "id": 3866,
                  "mutability": "mutable",
                  "name": "offerer",
                  "nameLocation": "825:7:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3892,
                  "src": "817:15:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3865,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "817:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3868,
                  "mutability": "mutable",
                  "name": "zone",
                  "nameLocation": "846:4:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3892,
                  "src": "838:12:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3867,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "838:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3872,
                  "mutability": "mutable",
                  "name": "offer",
                  "nameLocation": "868:5:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3892,
                  "src": "856:17:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_storage_$dyn_storage_ptr",
                    "typeString": "struct OfferItem[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3870,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 3869,
                        "name": "OfferItem",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3904,
                        "src": "856:9:26"
                      },
                      "referencedDeclaration": 3904,
                      "src": "856:9:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_OfferItem_$3904_storage_ptr",
                        "typeString": "struct OfferItem"
                      }
                    },
                    "id": 3871,
                    "nodeType": "ArrayTypeName",
                    "src": "856:11:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_storage_$dyn_storage_ptr",
                      "typeString": "struct OfferItem[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3876,
                  "mutability": "mutable",
                  "name": "consideration",
                  "nameLocation": "899:13:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3892,
                  "src": "879:33:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_storage_$dyn_storage_ptr",
                    "typeString": "struct ConsiderationItem[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3874,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 3873,
                        "name": "ConsiderationItem",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3918,
                        "src": "879:17:26"
                      },
                      "referencedDeclaration": 3918,
                      "src": "879:17:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ConsiderationItem_$3918_storage_ptr",
                        "typeString": "struct ConsiderationItem"
                      }
                    },
                    "id": 3875,
                    "nodeType": "ArrayTypeName",
                    "src": "879:19:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_storage_$dyn_storage_ptr",
                      "typeString": "struct ConsiderationItem[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3879,
                  "mutability": "mutable",
                  "name": "orderType",
                  "nameLocation": "928:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3892,
                  "src": "918:19:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_OrderType_$3815",
                    "typeString": "enum OrderType"
                  },
                  "typeName": {
                    "id": 3878,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 3877,
                      "name": "OrderType",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3815,
                      "src": "918:9:26"
                    },
                    "referencedDeclaration": 3815,
                    "src": "918:9:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_OrderType_$3815",
                      "typeString": "enum OrderType"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3881,
                  "mutability": "mutable",
                  "name": "startTime",
                  "nameLocation": "951:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3892,
                  "src": "943:17:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3880,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "943:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3883,
                  "mutability": "mutable",
                  "name": "endTime",
                  "nameLocation": "974:7:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3892,
                  "src": "966:15:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3882,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "966:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3885,
                  "mutability": "mutable",
                  "name": "zoneHash",
                  "nameLocation": "995:8:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3892,
                  "src": "987:16:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3884,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "987:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3887,
                  "mutability": "mutable",
                  "name": "salt",
                  "nameLocation": "1017:4:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3892,
                  "src": "1009:12:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3886,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1009:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3889,
                  "mutability": "mutable",
                  "name": "conduitKey",
                  "nameLocation": "1035:10:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3892,
                  "src": "1027:18:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3888,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1027:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3891,
                  "mutability": "mutable",
                  "name": "nonce",
                  "nameLocation": "1059:5:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3892,
                  "src": "1051:13:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3890,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1051:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "OrderComponents",
              "nameLocation": "795:15:26",
              "nodeType": "StructDefinition",
              "scope": 4076,
              "src": "788:279:26",
              "visibility": "public"
            },
            {
              "canonicalName": "OfferItem",
              "id": 3904,
              "members": [
                {
                  "constant": false,
                  "id": 3895,
                  "mutability": "mutable",
                  "name": "itemType",
                  "nameLocation": "1580:8:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3904,
                  "src": "1571:17:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ItemType_$3854",
                    "typeString": "enum ItemType"
                  },
                  "typeName": {
                    "id": 3894,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 3893,
                      "name": "ItemType",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3854,
                      "src": "1571:8:26"
                    },
                    "referencedDeclaration": 3854,
                    "src": "1571:8:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ItemType_$3854",
                      "typeString": "enum ItemType"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3897,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "1602:5:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3904,
                  "src": "1594:13:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3896,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1594:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3899,
                  "mutability": "mutable",
                  "name": "identifierOrCriteria",
                  "nameLocation": "1621:20:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3904,
                  "src": "1613:28:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3898,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1613:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3901,
                  "mutability": "mutable",
                  "name": "startAmount",
                  "nameLocation": "1655:11:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3904,
                  "src": "1647:19:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3900,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1647:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3903,
                  "mutability": "mutable",
                  "name": "endAmount",
                  "nameLocation": "1680:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3904,
                  "src": "1672:17:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3902,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1672:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "OfferItem",
              "nameLocation": "1555:9:26",
              "nodeType": "StructDefinition",
              "scope": 4076,
              "src": "1548:144:26",
              "visibility": "public"
            },
            {
              "canonicalName": "ConsiderationItem",
              "id": 3918,
              "members": [
                {
                  "constant": false,
                  "id": 3907,
                  "mutability": "mutable",
                  "name": "itemType",
                  "nameLocation": "1915:8:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3918,
                  "src": "1906:17:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ItemType_$3854",
                    "typeString": "enum ItemType"
                  },
                  "typeName": {
                    "id": 3906,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 3905,
                      "name": "ItemType",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3854,
                      "src": "1906:8:26"
                    },
                    "referencedDeclaration": 3854,
                    "src": "1906:8:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ItemType_$3854",
                      "typeString": "enum ItemType"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3909,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "1937:5:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3918,
                  "src": "1929:13:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3908,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1929:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3911,
                  "mutability": "mutable",
                  "name": "identifierOrCriteria",
                  "nameLocation": "1956:20:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3918,
                  "src": "1948:28:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3910,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1948:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3913,
                  "mutability": "mutable",
                  "name": "startAmount",
                  "nameLocation": "1990:11:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3918,
                  "src": "1982:19:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3912,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1982:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3915,
                  "mutability": "mutable",
                  "name": "endAmount",
                  "nameLocation": "2015:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3918,
                  "src": "2007:17:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3914,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2007:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3917,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nameLocation": "2046:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3918,
                  "src": "2030:25:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 3916,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2030:15:26",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "ConsiderationItem",
              "nameLocation": "1882:17:26",
              "nodeType": "StructDefinition",
              "scope": 4076,
              "src": "1875:183:26",
              "visibility": "public"
            },
            {
              "canonicalName": "SpentItem",
              "id": 3928,
              "members": [
                {
                  "constant": false,
                  "id": 3921,
                  "mutability": "mutable",
                  "name": "itemType",
                  "nameLocation": "2316:8:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3928,
                  "src": "2307:17:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ItemType_$3854",
                    "typeString": "enum ItemType"
                  },
                  "typeName": {
                    "id": 3920,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 3919,
                      "name": "ItemType",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3854,
                      "src": "2307:8:26"
                    },
                    "referencedDeclaration": 3854,
                    "src": "2307:8:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ItemType_$3854",
                      "typeString": "enum ItemType"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3923,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "2338:5:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3928,
                  "src": "2330:13:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3922,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2330:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3925,
                  "mutability": "mutable",
                  "name": "identifier",
                  "nameLocation": "2357:10:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3928,
                  "src": "2349:18:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3924,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2349:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3927,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "2381:6:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3928,
                  "src": "2373:14:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3926,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2373:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "SpentItem",
              "nameLocation": "2291:9:26",
              "nodeType": "StructDefinition",
              "scope": 4076,
              "src": "2284:106:26",
              "visibility": "public"
            },
            {
              "canonicalName": "ReceivedItem",
              "id": 3940,
              "members": [
                {
                  "constant": false,
                  "id": 3931,
                  "mutability": "mutable",
                  "name": "itemType",
                  "nameLocation": "2663:8:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3940,
                  "src": "2654:17:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ItemType_$3854",
                    "typeString": "enum ItemType"
                  },
                  "typeName": {
                    "id": 3930,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 3929,
                      "name": "ItemType",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3854,
                      "src": "2654:8:26"
                    },
                    "referencedDeclaration": 3854,
                    "src": "2654:8:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ItemType_$3854",
                      "typeString": "enum ItemType"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3933,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "2685:5:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3940,
                  "src": "2677:13:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3932,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2677:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3935,
                  "mutability": "mutable",
                  "name": "identifier",
                  "nameLocation": "2704:10:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3940,
                  "src": "2696:18:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3934,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2696:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3937,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "2728:6:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3940,
                  "src": "2720:14:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3936,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2720:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3939,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nameLocation": "2756:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3940,
                  "src": "2740:25:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 3938,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2740:15:26",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "ReceivedItem",
              "nameLocation": "2635:12:26",
              "nodeType": "StructDefinition",
              "scope": 4076,
              "src": "2628:140:26",
              "visibility": "public"
            },
            {
              "canonicalName": "BasicOrderParameters",
              "id": 3980,
              "members": [
                {
                  "constant": false,
                  "id": 3942,
                  "mutability": "mutable",
                  "name": "considerationToken",
                  "nameLocation": "3305:18:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3297:26:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3941,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3297:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3944,
                  "mutability": "mutable",
                  "name": "considerationIdentifier",
                  "nameLocation": "3345:23:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3337:31:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3943,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3337:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3946,
                  "mutability": "mutable",
                  "name": "considerationAmount",
                  "nameLocation": "3390:19:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3382:27:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3945,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3382:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3948,
                  "mutability": "mutable",
                  "name": "offerer",
                  "nameLocation": "3439:7:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3423:23:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 3947,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3423:15:26",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3950,
                  "mutability": "mutable",
                  "name": "zone",
                  "nameLocation": "3468:4:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3460:12:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3949,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3460:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3952,
                  "mutability": "mutable",
                  "name": "offerToken",
                  "nameLocation": "3494:10:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3486:18:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3951,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3486:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3954,
                  "mutability": "mutable",
                  "name": "offerIdentifier",
                  "nameLocation": "3526:15:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3518:23:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3953,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3518:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3956,
                  "mutability": "mutable",
                  "name": "offerAmount",
                  "nameLocation": "3563:11:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3555:19:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3955,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3555:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3959,
                  "mutability": "mutable",
                  "name": "basicOrderType",
                  "nameLocation": "3604:14:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3589:29:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_BasicOrderType_$3840",
                    "typeString": "enum BasicOrderType"
                  },
                  "typeName": {
                    "id": 3958,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 3957,
                      "name": "BasicOrderType",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3840,
                      "src": "3589:14:26"
                    },
                    "referencedDeclaration": 3840,
                    "src": "3589:14:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_BasicOrderType_$3840",
                      "typeString": "enum BasicOrderType"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3961,
                  "mutability": "mutable",
                  "name": "startTime",
                  "nameLocation": "3641:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3633:17:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3960,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3633:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3963,
                  "mutability": "mutable",
                  "name": "endTime",
                  "nameLocation": "3673:7:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3665:15:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3962,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3665:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3965,
                  "mutability": "mutable",
                  "name": "zoneHash",
                  "nameLocation": "3703:8:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3695:16:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3964,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3695:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3967,
                  "mutability": "mutable",
                  "name": "salt",
                  "nameLocation": "3734:4:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3726:12:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3966,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3726:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3969,
                  "mutability": "mutable",
                  "name": "offererConduitKey",
                  "nameLocation": "3761:17:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3753:25:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3968,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3753:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3971,
                  "mutability": "mutable",
                  "name": "fulfillerConduitKey",
                  "nameLocation": "3801:19:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3793:27:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 3970,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3793:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3973,
                  "mutability": "mutable",
                  "name": "totalOriginalAdditionalRecipients",
                  "nameLocation": "3843:33:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3835:41:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3972,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3835:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3977,
                  "mutability": "mutable",
                  "name": "additionalRecipients",
                  "nameLocation": "3913:20:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3891:42:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_storage_$dyn_storage_ptr",
                    "typeString": "struct AdditionalRecipient[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3975,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 3974,
                        "name": "AdditionalRecipient",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3985,
                        "src": "3891:19:26"
                      },
                      "referencedDeclaration": 3985,
                      "src": "3891:19:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AdditionalRecipient_$3985_storage_ptr",
                        "typeString": "struct AdditionalRecipient"
                      }
                    },
                    "id": 3976,
                    "nodeType": "ArrayTypeName",
                    "src": "3891:21:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_AdditionalRecipient_$3985_storage_$dyn_storage_ptr",
                      "typeString": "struct AdditionalRecipient[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3979,
                  "mutability": "mutable",
                  "name": "signature",
                  "nameLocation": "3954:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3980,
                  "src": "3948:15:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 3978,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3948:5:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "BasicOrderParameters",
              "nameLocation": "3247:20:26",
              "nodeType": "StructDefinition",
              "scope": 4076,
              "src": "3240:798:26",
              "visibility": "public"
            },
            {
              "canonicalName": "AdditionalRecipient",
              "id": 3985,
              "members": [
                {
                  "constant": false,
                  "id": 3982,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "4300:6:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3985,
                  "src": "4292:14:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3981,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4292:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3984,
                  "mutability": "mutable",
                  "name": "recipient",
                  "nameLocation": "4328:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 3985,
                  "src": "4312:25:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 3983,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4312:15:26",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "AdditionalRecipient",
              "nameLocation": "4266:19:26",
              "nodeType": "StructDefinition",
              "scope": 4076,
              "src": "4259:81:26",
              "visibility": "public"
            },
            {
              "canonicalName": "OrderParameters",
              "id": 4013,
              "members": [
                {
                  "constant": false,
                  "id": 3987,
                  "mutability": "mutable",
                  "name": "offerer",
                  "nameLocation": "4696:7:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4013,
                  "src": "4688:15:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3986,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4688:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3989,
                  "mutability": "mutable",
                  "name": "zone",
                  "nameLocation": "4725:4:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4013,
                  "src": "4717:12:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3988,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4717:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3993,
                  "mutability": "mutable",
                  "name": "offer",
                  "nameLocation": "4755:5:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4013,
                  "src": "4743:17:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_storage_$dyn_storage_ptr",
                    "typeString": "struct OfferItem[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3991,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 3990,
                        "name": "OfferItem",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3904,
                        "src": "4743:9:26"
                      },
                      "referencedDeclaration": 3904,
                      "src": "4743:9:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_OfferItem_$3904_storage_ptr",
                        "typeString": "struct OfferItem"
                      }
                    },
                    "id": 3992,
                    "nodeType": "ArrayTypeName",
                    "src": "4743:11:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_storage_$dyn_storage_ptr",
                      "typeString": "struct OfferItem[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3997,
                  "mutability": "mutable",
                  "name": "consideration",
                  "nameLocation": "4794:13:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4013,
                  "src": "4774:33:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_storage_$dyn_storage_ptr",
                    "typeString": "struct ConsiderationItem[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 3995,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 3994,
                        "name": "ConsiderationItem",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3918,
                        "src": "4774:17:26"
                      },
                      "referencedDeclaration": 3918,
                      "src": "4774:17:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ConsiderationItem_$3918_storage_ptr",
                        "typeString": "struct ConsiderationItem"
                      }
                    },
                    "id": 3996,
                    "nodeType": "ArrayTypeName",
                    "src": "4774:19:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_storage_$dyn_storage_ptr",
                      "typeString": "struct ConsiderationItem[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4000,
                  "mutability": "mutable",
                  "name": "orderType",
                  "nameLocation": "4831:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4013,
                  "src": "4821:19:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_OrderType_$3815",
                    "typeString": "enum OrderType"
                  },
                  "typeName": {
                    "id": 3999,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 3998,
                      "name": "OrderType",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3815,
                      "src": "4821:9:26"
                    },
                    "referencedDeclaration": 3815,
                    "src": "4821:9:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_OrderType_$3815",
                      "typeString": "enum OrderType"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4002,
                  "mutability": "mutable",
                  "name": "startTime",
                  "nameLocation": "4862:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4013,
                  "src": "4854:17:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4001,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4854:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4004,
                  "mutability": "mutable",
                  "name": "endTime",
                  "nameLocation": "4893:7:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4013,
                  "src": "4885:15:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4003,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4885:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4006,
                  "mutability": "mutable",
                  "name": "zoneHash",
                  "nameLocation": "4922:8:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4013,
                  "src": "4914:16:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4005,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4914:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4008,
                  "mutability": "mutable",
                  "name": "salt",
                  "nameLocation": "4952:4:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4013,
                  "src": "4944:12:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4007,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4944:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4010,
                  "mutability": "mutable",
                  "name": "conduitKey",
                  "nameLocation": "4979:10:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4013,
                  "src": "4971:18:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4009,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4971:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4012,
                  "mutability": "mutable",
                  "name": "totalOriginalConsiderationItems",
                  "nameLocation": "5012:31:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4013,
                  "src": "5004:39:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4011,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5004:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "OrderParameters",
              "nameLocation": "4666:15:26",
              "nodeType": "StructDefinition",
              "scope": 4076,
              "src": "4659:450:26",
              "visibility": "public"
            },
            {
              "canonicalName": "Order",
              "id": 4019,
              "members": [
                {
                  "constant": false,
                  "id": 4016,
                  "mutability": "mutable",
                  "name": "parameters",
                  "nameLocation": "5232:10:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4019,
                  "src": "5216:26:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_OrderParameters_$4013_storage_ptr",
                    "typeString": "struct OrderParameters"
                  },
                  "typeName": {
                    "id": 4015,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4014,
                      "name": "OrderParameters",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4013,
                      "src": "5216:15:26"
                    },
                    "referencedDeclaration": 4013,
                    "src": "5216:15:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_OrderParameters_$4013_storage_ptr",
                      "typeString": "struct OrderParameters"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4018,
                  "mutability": "mutable",
                  "name": "signature",
                  "nameLocation": "5254:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4019,
                  "src": "5248:15:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4017,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5248:5:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "Order",
              "nameLocation": "5204:5:26",
              "nodeType": "StructDefinition",
              "scope": 4076,
              "src": "5197:69:26",
              "visibility": "public"
            },
            {
              "canonicalName": "AdvancedOrder",
              "id": 4031,
              "members": [
                {
                  "constant": false,
                  "id": 4022,
                  "mutability": "mutable",
                  "name": "parameters",
                  "nameLocation": "5787:10:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4031,
                  "src": "5771:26:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_OrderParameters_$4013_storage_ptr",
                    "typeString": "struct OrderParameters"
                  },
                  "typeName": {
                    "id": 4021,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4020,
                      "name": "OrderParameters",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4013,
                      "src": "5771:15:26"
                    },
                    "referencedDeclaration": 4013,
                    "src": "5771:15:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_OrderParameters_$4013_storage_ptr",
                      "typeString": "struct OrderParameters"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4024,
                  "mutability": "mutable",
                  "name": "numerator",
                  "nameLocation": "5811:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4031,
                  "src": "5803:17:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint120",
                    "typeString": "uint120"
                  },
                  "typeName": {
                    "id": 4023,
                    "name": "uint120",
                    "nodeType": "ElementaryTypeName",
                    "src": "5803:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint120",
                      "typeString": "uint120"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4026,
                  "mutability": "mutable",
                  "name": "denominator",
                  "nameLocation": "5834:11:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4031,
                  "src": "5826:19:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint120",
                    "typeString": "uint120"
                  },
                  "typeName": {
                    "id": 4025,
                    "name": "uint120",
                    "nodeType": "ElementaryTypeName",
                    "src": "5826:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint120",
                      "typeString": "uint120"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4028,
                  "mutability": "mutable",
                  "name": "signature",
                  "nameLocation": "5857:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4031,
                  "src": "5851:15:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4027,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5851:5:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4030,
                  "mutability": "mutable",
                  "name": "extraData",
                  "nameLocation": "5878:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4031,
                  "src": "5872:15:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 4029,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5872:5:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "AdvancedOrder",
              "nameLocation": "5751:13:26",
              "nodeType": "StructDefinition",
              "scope": 4076,
              "src": "5744:146:26",
              "visibility": "public"
            },
            {
              "canonicalName": "OrderStatus",
              "id": 4040,
              "members": [
                {
                  "constant": false,
                  "id": 4033,
                  "mutability": "mutable",
                  "name": "isValidated",
                  "nameLocation": "6273:11:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4040,
                  "src": "6268:16:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4032,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6268:4:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4035,
                  "mutability": "mutable",
                  "name": "isCancelled",
                  "nameLocation": "6295:11:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4040,
                  "src": "6290:16:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4034,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6290:4:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4037,
                  "mutability": "mutable",
                  "name": "numerator",
                  "nameLocation": "6320:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4040,
                  "src": "6312:17:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint120",
                    "typeString": "uint120"
                  },
                  "typeName": {
                    "id": 4036,
                    "name": "uint120",
                    "nodeType": "ElementaryTypeName",
                    "src": "6312:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint120",
                      "typeString": "uint120"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4039,
                  "mutability": "mutable",
                  "name": "denominator",
                  "nameLocation": "6343:11:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4040,
                  "src": "6335:19:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint120",
                    "typeString": "uint120"
                  },
                  "typeName": {
                    "id": 4038,
                    "name": "uint120",
                    "nodeType": "ElementaryTypeName",
                    "src": "6335:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint120",
                      "typeString": "uint120"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "OrderStatus",
              "nameLocation": "6250:11:26",
              "nodeType": "StructDefinition",
              "scope": 4076,
              "src": "6243:114:26",
              "visibility": "public"
            },
            {
              "canonicalName": "CriteriaResolver",
              "id": 4053,
              "members": [
                {
                  "constant": false,
                  "id": 4042,
                  "mutability": "mutable",
                  "name": "orderIndex",
                  "nameLocation": "6660:10:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4053,
                  "src": "6652:18:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4041,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6652:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4045,
                  "mutability": "mutable",
                  "name": "side",
                  "nameLocation": "6681:4:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4053,
                  "src": "6676:9:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Side_$3857",
                    "typeString": "enum Side"
                  },
                  "typeName": {
                    "id": 4044,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4043,
                      "name": "Side",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3857,
                      "src": "6676:4:26"
                    },
                    "referencedDeclaration": 3857,
                    "src": "6676:4:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Side_$3857",
                      "typeString": "enum Side"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4047,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "6699:5:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4053,
                  "src": "6691:13:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4046,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6691:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4049,
                  "mutability": "mutable",
                  "name": "identifier",
                  "nameLocation": "6718:10:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4053,
                  "src": "6710:18:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4048,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6710:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4052,
                  "mutability": "mutable",
                  "name": "criteriaProof",
                  "nameLocation": "6744:13:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4053,
                  "src": "6734:23:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4050,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "6734:7:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 4051,
                    "nodeType": "ArrayTypeName",
                    "src": "6734:9:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "CriteriaResolver",
              "nameLocation": "6629:16:26",
              "nodeType": "StructDefinition",
              "scope": 4076,
              "src": "6622:138:26",
              "visibility": "public"
            },
            {
              "canonicalName": "Fulfillment",
              "id": 4062,
              "members": [
                {
                  "constant": false,
                  "id": 4057,
                  "mutability": "mutable",
                  "name": "offerComponents",
                  "nameLocation": "7427:15:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4062,
                  "src": "7404:38:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                    "typeString": "struct FulfillmentComponent[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4055,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 4054,
                        "name": "FulfillmentComponent",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 4067,
                        "src": "7404:20:26"
                      },
                      "referencedDeclaration": 4067,
                      "src": "7404:20:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                        "typeString": "struct FulfillmentComponent"
                      }
                    },
                    "id": 4056,
                    "nodeType": "ArrayTypeName",
                    "src": "7404:22:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                      "typeString": "struct FulfillmentComponent[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4061,
                  "mutability": "mutable",
                  "name": "considerationComponents",
                  "nameLocation": "7471:23:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4062,
                  "src": "7448:46:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                    "typeString": "struct FulfillmentComponent[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4059,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 4058,
                        "name": "FulfillmentComponent",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 4067,
                        "src": "7448:20:26"
                      },
                      "referencedDeclaration": 4067,
                      "src": "7448:20:26",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                        "typeString": "struct FulfillmentComponent"
                      }
                    },
                    "id": 4060,
                    "nodeType": "ArrayTypeName",
                    "src": "7448:22:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                      "typeString": "struct FulfillmentComponent[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "Fulfillment",
              "nameLocation": "7386:11:26",
              "nodeType": "StructDefinition",
              "scope": 4076,
              "src": "7379:118:26",
              "visibility": "public"
            },
            {
              "canonicalName": "FulfillmentComponent",
              "id": 4067,
              "members": [
                {
                  "constant": false,
                  "id": 4064,
                  "mutability": "mutable",
                  "name": "orderIndex",
                  "nameLocation": "7704:10:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4067,
                  "src": "7696:18:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4063,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7696:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4066,
                  "mutability": "mutable",
                  "name": "itemIndex",
                  "nameLocation": "7728:9:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4067,
                  "src": "7720:17:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4065,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7720:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "FulfillmentComponent",
              "nameLocation": "7669:20:26",
              "nodeType": "StructDefinition",
              "scope": 4076,
              "src": "7662:78:26",
              "visibility": "public"
            },
            {
              "canonicalName": "Execution",
              "id": 4075,
              "members": [
                {
                  "constant": false,
                  "id": 4070,
                  "mutability": "mutable",
                  "name": "item",
                  "nameLocation": "8389:4:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4075,
                  "src": "8376:17:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ReceivedItem_$3940_storage_ptr",
                    "typeString": "struct ReceivedItem"
                  },
                  "typeName": {
                    "id": 4069,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 4068,
                      "name": "ReceivedItem",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 3940,
                      "src": "8376:12:26"
                    },
                    "referencedDeclaration": 3940,
                    "src": "8376:12:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ReceivedItem_$3940_storage_ptr",
                      "typeString": "struct ReceivedItem"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4072,
                  "mutability": "mutable",
                  "name": "offerer",
                  "nameLocation": "8407:7:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4075,
                  "src": "8399:15:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4071,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8399:7:26",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4074,
                  "mutability": "mutable",
                  "name": "conduitKey",
                  "nameLocation": "8428:10:26",
                  "nodeType": "VariableDeclaration",
                  "scope": 4075,
                  "src": "8420:18:26",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4073,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8420:7:26",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "name": "Execution",
              "nameLocation": "8360:9:26",
              "nodeType": "StructDefinition",
              "scope": 4076,
              "src": "8353:88:26",
              "visibility": "public"
            }
          ],
          "src": "32:8410:26"
        },
        "id": 26
      },
      "seaport/contracts/lib/CriteriaResolution.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/CriteriaResolution.sol",
          "exportedSymbols": {
            "AccumulatorArmed": [
              3772
            ],
            "AccumulatorDisarmed": [
              3769
            ],
            "Accumulator_array_length_ptr": [
              3784
            ],
            "Accumulator_array_offset": [
              3790
            ],
            "Accumulator_array_offset_ptr": [
              3781
            ],
            "Accumulator_conduitKey_ptr": [
              3775
            ],
            "Accumulator_itemSizeOffsetDifference": [
              3787
            ],
            "Accumulator_selector_ptr": [
              3778
            ],
            "AdditionalRecipients_size": [
              3530
            ],
            "AdvancedOrder": [
              4031
            ],
            "AdvancedOrder_numerator_offset": [
              3482
            ],
            "BasicOrder_additionalRecipients_data_cdPtr": [
              3621
            ],
            "BasicOrder_additionalRecipients_head_cdPtr": [
              3612
            ],
            "BasicOrder_additionalRecipients_head_ptr": [
              3678
            ],
            "BasicOrder_additionalRecipients_length_cdPtr": [
              3618
            ],
            "BasicOrder_basicOrderType_cdPtr": [
              3597
            ],
            "BasicOrder_considerationAmount_cdPtr": [
              3582
            ],
            "BasicOrder_considerationHashesArray_ptr": [
              3518
            ],
            "BasicOrder_considerationItem_endAmount_ptr": [
              3642
            ],
            "BasicOrder_considerationItem_identifier_ptr": [
              3636
            ],
            "BasicOrder_considerationItem_itemType_ptr": [
              3630
            ],
            "BasicOrder_considerationItem_startAmount_ptr": [
              3639
            ],
            "BasicOrder_considerationItem_token_ptr": [
              3633
            ],
            "BasicOrder_considerationItem_typeHash_ptr": [
              3627
            ],
            "BasicOrder_considerationToken_cdPtr": [
              3579
            ],
            "BasicOrder_endAmount_cdPtr": [
              3515
            ],
            "BasicOrder_fulfillerConduit_cdPtr": [
              3606
            ],
            "BasicOrder_offerAmount_cdPtr": [
              3594
            ],
            "BasicOrder_offerItem_endAmount_ptr": [
              3654
            ],
            "BasicOrder_offerItem_itemType_ptr": [
              3648
            ],
            "BasicOrder_offerItem_token_ptr": [
              3651
            ],
            "BasicOrder_offerItem_typeHash_ptr": [
              3645
            ],
            "BasicOrder_offerToken_cdPtr": [
              3591
            ],
            "BasicOrder_offererConduit_cdPtr": [
              3603
            ],
            "BasicOrder_offerer_cdPtr": [
              3585
            ],
            "BasicOrder_order_considerationHashes_ptr": [
              3666
            ],
            "BasicOrder_order_nonce_ptr": [
              3675
            ],
            "BasicOrder_order_offerHashes_ptr": [
              3663
            ],
            "BasicOrder_order_offerer_ptr": [
              3660
            ],
            "BasicOrder_order_orderType_ptr": [
              3669
            ],
            "BasicOrder_order_startTime_ptr": [
              3672
            ],
            "BasicOrder_order_typeHash_ptr": [
              3657
            ],
            "BasicOrder_parameters_cdPtr": [
              3576
            ],
            "BasicOrder_parameters_ptr": [
              3624
            ],
            "BasicOrder_signature_cdPtr": [
              3615
            ],
            "BasicOrder_signature_ptr": [
              3681
            ],
            "BasicOrder_startTime_cdPtr": [
              3600
            ],
            "BasicOrder_totalOriginalAdditionalRecipients_cdPtr": [
              3609
            ],
            "BasicOrder_zone_cdPtr": [
              3588
            ],
            "Common_amount_offset": [
              3413
            ],
            "Common_identifier_offset": [
              3410
            ],
            "Common_token_offset": [
              3407
            ],
            "Conduit_execute_ConduitTransfer_length": [
              3739
            ],
            "Conduit_execute_ConduitTransfer_length_ptr": [
              3745
            ],
            "Conduit_execute_ConduitTransfer_offset_ptr": [
              3742
            ],
            "Conduit_execute_ConduitTransfer_ptr": [
              3736
            ],
            "Conduit_execute_signature": [
              3733
            ],
            "Conduit_execute_transferAmount_ptr": [
              3763
            ],
            "Conduit_execute_transferFrom_ptr": [
              3754
            ],
            "Conduit_execute_transferIdentifier_ptr": [
              3760
            ],
            "Conduit_execute_transferItemType_ptr": [
              3748
            ],
            "Conduit_execute_transferTo_ptr": [
              3757
            ],
            "Conduit_execute_transferToken_ptr": [
              3751
            ],
            "Conduit_transferItem_amount_ptr": [
              3808
            ],
            "Conduit_transferItem_from_ptr": [
              3799
            ],
            "Conduit_transferItem_identifier_ptr": [
              3805
            ],
            "Conduit_transferItem_size": [
              3793
            ],
            "Conduit_transferItem_to_ptr": [
              3802
            ],
            "Conduit_transferItem_token_ptr": [
              3796
            ],
            "ConsiderItem_recipient_offset": [
              3431
            ],
            "ConsiderationItem": [
              3918
            ],
            "ConsiderationItem_recipient_offset": [
              3428
            ],
            "CostPerWord": [
              3708
            ],
            "Create2AddressDerivation_length": [
              3717
            ],
            "Create2AddressDerivation_ptr": [
              3714
            ],
            "CriteriaResolution": [
              4450
            ],
            "CriteriaResolutionErrors": [
              2169
            ],
            "CriteriaResolver": [
              4053
            ],
            "DefaultFreeMemoryPointer": [
              3506
            ],
            "EIP2098_allButHighestBitMask": [
              3685
            ],
            "EIP712_ConsiderationItem_size": [
              3527
            ],
            "EIP712_DigestPayload_size": [
              3539
            ],
            "EIP712_DomainSeparator_offset": [
              3533
            ],
            "EIP712_OfferItem_size": [
              3524
            ],
            "EIP712_OrderHash_offset": [
              3536
            ],
            "EIP712_Order_size": [
              3521
            ],
            "EIP_712_PREFIX": [
              3702
            ],
            "Execution_conduit_offset": [
              3437
            ],
            "Execution_offerer_offset": [
              3434
            ],
            "ExtraGasBuffer": [
              3705
            ],
            "FiveWords": [
              3497
            ],
            "FourWords": [
              3494
            ],
            "FreeMemoryPointerSlot": [
              3500
            ],
            "Fulfillment_itemIndex_offset": [
              3479
            ],
            "InvalidFulfillmentComponentData_error_len": [
              3444
            ],
            "InvalidFulfillmentComponentData_error_signature": [
              3441
            ],
            "ItemType": [
              3854
            ],
            "MaskOverByteTwelve": [
              3721
            ],
            "MaskOverFirstFourBytes": [
              3729
            ],
            "MaskOverLastTwentyBytes": [
              3725
            ],
            "MemoryExpansionCoefficient": [
              3711
            ],
            "MissingItemAmount_error_len": [
              3464
            ],
            "MissingItemAmount_error_signature": [
              3461
            ],
            "NameLengthPtr": [
              3389
            ],
            "NameWithLength": [
              3392
            ],
            "NoContract_error_length": [
              3698
            ],
            "NoContract_error_sig_ptr": [
              3692
            ],
            "NoContract_error_signature": [
              3689
            ],
            "NoContract_error_token_ptr": [
              3695
            ],
            "OfferItem": [
              3904
            ],
            "OneConduitExecute_size": [
              3766
            ],
            "OneWord": [
              3485
            ],
            "OrderFulfilled_baseOffset": [
              3552
            ],
            "OrderFulfilled_baseSize": [
              3545
            ],
            "OrderFulfilled_consideration_body_offset": [
              3573
            ],
            "OrderFulfilled_consideration_head_offset": [
              3570
            ],
            "OrderFulfilled_consideration_length_baseOffset": [
              3555
            ],
            "OrderFulfilled_fulfiller_offset": [
              3561
            ],
            "OrderFulfilled_offer_body_offset": [
              3567
            ],
            "OrderFulfilled_offer_head_offset": [
              3564
            ],
            "OrderFulfilled_offer_length_baseOffset": [
              3558
            ],
            "OrderFulfilled_selector": [
              3549
            ],
            "OrderParameters": [
              4013
            ],
            "OrderParameters_conduit_offset": [
              3473
            ],
            "OrderParameters_consideration_head_offset": [
              3470
            ],
            "OrderParameters_nonce_offset": [
              3476
            ],
            "OrderParameters_offer_head_offset": [
              3467
            ],
            "Panic_arithmetic": [
              3457
            ],
            "Panic_error_length": [
              3454
            ],
            "Panic_error_offset": [
              3451
            ],
            "Panic_error_signature": [
              3448
            ],
            "ReceivedItem_CommonParams_size": [
              3425
            ],
            "ReceivedItem_amount_offset": [
              3419
            ],
            "ReceivedItem_recipient_offset": [
              3422
            ],
            "ReceivedItem_size": [
              3416
            ],
            "Side": [
              3857
            ],
            "Slot0x80": [
              3509
            ],
            "Slot0xA0": [
              3512
            ],
            "ThreeWords": [
              3491
            ],
            "TwoWords": [
              3488
            ],
            "Version": [
              3395
            ],
            "Version_length": [
              3398
            ],
            "ZeroSlot": [
              3503
            ],
            "_ENTERED": [
              3404
            ],
            "_NOT_ENTERED": [
              3401
            ],
            "receivedItemsHash_ptr": [
              3542
            ]
          },
          "id": 4451,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4077,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:27"
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationEnums.sol",
              "file": "./ConsiderationEnums.sol",
              "id": 4080,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4451,
              "sourceUnit": 3858,
              "src": "57:58:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4078,
                    "name": "ItemType",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3854,
                    "src": "66:8:27",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 4079,
                    "name": "Side",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3857,
                    "src": "76:4:27",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationStructs.sol",
              "file": "./ConsiderationStructs.sol",
              "id": 4086,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4451,
              "sourceUnit": 4076,
              "src": "136:144:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4081,
                    "name": "OfferItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3904,
                    "src": "149:9:27",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 4082,
                    "name": "ConsiderationItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3918,
                    "src": "164:17:27",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 4083,
                    "name": "OrderParameters",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4013,
                    "src": "187:15:27",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 4084,
                    "name": "AdvancedOrder",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4031,
                    "src": "208:13:27",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 4085,
                    "name": "CriteriaResolver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4053,
                    "src": "227:16:27",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationConstants.sol",
              "file": "./ConsiderationConstants.sol",
              "id": 4087,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4451,
              "sourceUnit": 3809,
              "src": "282:38:27",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/interfaces/CriteriaResolutionErrors.sol",
              "file": "../interfaces/CriteriaResolutionErrors.sol",
              "id": 4089,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 4451,
              "sourceUnit": 2170,
              "src": "341:90:27",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4088,
                    "name": "CriteriaResolutionErrors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2169,
                    "src": "354:24:27",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4091,
                    "name": "CriteriaResolutionErrors",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2169,
                    "src": "641:24:27"
                  },
                  "id": 4092,
                  "nodeType": "InheritanceSpecifier",
                  "src": "641:24:27"
                }
              ],
              "canonicalName": "CriteriaResolution",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 4090,
                "nodeType": "StructuredDocumentation",
                "src": "433:176:27",
                "text": " @title CriteriaResolution\n @author 0age\n @notice CriteriaResolution contains a collection of pure functions related to\n         resolving criteria-based items."
              },
              "fullyImplemented": true,
              "id": 4450,
              "linearizedBaseContracts": [
                4450,
                2169
              ],
              "name": "CriteriaResolution",
              "nameLocation": "619:18:27",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 4414,
                    "nodeType": "Block",
                    "src": "1688:6991:27",
                    "statements": [
                      {
                        "id": 4413,
                        "nodeType": "UncheckedBlock",
                        "src": "1777:6896:27",
                        "statements": [
                          {
                            "assignments": [
                              4105
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4105,
                                "mutability": "mutable",
                                "name": "totalCriteriaResolvers",
                                "nameLocation": "1888:22:27",
                                "nodeType": "VariableDeclaration",
                                "scope": 4413,
                                "src": "1880:30:27",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4104,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1880:7:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 4108,
                            "initialValue": {
                              "expression": {
                                "id": 4106,
                                "name": "criteriaResolvers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4101,
                                "src": "1913:17:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct CriteriaResolver memory[] memory"
                                }
                              },
                              "id": 4107,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "1913:24:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1880:57:27"
                          },
                          {
                            "assignments": [
                              4110
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4110,
                                "mutability": "mutable",
                                "name": "totalAdvancedOrders",
                                "nameLocation": "2027:19:27",
                                "nodeType": "VariableDeclaration",
                                "scope": 4413,
                                "src": "2019:27:27",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4109,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2019:7:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 4113,
                            "initialValue": {
                              "expression": {
                                "id": 4111,
                                "name": "advancedOrders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4097,
                                "src": "2049:14:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct AdvancedOrder memory[] memory"
                                }
                              },
                              "id": 4112,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "2049:21:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2019:51:27"
                          },
                          {
                            "body": {
                              "id": 4316,
                              "nodeType": "Block",
                              "src": "2190:4658:27",
                              "statements": [
                                {
                                  "assignments": [
                                    4126
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 4126,
                                      "mutability": "mutable",
                                      "name": "criteriaResolver",
                                      "nameLocation": "2283:16:27",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 4316,
                                      "src": "2259:40:27",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CriteriaResolver_$4053_memory_ptr",
                                        "typeString": "struct CriteriaResolver"
                                      },
                                      "typeName": {
                                        "id": 4125,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 4124,
                                          "name": "CriteriaResolver",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 4053,
                                          "src": "2259:16:27"
                                        },
                                        "referencedDeclaration": 4053,
                                        "src": "2259:16:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                                          "typeString": "struct CriteriaResolver"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 4131,
                                  "initialValue": {
                                    "components": [
                                      {
                                        "baseExpression": {
                                          "id": 4127,
                                          "name": "criteriaResolvers",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4101,
                                          "src": "2324:17:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct CriteriaResolver memory[] memory"
                                          }
                                        },
                                        "id": 4129,
                                        "indexExpression": {
                                          "id": 4128,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4115,
                                          "src": "2342:1:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2324:20:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CriteriaResolver_$4053_memory_ptr",
                                          "typeString": "struct CriteriaResolver memory"
                                        }
                                      }
                                    ],
                                    "id": 4130,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "2302:60:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CriteriaResolver_$4053_memory_ptr",
                                      "typeString": "struct CriteriaResolver memory"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "2259:103:27"
                                },
                                {
                                  "assignments": [
                                    4133
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 4133,
                                      "mutability": "mutable",
                                      "name": "orderIndex",
                                      "nameLocation": "2468:10:27",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 4316,
                                      "src": "2460:18:27",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 4132,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2460:7:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 4136,
                                  "initialValue": {
                                    "expression": {
                                      "id": 4134,
                                      "name": "criteriaResolver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4126,
                                      "src": "2481:16:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CriteriaResolver_$4053_memory_ptr",
                                        "typeString": "struct CriteriaResolver memory"
                                      }
                                    },
                                    "id": 4135,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "orderIndex",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4042,
                                    "src": "2481:27:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "2460:48:27"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4139,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 4137,
                                      "name": "orderIndex",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4133,
                                      "src": "2591:10:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "id": 4138,
                                      "name": "totalAdvancedOrders",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4110,
                                      "src": "2605:19:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2591:33:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 4144,
                                  "nodeType": "IfStatement",
                                  "src": "2587:120:27",
                                  "trueBody": {
                                    "id": 4143,
                                    "nodeType": "Block",
                                    "src": "2626:81:27",
                                    "statements": [
                                      {
                                        "errorCall": {
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 4140,
                                            "name": "OrderCriteriaResolverOutOfRange",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2150,
                                            "src": "2655:31:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                              "typeString": "function () pure"
                                            }
                                          },
                                          "id": 4141,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "2655:33:27",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 4142,
                                        "nodeType": "RevertStatement",
                                        "src": "2648:40:27"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    },
                                    "id": 4150,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 4145,
                                          "name": "advancedOrders",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4097,
                                          "src": "2801:14:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct AdvancedOrder memory[] memory"
                                          }
                                        },
                                        "id": 4147,
                                        "indexExpression": {
                                          "id": 4146,
                                          "name": "orderIndex",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4133,
                                          "src": "2816:10:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "2801:26:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory"
                                        }
                                      },
                                      "id": 4148,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "numerator",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4024,
                                      "src": "2801:36:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 4149,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2841:1:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "2801:41:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 4153,
                                  "nodeType": "IfStatement",
                                  "src": "2797:96:27",
                                  "trueBody": {
                                    "id": 4152,
                                    "nodeType": "Block",
                                    "src": "2844:49:27",
                                    "statements": [
                                      {
                                        "id": 4151,
                                        "nodeType": "Continue",
                                        "src": "2866:8:27"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "assignments": [
                                    4156
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 4156,
                                      "mutability": "mutable",
                                      "name": "orderParameters",
                                      "nameLocation": "2992:15:27",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 4316,
                                      "src": "2969:38:27",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                        "typeString": "struct OrderParameters"
                                      },
                                      "typeName": {
                                        "id": 4155,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 4154,
                                          "name": "OrderParameters",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 4013,
                                          "src": "2969:15:27"
                                        },
                                        "referencedDeclaration": 4013,
                                        "src": "2969:15:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderParameters_$4013_storage_ptr",
                                          "typeString": "struct OrderParameters"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 4162,
                                  "initialValue": {
                                    "components": [
                                      {
                                        "expression": {
                                          "baseExpression": {
                                            "id": 4157,
                                            "name": "advancedOrders",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4097,
                                            "src": "3032:14:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                              "typeString": "struct AdvancedOrder memory[] memory"
                                            }
                                          },
                                          "id": 4159,
                                          "indexExpression": {
                                            "id": 4158,
                                            "name": "orderIndex",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4133,
                                            "src": "3047:10:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "3032:26:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                            "typeString": "struct AdvancedOrder memory"
                                          }
                                        },
                                        "id": 4160,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "parameters",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4022,
                                        "src": "3032:37:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                          "typeString": "struct OrderParameters memory"
                                        }
                                      }
                                    ],
                                    "id": 4161,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "3010:77:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                      "typeString": "struct OrderParameters memory"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "2969:118:27"
                                },
                                {
                                  "assignments": [
                                    4164
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 4164,
                                      "mutability": "mutable",
                                      "name": "componentIndex",
                                      "nameLocation": "3193:14:27",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 4316,
                                      "src": "3185:22:27",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 4163,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3185:7:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 4167,
                                  "initialValue": {
                                    "expression": {
                                      "id": 4165,
                                      "name": "criteriaResolver",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4126,
                                      "src": "3210:16:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CriteriaResolver_$4053_memory_ptr",
                                        "typeString": "struct CriteriaResolver memory"
                                      }
                                    },
                                    "id": 4166,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "index",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4047,
                                    "src": "3210:22:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "3185:47:27"
                                },
                                {
                                  "assignments": [
                                    4170
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 4170,
                                      "mutability": "mutable",
                                      "name": "itemType",
                                      "nameLocation": "3324:8:27",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 4316,
                                      "src": "3315:17:27",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ItemType_$3854",
                                        "typeString": "enum ItemType"
                                      },
                                      "typeName": {
                                        "id": 4169,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 4168,
                                          "name": "ItemType",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 3854,
                                          "src": "3315:8:27"
                                        },
                                        "referencedDeclaration": 3854,
                                        "src": "3315:8:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_ItemType_$3854",
                                          "typeString": "enum ItemType"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 4171,
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "3315:17:27"
                                },
                                {
                                  "assignments": [
                                    4173
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 4173,
                                      "mutability": "mutable",
                                      "name": "identifierOrCriteria",
                                      "nameLocation": "3358:20:27",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 4316,
                                      "src": "3350:28:27",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 4172,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3350:7:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 4174,
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "3350:28:27"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_Side_$3857",
                                      "typeString": "enum Side"
                                    },
                                    "id": 4179,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 4175,
                                        "name": "criteriaResolver",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4126,
                                        "src": "3472:16:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CriteriaResolver_$4053_memory_ptr",
                                          "typeString": "struct CriteriaResolver memory"
                                        }
                                      },
                                      "id": 4176,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "side",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4045,
                                      "src": "3472:21:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Side_$3857",
                                        "typeString": "enum Side"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 4177,
                                        "name": "Side",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3857,
                                        "src": "3497:4:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_Side_$3857_$",
                                          "typeString": "type(enum Side)"
                                        }
                                      },
                                      "id": 4178,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "OFFER",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3855,
                                      "src": "3497:10:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_Side_$3857",
                                        "typeString": "enum Side"
                                      }
                                    },
                                    "src": "3472:35:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 4289,
                                    "nodeType": "Block",
                                    "src": "4698:1488:27",
                                    "statements": [
                                      {
                                        "assignments": [
                                          4237
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 4237,
                                            "mutability": "mutable",
                                            "name": "consideration",
                                            "nameLocation": "4826:13:27",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4289,
                                            "src": "4799:40:27",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                              "typeString": "struct ConsiderationItem[]"
                                            },
                                            "typeName": {
                                              "baseType": {
                                                "id": 4235,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                  "id": 4234,
                                                  "name": "ConsiderationItem",
                                                  "nodeType": "IdentifierPath",
                                                  "referencedDeclaration": 3918,
                                                  "src": "4799:17:27"
                                                },
                                                "referencedDeclaration": 3918,
                                                "src": "4799:17:27",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ConsiderationItem_$3918_storage_ptr",
                                                  "typeString": "struct ConsiderationItem"
                                                }
                                              },
                                              "id": 4236,
                                              "nodeType": "ArrayTypeName",
                                              "src": "4799:19:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_storage_$dyn_storage_ptr",
                                                "typeString": "struct ConsiderationItem[]"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 4241,
                                        "initialValue": {
                                          "components": [
                                            {
                                              "expression": {
                                                "id": 4238,
                                                "name": "orderParameters",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4156,
                                                "src": "4868:15:27",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                                  "typeString": "struct OrderParameters memory"
                                                }
                                              },
                                              "id": 4239,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "consideration",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3997,
                                              "src": "4868:29:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct ConsiderationItem memory[] memory"
                                              }
                                            }
                                          ],
                                          "id": 4240,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "4842:77:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct ConsiderationItem memory[] memory"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "4799:120:27"
                                      },
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4245,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 4242,
                                            "name": "componentIndex",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4164,
                                            "src": "5014:14:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">=",
                                          "rightExpression": {
                                            "expression": {
                                              "id": 4243,
                                              "name": "consideration",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4237,
                                              "src": "5032:13:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct ConsiderationItem memory[] memory"
                                              }
                                            },
                                            "id": 4244,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "5032:20:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "5014:38:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 4250,
                                        "nodeType": "IfStatement",
                                        "src": "5010:141:27",
                                        "trueBody": {
                                          "id": 4249,
                                          "nodeType": "Block",
                                          "src": "5054:97:27",
                                          "statements": [
                                            {
                                              "errorCall": {
                                                "arguments": [],
                                                "expression": {
                                                  "argumentTypes": [],
                                                  "id": 4246,
                                                  "name": "ConsiderationCriteriaResolverOutOfRange",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2162,
                                                  "src": "5087:39:27",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                                    "typeString": "function () pure"
                                                  }
                                                },
                                                "id": 4247,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5087:41:27",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 4248,
                                              "nodeType": "RevertStatement",
                                              "src": "5080:48:27"
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "assignments": [
                                          4253
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 4253,
                                            "mutability": "mutable",
                                            "name": "considerationItem",
                                            "nameLocation": "5277:17:27",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4289,
                                            "src": "5252:42:27",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                              "typeString": "struct ConsiderationItem"
                                            },
                                            "typeName": {
                                              "id": 4252,
                                              "nodeType": "UserDefinedTypeName",
                                              "pathNode": {
                                                "id": 4251,
                                                "name": "ConsiderationItem",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3918,
                                                "src": "5252:17:27"
                                              },
                                              "referencedDeclaration": 3918,
                                              "src": "5252:17:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ConsiderationItem_$3918_storage_ptr",
                                                "typeString": "struct ConsiderationItem"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 4258,
                                        "initialValue": {
                                          "components": [
                                            {
                                              "baseExpression": {
                                                "id": 4254,
                                                "name": "consideration",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4237,
                                                "src": "5323:13:27",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                                  "typeString": "struct ConsiderationItem memory[] memory"
                                                }
                                              },
                                              "id": 4256,
                                              "indexExpression": {
                                                "id": 4255,
                                                "name": "componentIndex",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4164,
                                                "src": "5337:14:27",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "5323:29:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                                "typeString": "struct ConsiderationItem memory"
                                              }
                                            }
                                          ],
                                          "id": 4257,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "5297:77:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                            "typeString": "struct ConsiderationItem memory"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "5252:122:27"
                                      },
                                      {
                                        "expression": {
                                          "id": 4262,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 4259,
                                            "name": "itemType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4170,
                                            "src": "5478:8:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ItemType_$3854",
                                              "typeString": "enum ItemType"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "expression": {
                                              "id": 4260,
                                              "name": "considerationItem",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4253,
                                              "src": "5489:17:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                                "typeString": "struct ConsiderationItem memory"
                                              }
                                            },
                                            "id": 4261,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "itemType",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3907,
                                            "src": "5489:26:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ItemType_$3854",
                                              "typeString": "enum ItemType"
                                            }
                                          },
                                          "src": "5478:37:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_ItemType_$3854",
                                            "typeString": "enum ItemType"
                                          }
                                        },
                                        "id": 4263,
                                        "nodeType": "ExpressionStatement",
                                        "src": "5478:37:27"
                                      },
                                      {
                                        "expression": {
                                          "id": 4268,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 4264,
                                            "name": "identifierOrCriteria",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4173,
                                            "src": "5537:20:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "components": [
                                              {
                                                "expression": {
                                                  "id": 4265,
                                                  "name": "considerationItem",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4253,
                                                  "src": "5586:17:27",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                                    "typeString": "struct ConsiderationItem memory"
                                                  }
                                                },
                                                "id": 4266,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "identifierOrCriteria",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 3911,
                                                "src": "5586:38:27",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 4267,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "5560:86:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "5537:109:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 4269,
                                        "nodeType": "ExpressionStatement",
                                        "src": "5537:109:27"
                                      },
                                      {
                                        "assignments": [
                                          4272
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 4272,
                                            "mutability": "mutable",
                                            "name": "newItemType",
                                            "nameLocation": "5759:11:27",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4289,
                                            "src": "5750:20:27",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ItemType_$3854",
                                              "typeString": "enum ItemType"
                                            },
                                            "typeName": {
                                              "id": 4271,
                                              "nodeType": "UserDefinedTypeName",
                                              "pathNode": {
                                                "id": 4270,
                                                "name": "ItemType",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3854,
                                                "src": "5750:8:27"
                                              },
                                              "referencedDeclaration": 3854,
                                              "src": "5750:8:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                                "typeString": "enum ItemType"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 4273,
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "5750:20:27"
                                      },
                                      {
                                        "AST": {
                                          "nodeType": "YulBlock",
                                          "src": "5801:86:27",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "5827:38:27",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "5846:1:27",
                                                    "type": "",
                                                    "value": "3"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "itemType",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "5852:8:27"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "5862:1:27",
                                                        "type": "",
                                                        "value": "4"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "eq",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "5849:2:27"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "5849:15:27"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sub",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5842:3:27"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "5842:23:27"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "newItemType",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "5827:11:27"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "evmVersion": "london",
                                        "externalReferences": [
                                          {
                                            "declaration": 4170,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "5852:8:27",
                                            "valueSize": 1
                                          },
                                          {
                                            "declaration": 4272,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "5827:11:27",
                                            "valueSize": 1
                                          }
                                        ],
                                        "id": 4274,
                                        "nodeType": "InlineAssembly",
                                        "src": "5792:95:27"
                                      },
                                      {
                                        "expression": {
                                          "id": 4279,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "expression": {
                                              "id": 4275,
                                              "name": "considerationItem",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4253,
                                              "src": "5908:17:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                                "typeString": "struct ConsiderationItem memory"
                                              }
                                            },
                                            "id": 4277,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "itemType",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3907,
                                            "src": "5908:26:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ItemType_$3854",
                                              "typeString": "enum ItemType"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "id": 4278,
                                            "name": "newItemType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4272,
                                            "src": "5937:11:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ItemType_$3854",
                                              "typeString": "enum ItemType"
                                            }
                                          },
                                          "src": "5908:40:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_ItemType_$3854",
                                            "typeString": "enum ItemType"
                                          }
                                        },
                                        "id": 4280,
                                        "nodeType": "ExpressionStatement",
                                        "src": "5908:40:27"
                                      },
                                      {
                                        "expression": {
                                          "id": 4287,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "expression": {
                                              "id": 4281,
                                              "name": "considerationItem",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4253,
                                              "src": "6051:17:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                                "typeString": "struct ConsiderationItem memory"
                                              }
                                            },
                                            "id": 4283,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "identifierOrCriteria",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3911,
                                            "src": "6051:38:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "components": [
                                              {
                                                "expression": {
                                                  "id": 4284,
                                                  "name": "criteriaResolver",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4126,
                                                  "src": "6118:16:27",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_CriteriaResolver_$4053_memory_ptr",
                                                    "typeString": "struct CriteriaResolver memory"
                                                  }
                                                },
                                                "id": 4285,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "identifier",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 4049,
                                                "src": "6118:27:27",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 4286,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "6092:75:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "6051:116:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 4288,
                                        "nodeType": "ExpressionStatement",
                                        "src": "6051:116:27"
                                      }
                                    ]
                                  },
                                  "id": 4290,
                                  "nodeType": "IfStatement",
                                  "src": "3468:2718:27",
                                  "trueBody": {
                                    "id": 4232,
                                    "nodeType": "Block",
                                    "src": "3509:1183:27",
                                    "statements": [
                                      {
                                        "assignments": [
                                          4184
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 4184,
                                            "mutability": "mutable",
                                            "name": "offer",
                                            "nameLocation": "3593:5:27",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4232,
                                            "src": "3574:24:27",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                                              "typeString": "struct OfferItem[]"
                                            },
                                            "typeName": {
                                              "baseType": {
                                                "id": 4182,
                                                "nodeType": "UserDefinedTypeName",
                                                "pathNode": {
                                                  "id": 4181,
                                                  "name": "OfferItem",
                                                  "nodeType": "IdentifierPath",
                                                  "referencedDeclaration": 3904,
                                                  "src": "3574:9:27"
                                                },
                                                "referencedDeclaration": 3904,
                                                "src": "3574:9:27",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_OfferItem_$3904_storage_ptr",
                                                  "typeString": "struct OfferItem"
                                                }
                                              },
                                              "id": 4183,
                                              "nodeType": "ArrayTypeName",
                                              "src": "3574:11:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_storage_$dyn_storage_ptr",
                                                "typeString": "struct OfferItem[]"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 4187,
                                        "initialValue": {
                                          "expression": {
                                            "id": 4185,
                                            "name": "orderParameters",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4156,
                                            "src": "3601:15:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                              "typeString": "struct OrderParameters memory"
                                            }
                                          },
                                          "id": 4186,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "offer",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3993,
                                          "src": "3601:21:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct OfferItem memory[] memory"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "3574:48:27"
                                      },
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4191,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 4188,
                                            "name": "componentIndex",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4164,
                                            "src": "3717:14:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">=",
                                          "rightExpression": {
                                            "expression": {
                                              "id": 4189,
                                              "name": "offer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4184,
                                              "src": "3735:5:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct OfferItem memory[] memory"
                                              }
                                            },
                                            "id": 4190,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "3735:12:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "3717:30:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 4196,
                                        "nodeType": "IfStatement",
                                        "src": "3713:125:27",
                                        "trueBody": {
                                          "id": 4195,
                                          "nodeType": "Block",
                                          "src": "3749:89:27",
                                          "statements": [
                                            {
                                              "errorCall": {
                                                "arguments": [],
                                                "expression": {
                                                  "argumentTypes": [],
                                                  "id": 4192,
                                                  "name": "OfferCriteriaResolverOutOfRange",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2159,
                                                  "src": "3782:31:27",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                                    "typeString": "function () pure"
                                                  }
                                                },
                                                "id": 4193,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3782:33:27",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 4194,
                                              "nodeType": "RevertStatement",
                                              "src": "3775:40:27"
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "assignments": [
                                          4199
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 4199,
                                            "mutability": "mutable",
                                            "name": "offerItem",
                                            "nameLocation": "3950:9:27",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4232,
                                            "src": "3933:26:27",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                              "typeString": "struct OfferItem"
                                            },
                                            "typeName": {
                                              "id": 4198,
                                              "nodeType": "UserDefinedTypeName",
                                              "pathNode": {
                                                "id": 4197,
                                                "name": "OfferItem",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3904,
                                                "src": "3933:9:27"
                                              },
                                              "referencedDeclaration": 3904,
                                              "src": "3933:9:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OfferItem_$3904_storage_ptr",
                                                "typeString": "struct OfferItem"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 4203,
                                        "initialValue": {
                                          "baseExpression": {
                                            "id": 4200,
                                            "name": "offer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4184,
                                            "src": "3962:5:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                                              "typeString": "struct OfferItem memory[] memory"
                                            }
                                          },
                                          "id": 4202,
                                          "indexExpression": {
                                            "id": 4201,
                                            "name": "componentIndex",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4164,
                                            "src": "3968:14:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "3962:21:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                            "typeString": "struct OfferItem memory"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "3933:50:27"
                                      },
                                      {
                                        "expression": {
                                          "id": 4207,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 4204,
                                            "name": "itemType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4170,
                                            "src": "4087:8:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ItemType_$3854",
                                              "typeString": "enum ItemType"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "expression": {
                                              "id": 4205,
                                              "name": "offerItem",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4199,
                                              "src": "4098:9:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                                "typeString": "struct OfferItem memory"
                                              }
                                            },
                                            "id": 4206,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "itemType",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3895,
                                            "src": "4098:18:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ItemType_$3854",
                                              "typeString": "enum ItemType"
                                            }
                                          },
                                          "src": "4087:29:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_ItemType_$3854",
                                            "typeString": "enum ItemType"
                                          }
                                        },
                                        "id": 4208,
                                        "nodeType": "ExpressionStatement",
                                        "src": "4087:29:27"
                                      },
                                      {
                                        "expression": {
                                          "id": 4212,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 4209,
                                            "name": "identifierOrCriteria",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4173,
                                            "src": "4138:20:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "expression": {
                                              "id": 4210,
                                              "name": "offerItem",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4199,
                                              "src": "4161:9:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                                "typeString": "struct OfferItem memory"
                                              }
                                            },
                                            "id": 4211,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "identifierOrCriteria",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3899,
                                            "src": "4161:30:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "4138:53:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 4213,
                                        "nodeType": "ExpressionStatement",
                                        "src": "4138:53:27"
                                      },
                                      {
                                        "assignments": [
                                          4216
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 4216,
                                            "mutability": "mutable",
                                            "name": "newItemType",
                                            "nameLocation": "4304:11:27",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 4232,
                                            "src": "4295:20:27",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ItemType_$3854",
                                              "typeString": "enum ItemType"
                                            },
                                            "typeName": {
                                              "id": 4215,
                                              "nodeType": "UserDefinedTypeName",
                                              "pathNode": {
                                                "id": 4214,
                                                "name": "ItemType",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3854,
                                                "src": "4295:8:27"
                                              },
                                              "referencedDeclaration": 3854,
                                              "src": "4295:8:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                                "typeString": "enum ItemType"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 4217,
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "4295:20:27"
                                      },
                                      {
                                        "AST": {
                                          "nodeType": "YulBlock",
                                          "src": "4346:86:27",
                                          "statements": [
                                            {
                                              "nodeType": "YulAssignment",
                                              "src": "4372:38:27",
                                              "value": {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "4391:1:27",
                                                    "type": "",
                                                    "value": "3"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "itemType",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "4397:8:27"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "4407:1:27",
                                                        "type": "",
                                                        "value": "4"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "eq",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "4394:2:27"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "4394:15:27"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "sub",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4387:3:27"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "4387:23:27"
                                              },
                                              "variableNames": [
                                                {
                                                  "name": "newItemType",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "4372:11:27"
                                                }
                                              ]
                                            }
                                          ]
                                        },
                                        "evmVersion": "london",
                                        "externalReferences": [
                                          {
                                            "declaration": 4170,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "4397:8:27",
                                            "valueSize": 1
                                          },
                                          {
                                            "declaration": 4216,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "4372:11:27",
                                            "valueSize": 1
                                          }
                                        ],
                                        "id": 4218,
                                        "nodeType": "InlineAssembly",
                                        "src": "4337:95:27"
                                      },
                                      {
                                        "expression": {
                                          "id": 4223,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "expression": {
                                              "id": 4219,
                                              "name": "offerItem",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4199,
                                              "src": "4453:9:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                                "typeString": "struct OfferItem memory"
                                              }
                                            },
                                            "id": 4221,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "itemType",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3895,
                                            "src": "4453:18:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ItemType_$3854",
                                              "typeString": "enum ItemType"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "id": 4222,
                                            "name": "newItemType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4216,
                                            "src": "4474:11:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_ItemType_$3854",
                                              "typeString": "enum ItemType"
                                            }
                                          },
                                          "src": "4453:32:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_ItemType_$3854",
                                            "typeString": "enum ItemType"
                                          }
                                        },
                                        "id": 4224,
                                        "nodeType": "ExpressionStatement",
                                        "src": "4453:32:27"
                                      },
                                      {
                                        "expression": {
                                          "id": 4230,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "expression": {
                                              "id": 4225,
                                              "name": "offerItem",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4199,
                                              "src": "4588:9:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                                "typeString": "struct OfferItem memory"
                                              }
                                            },
                                            "id": 4227,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "identifierOrCriteria",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3899,
                                            "src": "4588:30:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "expression": {
                                              "id": 4228,
                                              "name": "criteriaResolver",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4126,
                                              "src": "4621:16:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_CriteriaResolver_$4053_memory_ptr",
                                                "typeString": "struct CriteriaResolver memory"
                                              }
                                            },
                                            "id": 4229,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "identifier",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4049,
                                            "src": "4621:52:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "4588:85:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 4231,
                                        "nodeType": "ExpressionStatement",
                                        "src": "4588:85:27"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "condition": {
                                    "id": 4294,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "!",
                                    "prefix": true,
                                    "src": "6284:30:27",
                                    "subExpression": {
                                      "arguments": [
                                        {
                                          "id": 4292,
                                          "name": "itemType",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4170,
                                          "src": "6305:8:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_enum$_ItemType_$3854",
                                            "typeString": "enum ItemType"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_enum$_ItemType_$3854",
                                            "typeString": "enum ItemType"
                                          }
                                        ],
                                        "id": 4291,
                                        "name": "_isItemWithCriteria",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4426,
                                        "src": "6285:19:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_enum$_ItemType_$3854_$returns$_t_bool_$",
                                          "typeString": "function (enum ItemType) pure returns (bool)"
                                        }
                                      },
                                      "id": 4293,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6285:29:27",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 4299,
                                  "nodeType": "IfStatement",
                                  "src": "6280:111:27",
                                  "trueBody": {
                                    "id": 4298,
                                    "nodeType": "Block",
                                    "src": "6316:75:27",
                                    "statements": [
                                      {
                                        "errorCall": {
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 4295,
                                            "name": "CriteriaNotEnabledForItem",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2165,
                                            "src": "6345:25:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                              "typeString": "function () pure"
                                            }
                                          },
                                          "id": 4296,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6345:27:27",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 4297,
                                        "nodeType": "RevertStatement",
                                        "src": "6338:34:27"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4305,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 4300,
                                      "name": "identifierOrCriteria",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4173,
                                      "src": "6487:20:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 4303,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "6519:1:27",
                                          "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": 4302,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "6511:7:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 4301,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "6511:7:27",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 4304,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6511:10:27",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6487:34:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 4315,
                                  "nodeType": "IfStatement",
                                  "src": "6483:351:27",
                                  "trueBody": {
                                    "id": 4314,
                                    "nodeType": "Block",
                                    "src": "6523:311:27",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "expression": {
                                                "id": 4307,
                                                "name": "criteriaResolver",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4126,
                                                "src": "6664:16:27",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_CriteriaResolver_$4053_memory_ptr",
                                                  "typeString": "struct CriteriaResolver memory"
                                                }
                                              },
                                              "id": 4308,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "identifier",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4049,
                                              "src": "6664:27:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "id": 4309,
                                              "name": "identifierOrCriteria",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4173,
                                              "src": "6717:20:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 4310,
                                                "name": "criteriaResolver",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4126,
                                                "src": "6763:16:27",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_CriteriaResolver_$4053_memory_ptr",
                                                  "typeString": "struct CriteriaResolver memory"
                                                }
                                              },
                                              "id": 4311,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "criteriaProof",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4052,
                                              "src": "6763:30:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                "typeString": "bytes32[] memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                "typeString": "bytes32[] memory"
                                              }
                                            ],
                                            "id": 4306,
                                            "name": "_verifyProof",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4449,
                                            "src": "6626:12:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$",
                                              "typeString": "function (uint256,uint256,bytes32[] memory) pure"
                                            }
                                          },
                                          "id": 4312,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "6626:189:27",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 4313,
                                        "nodeType": "ExpressionStatement",
                                        "src": "6626:189:27"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4120,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4118,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4115,
                                "src": "2157:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 4119,
                                "name": "totalCriteriaResolvers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4105,
                                "src": "2161:22:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2157:26:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4317,
                            "initializationExpression": {
                              "assignments": [
                                4115
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4115,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "2150:1:27",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4317,
                                  "src": "2142:9:27",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4114,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2142:7:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4117,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 4116,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2154:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "2142:13:27"
                            },
                            "loopExpression": {
                              "expression": {
                                "id": 4122,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "2185:3:27",
                                "subExpression": {
                                  "id": 4121,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4115,
                                  "src": "2187:1:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4123,
                              "nodeType": "ExpressionStatement",
                              "src": "2185:3:27"
                            },
                            "nodeType": "ForStatement",
                            "src": "2137:4711:27"
                          },
                          {
                            "body": {
                              "id": 4411,
                              "nodeType": "Block",
                              "src": "6961:1702:27",
                              "statements": [
                                {
                                  "assignments": [
                                    4330
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 4330,
                                      "mutability": "mutable",
                                      "name": "advancedOrder",
                                      "nameLocation": "7048:13:27",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 4411,
                                      "src": "7027:34:27",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                        "typeString": "struct AdvancedOrder"
                                      },
                                      "typeName": {
                                        "id": 4329,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 4328,
                                          "name": "AdvancedOrder",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 4031,
                                          "src": "7027:13:27"
                                        },
                                        "referencedDeclaration": 4031,
                                        "src": "7027:13:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                                          "typeString": "struct AdvancedOrder"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 4334,
                                  "initialValue": {
                                    "baseExpression": {
                                      "id": 4331,
                                      "name": "advancedOrders",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4097,
                                      "src": "7064:14:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct AdvancedOrder memory[] memory"
                                      }
                                    },
                                    "id": 4333,
                                    "indexExpression": {
                                      "id": 4332,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4319,
                                      "src": "7079:1:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7064:17:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                      "typeString": "struct AdvancedOrder memory"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "7027:54:27"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    },
                                    "id": 4338,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 4335,
                                        "name": "advancedOrder",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4330,
                                        "src": "7176:13:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory"
                                        }
                                      },
                                      "id": 4336,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "numerator",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4024,
                                      "src": "7176:23:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 4337,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7203:1:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "7176:28:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 4341,
                                  "nodeType": "IfStatement",
                                  "src": "7172:83:27",
                                  "trueBody": {
                                    "id": 4340,
                                    "nodeType": "Block",
                                    "src": "7206:49:27",
                                    "statements": [
                                      {
                                        "id": 4339,
                                        "nodeType": "Continue",
                                        "src": "7228:8:27"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "assignments": [
                                    4344
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 4344,
                                      "mutability": "mutable",
                                      "name": "orderParameters",
                                      "nameLocation": "7354:15:27",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 4411,
                                      "src": "7331:38:27",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                        "typeString": "struct OrderParameters"
                                      },
                                      "typeName": {
                                        "id": 4343,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 4342,
                                          "name": "OrderParameters",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 4013,
                                          "src": "7331:15:27"
                                        },
                                        "referencedDeclaration": 4013,
                                        "src": "7331:15:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderParameters_$4013_storage_ptr",
                                          "typeString": "struct OrderParameters"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 4350,
                                  "initialValue": {
                                    "components": [
                                      {
                                        "expression": {
                                          "baseExpression": {
                                            "id": 4345,
                                            "name": "advancedOrders",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4097,
                                            "src": "7394:14:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                              "typeString": "struct AdvancedOrder memory[] memory"
                                            }
                                          },
                                          "id": 4347,
                                          "indexExpression": {
                                            "id": 4346,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4319,
                                            "src": "7409:1:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "7394:17:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                            "typeString": "struct AdvancedOrder memory"
                                          }
                                        },
                                        "id": 4348,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "parameters",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4022,
                                        "src": "7394:28:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                          "typeString": "struct OrderParameters memory"
                                        }
                                      }
                                    ],
                                    "id": 4349,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "7372:68:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                      "typeString": "struct OrderParameters memory"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "7331:109:27"
                                },
                                {
                                  "assignments": [
                                    4352
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 4352,
                                      "mutability": "mutable",
                                      "name": "totalItems",
                                      "nameLocation": "7544:10:27",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 4411,
                                      "src": "7536:18:27",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 4351,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "7536:7:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 4356,
                                  "initialValue": {
                                    "expression": {
                                      "expression": {
                                        "id": 4353,
                                        "name": "orderParameters",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4344,
                                        "src": "7557:15:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                          "typeString": "struct OrderParameters memory"
                                        }
                                      },
                                      "id": 4354,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "consideration",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3997,
                                      "src": "7557:29:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct ConsiderationItem memory[] memory"
                                      }
                                    },
                                    "id": 4355,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "7557:36:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "7536:57:27"
                                },
                                {
                                  "body": {
                                    "id": 4379,
                                    "nodeType": "Block",
                                    "src": "7723:373:27",
                                    "statements": [
                                      {
                                        "condition": {
                                          "arguments": [
                                            {
                                              "expression": {
                                                "baseExpression": {
                                                  "expression": {
                                                    "id": 4368,
                                                    "name": "orderParameters",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4344,
                                                    "src": "7899:15:27",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                                      "typeString": "struct OrderParameters memory"
                                                    }
                                                  },
                                                  "id": 4369,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "consideration",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 3997,
                                                  "src": "7899:29:27",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                                    "typeString": "struct ConsiderationItem memory[] memory"
                                                  }
                                                },
                                                "id": 4371,
                                                "indexExpression": {
                                                  "id": 4370,
                                                  "name": "j",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4358,
                                                  "src": "7929:1:27",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "7899:32:27",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                                  "typeString": "struct ConsiderationItem memory"
                                                }
                                              },
                                              "id": 4372,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "itemType",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3907,
                                              "src": "7899:41:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                                "typeString": "enum ItemType"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                                "typeString": "enum ItemType"
                                              }
                                            ],
                                            "id": 4367,
                                            "name": "_isItemWithCriteria",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4426,
                                            "src": "7850:19:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_enum$_ItemType_$3854_$returns$_t_bool_$",
                                              "typeString": "function (enum ItemType) pure returns (bool)"
                                            }
                                          },
                                          "id": 4373,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "7850:116:27",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 4378,
                                        "nodeType": "IfStatement",
                                        "src": "7821:257:27",
                                        "trueBody": {
                                          "id": 4377,
                                          "nodeType": "Block",
                                          "src": "7989:89:27",
                                          "statements": [
                                            {
                                              "errorCall": {
                                                "arguments": [],
                                                "expression": {
                                                  "argumentTypes": [],
                                                  "id": 4374,
                                                  "name": "UnresolvedConsiderationCriteria",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2156,
                                                  "src": "8022:31:27",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                                    "typeString": "function () pure"
                                                  }
                                                },
                                                "id": 4375,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "8022:33:27",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 4376,
                                              "nodeType": "RevertStatement",
                                              "src": "8015:40:27"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4363,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 4361,
                                      "name": "j",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4358,
                                      "src": "7702:1:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 4362,
                                      "name": "totalItems",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4352,
                                      "src": "7706:10:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7702:14:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 4380,
                                  "initializationExpression": {
                                    "assignments": [
                                      4358
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 4358,
                                        "mutability": "mutable",
                                        "name": "j",
                                        "nameLocation": "7695:1:27",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 4380,
                                        "src": "7687:9:27",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 4357,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "7687:7:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 4360,
                                    "initialValue": {
                                      "hexValue": "30",
                                      "id": 4359,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7699:1:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "7687:13:27"
                                  },
                                  "loopExpression": {
                                    "expression": {
                                      "id": 4365,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": true,
                                      "src": "7718:3:27",
                                      "subExpression": {
                                        "id": 4364,
                                        "name": "j",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4358,
                                        "src": "7720:1:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4366,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7718:3:27"
                                  },
                                  "nodeType": "ForStatement",
                                  "src": "7682:414:27"
                                },
                                {
                                  "expression": {
                                    "id": 4385,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 4381,
                                      "name": "totalItems",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4352,
                                      "src": "8183:10:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "expression": {
                                        "expression": {
                                          "id": 4382,
                                          "name": "orderParameters",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4344,
                                          "src": "8196:15:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                            "typeString": "struct OrderParameters memory"
                                          }
                                        },
                                        "id": 4383,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "offer",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3993,
                                        "src": "8196:21:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct OfferItem memory[] memory"
                                        }
                                      },
                                      "id": 4384,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "8196:28:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8183:41:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 4386,
                                  "nodeType": "ExpressionStatement",
                                  "src": "8183:41:27"
                                },
                                {
                                  "body": {
                                    "id": 4409,
                                    "nodeType": "Block",
                                    "src": "8346:303:27",
                                    "statements": [
                                      {
                                        "condition": {
                                          "arguments": [
                                            {
                                              "expression": {
                                                "baseExpression": {
                                                  "expression": {
                                                    "id": 4398,
                                                    "name": "orderParameters",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 4344,
                                                    "src": "8493:15:27",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                                      "typeString": "struct OrderParameters memory"
                                                    }
                                                  },
                                                  "id": 4399,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "offer",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 3993,
                                                  "src": "8493:21:27",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                                                    "typeString": "struct OfferItem memory[] memory"
                                                  }
                                                },
                                                "id": 4401,
                                                "indexExpression": {
                                                  "id": 4400,
                                                  "name": "j",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 4388,
                                                  "src": "8515:1:27",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "8493:24:27",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                                  "typeString": "struct OfferItem memory"
                                                }
                                              },
                                              "id": 4402,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "itemType",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3895,
                                              "src": "8493:33:27",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                                "typeString": "enum ItemType"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                                "typeString": "enum ItemType"
                                              }
                                            ],
                                            "id": 4397,
                                            "name": "_isItemWithCriteria",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4426,
                                            "src": "8473:19:27",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_enum$_ItemType_$3854_$returns$_t_bool_$",
                                              "typeString": "function (enum ItemType) pure returns (bool)"
                                            }
                                          },
                                          "id": 4403,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "8473:54:27",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 4408,
                                        "nodeType": "IfStatement",
                                        "src": "8444:187:27",
                                        "trueBody": {
                                          "id": 4407,
                                          "nodeType": "Block",
                                          "src": "8550:81:27",
                                          "statements": [
                                            {
                                              "errorCall": {
                                                "arguments": [],
                                                "expression": {
                                                  "argumentTypes": [],
                                                  "id": 4404,
                                                  "name": "UnresolvedOfferCriteria",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2153,
                                                  "src": "8583:23:27",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                                    "typeString": "function () pure"
                                                  }
                                                },
                                                "id": 4405,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "8583:25:27",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 4406,
                                              "nodeType": "RevertStatement",
                                              "src": "8576:32:27"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 4393,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 4391,
                                      "name": "j",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4388,
                                      "src": "8325:1:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "id": 4392,
                                      "name": "totalItems",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4352,
                                      "src": "8329:10:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "8325:14:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 4410,
                                  "initializationExpression": {
                                    "assignments": [
                                      4388
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 4388,
                                        "mutability": "mutable",
                                        "name": "j",
                                        "nameLocation": "8318:1:27",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 4410,
                                        "src": "8310:9:27",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 4387,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8310:7:27",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 4390,
                                    "initialValue": {
                                      "hexValue": "30",
                                      "id": 4389,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "8322:1:27",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "8310:13:27"
                                  },
                                  "loopExpression": {
                                    "expression": {
                                      "id": 4395,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": true,
                                      "src": "8341:3:27",
                                      "subExpression": {
                                        "id": 4394,
                                        "name": "j",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4388,
                                        "src": "8343:1:27",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4396,
                                    "nodeType": "ExpressionStatement",
                                    "src": "8341:3:27"
                                  },
                                  "nodeType": "ForStatement",
                                  "src": "8305:344:27"
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 4324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 4322,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4319,
                                "src": "6931:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 4323,
                                "name": "totalAdvancedOrders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4110,
                                "src": "6935:19:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6931:23:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 4412,
                            "initializationExpression": {
                              "assignments": [
                                4319
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4319,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "6924:1:27",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4412,
                                  "src": "6916:9:27",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4318,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "6916:7:27",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4321,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 4320,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6928:1:27",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "6916:13:27"
                            },
                            "loopExpression": {
                              "expression": {
                                "id": 4326,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "6956:3:27",
                                "subExpression": {
                                  "id": 4325,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4319,
                                  "src": "6958:1:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4327,
                              "nodeType": "ExpressionStatement",
                              "src": "6956:3:27"
                            },
                            "nodeType": "ForStatement",
                            "src": "6911:1752:27"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4093,
                    "nodeType": "StructuredDocumentation",
                    "src": "672:858:27",
                    "text": " @dev Internal pure function to apply criteria resolvers containing\n      specific token identifiers and associated proofs to order items.\n @param advancedOrders     The orders to apply criteria resolvers to.\n @param criteriaResolvers  An array where each element contains a\n                           reference to a specific order as well as that\n                           order's offer or consideration, a token\n                           identifier, and a proof that the supplied token\n                           identifier is contained in the order's merkle\n                           root. Note that a root of zero indicates that\n                           any transferrable token identifier is valid and\n                           that no proof needs to be supplied."
                  },
                  "id": 4415,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_applyCriteriaResolvers",
                  "nameLocation": "1544:23:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4102,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4097,
                        "mutability": "mutable",
                        "name": "advancedOrders",
                        "nameLocation": "1600:14:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 4415,
                        "src": "1577:37:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct AdvancedOrder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4095,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 4094,
                              "name": "AdvancedOrder",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4031,
                              "src": "1577:13:27"
                            },
                            "referencedDeclaration": 4031,
                            "src": "1577:13:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                              "typeString": "struct AdvancedOrder"
                            }
                          },
                          "id": 4096,
                          "nodeType": "ArrayTypeName",
                          "src": "1577:15:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                            "typeString": "struct AdvancedOrder[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4101,
                        "mutability": "mutable",
                        "name": "criteriaResolvers",
                        "nameLocation": "1650:17:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 4415,
                        "src": "1624:43:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct CriteriaResolver[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4099,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 4098,
                              "name": "CriteriaResolver",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4053,
                              "src": "1624:16:27"
                            },
                            "referencedDeclaration": 4053,
                            "src": "1624:16:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                              "typeString": "struct CriteriaResolver"
                            }
                          },
                          "id": 4100,
                          "nodeType": "ArrayTypeName",
                          "src": "1624:18:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_storage_$dyn_storage_ptr",
                            "typeString": "struct CriteriaResolver[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1567:106:27"
                  },
                  "returnParameters": {
                    "id": 4103,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1688:0:27"
                  },
                  "scope": 4450,
                  "src": "1535:7144:27",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4425,
                    "nodeType": "Block",
                    "src": "9296:160:27",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "9395:55:27",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "9409:31:27",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "itemType",
                                    "nodeType": "YulIdentifier",
                                    "src": "9428:8:27"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9438:1:27",
                                    "type": "",
                                    "value": "3"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "9425:2:27"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9425:15:27"
                              },
                              "variableNames": [
                                {
                                  "name": "withCriteria",
                                  "nodeType": "YulIdentifier",
                                  "src": "9409:12:27"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4419,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9428:8:27",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4422,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9409:12:27",
                            "valueSize": 1
                          }
                        ],
                        "id": 4424,
                        "nodeType": "InlineAssembly",
                        "src": "9386:64:27"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4416,
                    "nodeType": "StructuredDocumentation",
                    "src": "8685:488:27",
                    "text": " @dev Internal pure function to check whether a given item type represents\n      a criteria-based ERC721 or ERC1155 item (e.g. an item that can be\n      resolved to one of a number of different identifiers at the time of\n      order fulfillment).\n @param itemType The item type in question.\n @return withCriteria A boolean indicating that the item type in question\n                      represents a criteria-based item."
                  },
                  "id": 4426,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_isItemWithCriteria",
                  "nameLocation": "9187:19:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4420,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4419,
                        "mutability": "mutable",
                        "name": "itemType",
                        "nameLocation": "9216:8:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 4426,
                        "src": "9207:17:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ItemType_$3854",
                          "typeString": "enum ItemType"
                        },
                        "typeName": {
                          "id": 4418,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 4417,
                            "name": "ItemType",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3854,
                            "src": "9207:8:27"
                          },
                          "referencedDeclaration": 3854,
                          "src": "9207:8:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ItemType_$3854",
                            "typeString": "enum ItemType"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9206:19:27"
                  },
                  "returnParameters": {
                    "id": 4423,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4422,
                        "mutability": "mutable",
                        "name": "withCriteria",
                        "nameLocation": "9278:12:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 4426,
                        "src": "9273:17:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 4421,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "9273:4:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9272:19:27"
                  },
                  "scope": 4450,
                  "src": "9178:278:27",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4448,
                    "nodeType": "Block",
                    "src": "9908:1446:27",
                    "statements": [
                      {
                        "assignments": [
                          4438
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4438,
                            "mutability": "mutable",
                            "name": "isValid",
                            "nameLocation": "9923:7:27",
                            "nodeType": "VariableDeclaration",
                            "scope": 4448,
                            "src": "9918:12:27",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4437,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "9918:4:27",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4439,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9918:12:27"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "9950:1263:27",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10025:24:27",
                              "value": {
                                "name": "leaf",
                                "nodeType": "YulIdentifier",
                                "src": "10045:4:27"
                              },
                              "variables": [
                                {
                                  "name": "computedHash",
                                  "nodeType": "YulTypedName",
                                  "src": "10029:12:27",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10141:31:27",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "proof",
                                    "nodeType": "YulIdentifier",
                                    "src": "10157:5:27"
                                  },
                                  {
                                    "name": "OneWord",
                                    "nodeType": "YulIdentifier",
                                    "src": "10164:7:27"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "10153:3:27"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10153:19:27"
                              },
                              "variables": [
                                {
                                  "name": "data",
                                  "nodeType": "YulTypedName",
                                  "src": "10145:4:27",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10409:687:27",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "10469:29:27",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "10493:4:27"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "10487:5:27"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10487:11:27"
                                    },
                                    "variables": [
                                      {
                                        "name": "loadedData",
                                        "nodeType": "YulTypedName",
                                        "src": "10473:10:27",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "cases": [
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "10633:162:27",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "10662:1:27",
                                                    "type": "",
                                                    "value": "0"
                                                  },
                                                  {
                                                    "name": "computedHash",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10665:12:27"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10655:6:27"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10655:23:27"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "10655:23:27"
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "10736:4:27",
                                                    "type": "",
                                                    "value": "0x20"
                                                  },
                                                  {
                                                    "name": "loadedData",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10742:10:27"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10729:6:27"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10729:24:27"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "10729:24:27"
                                            }
                                          ]
                                        },
                                        "nodeType": "YulCase",
                                        "src": "10626:169:27",
                                        "value": {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "10631:1:27",
                                          "type": "",
                                          "value": "0"
                                        }
                                      },
                                      {
                                        "body": {
                                          "nodeType": "YulBlock",
                                          "src": "10820:162:27",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "10849:1:27",
                                                    "type": "",
                                                    "value": "0"
                                                  },
                                                  {
                                                    "name": "loadedData",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10852:10:27"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10842:6:27"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10842:21:27"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "10842:21:27"
                                            },
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "10916:4:27",
                                                    "type": "",
                                                    "value": "0x20"
                                                  },
                                                  {
                                                    "name": "computedHash",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "10922:12:27"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10909:6:27"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "10909:26:27"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "10909:26:27"
                                            }
                                          ]
                                        },
                                        "nodeType": "YulCase",
                                        "src": "10812:170:27",
                                        "value": "default"
                                      }
                                    ],
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "computedHash",
                                          "nodeType": "YulIdentifier",
                                          "src": "10584:12:27"
                                        },
                                        {
                                          "name": "loadedData",
                                          "nodeType": "YulIdentifier",
                                          "src": "10598:10:27"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "10581:2:27"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10581:28:27"
                                    },
                                    "nodeType": "YulSwitch",
                                    "src": "10574:408:27"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "11044:38:27",
                                    "value": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "11070:1:27",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "name": "TwoWords",
                                          "nodeType": "YulIdentifier",
                                          "src": "11073:8:27"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "keccak256",
                                        "nodeType": "YulIdentifier",
                                        "src": "11060:9:27"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11060:22:27"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "computedHash",
                                        "nodeType": "YulIdentifier",
                                        "src": "11044:12:27"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "data",
                                    "nodeType": "YulIdentifier",
                                    "src": "10339:4:27"
                                  },
                                  {
                                    "name": "end",
                                    "nodeType": "YulIdentifier",
                                    "src": "10345:3:27"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "10336:2:27"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10336:13:27"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "10350:58:27",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "10368:26:27",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "10380:4:27"
                                        },
                                        {
                                          "name": "OneWord",
                                          "nodeType": "YulIdentifier",
                                          "src": "10386:7:27"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10376:3:27"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10376:18:27"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "data",
                                        "nodeType": "YulIdentifier",
                                        "src": "10368:4:27"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "10255:80:27",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "10273:48:27",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "data",
                                          "nodeType": "YulIdentifier",
                                          "src": "10288:4:27"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "proof",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10304:5:27"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "10298:5:27"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10298:12:27"
                                            },
                                            {
                                              "name": "OneWord",
                                              "nodeType": "YulIdentifier",
                                              "src": "10312:7:27"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mul",
                                            "nodeType": "YulIdentifier",
                                            "src": "10294:3:27"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10294:26:27"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "10284:3:27"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10284:37:27"
                                    },
                                    "variables": [
                                      {
                                        "name": "end",
                                        "nodeType": "YulTypedName",
                                        "src": "10277:3:27",
                                        "type": ""
                                      }
                                    ]
                                  }
                                ]
                              },
                              "src": "10251:845:27"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "11170:33:27",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "computedHash",
                                    "nodeType": "YulIdentifier",
                                    "src": "11184:12:27"
                                  },
                                  {
                                    "name": "root",
                                    "nodeType": "YulIdentifier",
                                    "src": "11198:4:27"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "11181:2:27"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11181:22:27"
                              },
                              "variableNames": [
                                {
                                  "name": "isValid",
                                  "nodeType": "YulIdentifier",
                                  "src": "11170:7:27"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10164:7:27",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10312:7:27",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10386:7:27",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3488,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11073:8:27",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4438,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11170:7:27",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4429,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10045:4:27",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4434,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10157:5:27",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4434,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10304:5:27",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4431,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11198:4:27",
                            "valueSize": 1
                          }
                        ],
                        "id": 4440,
                        "nodeType": "InlineAssembly",
                        "src": "9941:1272:27"
                      },
                      {
                        "condition": {
                          "id": 4442,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "11292:8:27",
                          "subExpression": {
                            "id": 4441,
                            "name": "isValid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4438,
                            "src": "11293:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4447,
                        "nodeType": "IfStatement",
                        "src": "11288:60:27",
                        "trueBody": {
                          "id": 4446,
                          "nodeType": "Block",
                          "src": "11302:46:27",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 4443,
                                  "name": "InvalidProof",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2168,
                                  "src": "11323:12:27",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 4444,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11323:14:27",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4445,
                              "nodeType": "RevertStatement",
                              "src": "11316:21:27"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4427,
                    "nodeType": "StructuredDocumentation",
                    "src": "9462:323:27",
                    "text": " @dev Internal pure function to ensure that a given element is contained\n      in a merkle root via a supplied proof.\n @param leaf  The element for which to prove inclusion.\n @param root  The merkle root that inclusion will be proved against.\n @param proof The merkle proof."
                  },
                  "id": 4449,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_verifyProof",
                  "nameLocation": "9799:12:27",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4435,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4429,
                        "mutability": "mutable",
                        "name": "leaf",
                        "nameLocation": "9829:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 4449,
                        "src": "9821:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4428,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9821:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4431,
                        "mutability": "mutable",
                        "name": "root",
                        "nameLocation": "9851:4:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 4449,
                        "src": "9843:12:27",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4430,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9843:7:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4434,
                        "mutability": "mutable",
                        "name": "proof",
                        "nameLocation": "9882:5:27",
                        "nodeType": "VariableDeclaration",
                        "scope": 4449,
                        "src": "9865:22:27",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 4432,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "9865:7:27",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 4433,
                          "nodeType": "ArrayTypeName",
                          "src": "9865:9:27",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9811:82:27"
                  },
                  "returnParameters": {
                    "id": 4436,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9908:0:27"
                  },
                  "scope": 4450,
                  "src": "9790:1564:27",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 4451,
              "src": "610:10746:27",
              "usedErrors": [
                2150,
                2153,
                2156,
                2159,
                2162,
                2165,
                2168
              ]
            }
          ],
          "src": "32:11325:27"
        },
        "id": 27
      },
      "seaport/contracts/lib/Executor.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/Executor.sol",
          "exportedSymbols": {
            "AccumulatorArmed": [
              3772
            ],
            "AccumulatorDisarmed": [
              3769
            ],
            "Accumulator_array_length_ptr": [
              3784
            ],
            "Accumulator_array_offset": [
              3790
            ],
            "Accumulator_array_offset_ptr": [
              3781
            ],
            "Accumulator_conduitKey_ptr": [
              3775
            ],
            "Accumulator_itemSizeOffsetDifference": [
              3787
            ],
            "Accumulator_selector_ptr": [
              3778
            ],
            "AdditionalRecipients_size": [
              3530
            ],
            "AdvancedOrder_numerator_offset": [
              3482
            ],
            "BasicOrder_additionalRecipients_data_cdPtr": [
              3621
            ],
            "BasicOrder_additionalRecipients_head_cdPtr": [
              3612
            ],
            "BasicOrder_additionalRecipients_head_ptr": [
              3678
            ],
            "BasicOrder_additionalRecipients_length_cdPtr": [
              3618
            ],
            "BasicOrder_basicOrderType_cdPtr": [
              3597
            ],
            "BasicOrder_considerationAmount_cdPtr": [
              3582
            ],
            "BasicOrder_considerationHashesArray_ptr": [
              3518
            ],
            "BasicOrder_considerationItem_endAmount_ptr": [
              3642
            ],
            "BasicOrder_considerationItem_identifier_ptr": [
              3636
            ],
            "BasicOrder_considerationItem_itemType_ptr": [
              3630
            ],
            "BasicOrder_considerationItem_startAmount_ptr": [
              3639
            ],
            "BasicOrder_considerationItem_token_ptr": [
              3633
            ],
            "BasicOrder_considerationItem_typeHash_ptr": [
              3627
            ],
            "BasicOrder_considerationToken_cdPtr": [
              3579
            ],
            "BasicOrder_endAmount_cdPtr": [
              3515
            ],
            "BasicOrder_fulfillerConduit_cdPtr": [
              3606
            ],
            "BasicOrder_offerAmount_cdPtr": [
              3594
            ],
            "BasicOrder_offerItem_endAmount_ptr": [
              3654
            ],
            "BasicOrder_offerItem_itemType_ptr": [
              3648
            ],
            "BasicOrder_offerItem_token_ptr": [
              3651
            ],
            "BasicOrder_offerItem_typeHash_ptr": [
              3645
            ],
            "BasicOrder_offerToken_cdPtr": [
              3591
            ],
            "BasicOrder_offererConduit_cdPtr": [
              3603
            ],
            "BasicOrder_offerer_cdPtr": [
              3585
            ],
            "BasicOrder_order_considerationHashes_ptr": [
              3666
            ],
            "BasicOrder_order_nonce_ptr": [
              3675
            ],
            "BasicOrder_order_offerHashes_ptr": [
              3663
            ],
            "BasicOrder_order_offerer_ptr": [
              3660
            ],
            "BasicOrder_order_orderType_ptr": [
              3669
            ],
            "BasicOrder_order_startTime_ptr": [
              3672
            ],
            "BasicOrder_order_typeHash_ptr": [
              3657
            ],
            "BasicOrder_parameters_cdPtr": [
              3576
            ],
            "BasicOrder_parameters_ptr": [
              3624
            ],
            "BasicOrder_signature_cdPtr": [
              3615
            ],
            "BasicOrder_signature_ptr": [
              3681
            ],
            "BasicOrder_startTime_cdPtr": [
              3600
            ],
            "BasicOrder_totalOriginalAdditionalRecipients_cdPtr": [
              3609
            ],
            "BasicOrder_zone_cdPtr": [
              3588
            ],
            "Common_amount_offset": [
              3413
            ],
            "Common_identifier_offset": [
              3410
            ],
            "Common_token_offset": [
              3407
            ],
            "ConduitInterface": [
              1801
            ],
            "Conduit_execute_ConduitTransfer_length": [
              3739
            ],
            "Conduit_execute_ConduitTransfer_length_ptr": [
              3745
            ],
            "Conduit_execute_ConduitTransfer_offset_ptr": [
              3742
            ],
            "Conduit_execute_ConduitTransfer_ptr": [
              3736
            ],
            "Conduit_execute_signature": [
              3733
            ],
            "Conduit_execute_transferAmount_ptr": [
              3763
            ],
            "Conduit_execute_transferFrom_ptr": [
              3754
            ],
            "Conduit_execute_transferIdentifier_ptr": [
              3760
            ],
            "Conduit_execute_transferItemType_ptr": [
              3748
            ],
            "Conduit_execute_transferTo_ptr": [
              3757
            ],
            "Conduit_execute_transferToken_ptr": [
              3751
            ],
            "Conduit_transferItem_amount_ptr": [
              3808
            ],
            "Conduit_transferItem_from_ptr": [
              3799
            ],
            "Conduit_transferItem_identifier_ptr": [
              3805
            ],
            "Conduit_transferItem_size": [
              3793
            ],
            "Conduit_transferItem_to_ptr": [
              3802
            ],
            "Conduit_transferItem_token_ptr": [
              3796
            ],
            "ConsiderItem_recipient_offset": [
              3431
            ],
            "ConsiderationItem_recipient_offset": [
              3428
            ],
            "CostPerWord": [
              3708
            ],
            "Create2AddressDerivation_length": [
              3717
            ],
            "Create2AddressDerivation_ptr": [
              3714
            ],
            "DefaultFreeMemoryPointer": [
              3506
            ],
            "EIP2098_allButHighestBitMask": [
              3685
            ],
            "EIP712_ConsiderationItem_size": [
              3527
            ],
            "EIP712_DigestPayload_size": [
              3539
            ],
            "EIP712_DomainSeparator_offset": [
              3533
            ],
            "EIP712_OfferItem_size": [
              3524
            ],
            "EIP712_OrderHash_offset": [
              3536
            ],
            "EIP712_Order_size": [
              3521
            ],
            "EIP_712_PREFIX": [
              3702
            ],
            "ERC1155Interface": [
              1535
            ],
            "ERC20Interface": [
              1496
            ],
            "ERC721Interface": [
              1506
            ],
            "Execution_conduit_offset": [
              3437
            ],
            "Execution_offerer_offset": [
              3434
            ],
            "Executor": [
              5018
            ],
            "ExtraGasBuffer": [
              3705
            ],
            "FiveWords": [
              3497
            ],
            "FourWords": [
              3494
            ],
            "FreeMemoryPointerSlot": [
              3500
            ],
            "Fulfillment_itemIndex_offset": [
              3479
            ],
            "InvalidFulfillmentComponentData_error_len": [
              3444
            ],
            "InvalidFulfillmentComponentData_error_signature": [
              3441
            ],
            "ItemType": [
              3854
            ],
            "MaskOverByteTwelve": [
              3721
            ],
            "MaskOverFirstFourBytes": [
              3729
            ],
            "MaskOverLastTwentyBytes": [
              3725
            ],
            "MemoryExpansionCoefficient": [
              3711
            ],
            "MissingItemAmount_error_len": [
              3464
            ],
            "MissingItemAmount_error_signature": [
              3461
            ],
            "NameLengthPtr": [
              3389
            ],
            "NameWithLength": [
              3392
            ],
            "NoContract_error_length": [
              3698
            ],
            "NoContract_error_sig_ptr": [
              3692
            ],
            "NoContract_error_signature": [
              3689
            ],
            "NoContract_error_token_ptr": [
              3695
            ],
            "OneConduitExecute_size": [
              3766
            ],
            "OneWord": [
              3485
            ],
            "OrderFulfilled_baseOffset": [
              3552
            ],
            "OrderFulfilled_baseSize": [
              3545
            ],
            "OrderFulfilled_consideration_body_offset": [
              3573
            ],
            "OrderFulfilled_consideration_head_offset": [
              3570
            ],
            "OrderFulfilled_consideration_length_baseOffset": [
              3555
            ],
            "OrderFulfilled_fulfiller_offset": [
              3561
            ],
            "OrderFulfilled_offer_body_offset": [
              3567
            ],
            "OrderFulfilled_offer_head_offset": [
              3564
            ],
            "OrderFulfilled_offer_length_baseOffset": [
              3558
            ],
            "OrderFulfilled_selector": [
              3549
            ],
            "OrderParameters_conduit_offset": [
              3473
            ],
            "OrderParameters_consideration_head_offset": [
              3470
            ],
            "OrderParameters_nonce_offset": [
              3476
            ],
            "OrderParameters_offer_head_offset": [
              3467
            ],
            "Panic_arithmetic": [
              3457
            ],
            "Panic_error_length": [
              3454
            ],
            "Panic_error_offset": [
              3451
            ],
            "Panic_error_signature": [
              3448
            ],
            "ReceivedItem": [
              3940
            ],
            "ReceivedItem_CommonParams_size": [
              3425
            ],
            "ReceivedItem_amount_offset": [
              3419
            ],
            "ReceivedItem_recipient_offset": [
              3422
            ],
            "ReceivedItem_size": [
              3416
            ],
            "Slot0x80": [
              3509
            ],
            "Slot0xA0": [
              3512
            ],
            "ThreeWords": [
              3491
            ],
            "TokenTransferrer": [
              7981
            ],
            "TwoWords": [
              3488
            ],
            "Verifiers": [
              8379
            ],
            "Version": [
              3395
            ],
            "Version_length": [
              3398
            ],
            "ZeroSlot": [
              3503
            ],
            "_ENTERED": [
              3404
            ],
            "_NOT_ENTERED": [
              3401
            ],
            "receivedItemsHash_ptr": [
              3542
            ]
          },
          "id": 5019,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 4452,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:28"
            },
            {
              "absolutePath": "seaport/contracts/interfaces/AbridgedTokenInterfaces.sol",
              "file": "../interfaces/AbridgedTokenInterfaces.sol",
              "id": 4456,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5019,
              "sourceUnit": 1536,
              "src": "76:122:28",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4453,
                    "name": "ERC20Interface",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1496,
                    "src": "89:14:28",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 4454,
                    "name": "ERC721Interface",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1506,
                    "src": "109:15:28",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 4455,
                    "name": "ERC1155Interface",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1535,
                    "src": "130:16:28",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/interfaces/ConduitInterface.sol",
              "file": "../interfaces/ConduitInterface.sol",
              "id": 4458,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5019,
              "sourceUnit": 1802,
              "src": "200:70:28",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4457,
                    "name": "ConduitInterface",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1801,
                    "src": "209:16:28",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationEnums.sol",
              "file": "./ConsiderationEnums.sol",
              "id": 4460,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5019,
              "sourceUnit": 3858,
              "src": "272:52:28",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4459,
                    "name": "ItemType",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3854,
                    "src": "281:8:28",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationStructs.sol",
              "file": "./ConsiderationStructs.sol",
              "id": 4462,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5019,
              "sourceUnit": 4076,
              "src": "326:58:28",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4461,
                    "name": "ReceivedItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3940,
                    "src": "335:12:28",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/Verifiers.sol",
              "file": "./Verifiers.sol",
              "id": 4464,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5019,
              "sourceUnit": 8380,
              "src": "386:44:28",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4463,
                    "name": "Verifiers",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8379,
                    "src": "395:9:28",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/TokenTransferrer.sol",
              "file": "./TokenTransferrer.sol",
              "id": 4466,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5019,
              "sourceUnit": 7982,
              "src": "432:58:28",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 4465,
                    "name": "TokenTransferrer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7981,
                    "src": "441:16:28",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationConstants.sol",
              "file": "./ConsiderationConstants.sol",
              "id": 4467,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5019,
              "sourceUnit": 3809,
              "src": "492:38:28",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 4469,
                    "name": "Verifiers",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8379,
                    "src": "739:9:28"
                  },
                  "id": 4470,
                  "nodeType": "InheritanceSpecifier",
                  "src": "739:9:28"
                },
                {
                  "baseName": {
                    "id": 4471,
                    "name": "TokenTransferrer",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7981,
                    "src": "750:16:28"
                  },
                  "id": 4472,
                  "nodeType": "InheritanceSpecifier",
                  "src": "750:16:28"
                }
              ],
              "canonicalName": "Executor",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 4468,
                "nodeType": "StructuredDocumentation",
                "src": "532:185:28",
                "text": " @title Executor\n @author 0age\n @notice Executor contains functions related to processing executions (i.e.\n         transferring items, either directly or via conduits)."
              },
              "fullyImplemented": true,
              "id": 5018,
              "linearizedBaseContracts": [
                5018,
                7981,
                8379,
                7917,
                5505,
                2227,
                2594,
                2281,
                5561,
                7768,
                2209,
                5465,
                3384,
                1924
              ],
              "name": "Executor",
              "nameLocation": "727:8:28",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 4481,
                    "nodeType": "Block",
                    "src": "1194:2:28",
                    "statements": []
                  },
                  "documentation": {
                    "id": 4473,
                    "nodeType": "StructuredDocumentation",
                    "src": "773:348:28",
                    "text": " @dev Derive and set hashes, reference chainId, and associated domain\n      separator during deployment.\n @param conduitController A contract that deploys conduits, or proxies\n                          that may optionally be used to transfer approved\n                          ERC20/721/1155 tokens."
                  },
                  "id": 4482,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 4478,
                          "name": "conduitController",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4475,
                          "src": "1175:17:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 4479,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 4477,
                        "name": "Verifiers",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 8379,
                        "src": "1165:9:28"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1165:28:28"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4476,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4475,
                        "mutability": "mutable",
                        "name": "conduitController",
                        "nameLocation": "1146:17:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4482,
                        "src": "1138:25:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4474,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1138:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1137:27:28"
                  },
                  "returnParameters": {
                    "id": 4480,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1194:0:28"
                  },
                  "scope": 5018,
                  "src": "1126:70:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 4564,
                    "nodeType": "Block",
                    "src": "2110:1284:28",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_enum$_ItemType_$3854",
                            "typeString": "enum ItemType"
                          },
                          "id": 4499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 4495,
                              "name": "item",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4486,
                              "src": "2189:4:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                "typeString": "struct ReceivedItem memory"
                              }
                            },
                            "id": 4496,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "itemType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3931,
                            "src": "2189:13:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ItemType_$3854",
                              "typeString": "enum ItemType"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 4497,
                              "name": "ItemType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3854,
                              "src": "2206:8:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ItemType_$3854_$",
                                "typeString": "type(enum ItemType)"
                              }
                            },
                            "id": 4498,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "NATIVE",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3848,
                            "src": "2206:15:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ItemType_$3854",
                              "typeString": "enum ItemType"
                            }
                          },
                          "src": "2189:32:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_enum$_ItemType_$3854",
                              "typeString": "enum ItemType"
                            },
                            "id": 4512,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 4508,
                                "name": "item",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4486,
                                "src": "2359:4:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                  "typeString": "struct ReceivedItem memory"
                                }
                              },
                              "id": 4509,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "itemType",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3931,
                              "src": "2359:13:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                "typeString": "enum ItemType"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "expression": {
                                "id": 4510,
                                "name": "ItemType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3854,
                                "src": "2376:8:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ItemType_$3854_$",
                                  "typeString": "type(enum ItemType)"
                                }
                              },
                              "id": 4511,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "ERC20",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3849,
                              "src": "2376:14:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                "typeString": "enum ItemType"
                              }
                            },
                            "src": "2359:31:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                "typeString": "enum ItemType"
                              },
                              "id": 4530,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 4526,
                                  "name": "item",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4486,
                                  "src": "2694:4:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                    "typeString": "struct ReceivedItem memory"
                                  }
                                },
                                "id": 4527,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "itemType",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3931,
                                "src": "2694:13:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ItemType_$3854",
                                  "typeString": "enum ItemType"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 4528,
                                  "name": "ItemType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3854,
                                  "src": "2711:8:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ItemType_$3854_$",
                                    "typeString": "type(enum ItemType)"
                                  }
                                },
                                "id": 4529,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "ERC721",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3850,
                                "src": "2711:15:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ItemType_$3854",
                                  "typeString": "enum ItemType"
                                }
                              },
                              "src": "2694:32:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 4560,
                              "nodeType": "Block",
                              "src": "3060:328:28",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 4547,
                                          "name": "item",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4486,
                                          "src": "3180:4:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                            "typeString": "struct ReceivedItem memory"
                                          }
                                        },
                                        "id": 4548,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "token",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3933,
                                        "src": "3180:10:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 4549,
                                        "name": "from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4488,
                                        "src": "3208:4:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 4550,
                                          "name": "item",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4486,
                                          "src": "3230:4:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                            "typeString": "struct ReceivedItem memory"
                                          }
                                        },
                                        "id": 4551,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "recipient",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3939,
                                        "src": "3230:14:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 4552,
                                          "name": "item",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4486,
                                          "src": "3262:4:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                            "typeString": "struct ReceivedItem memory"
                                          }
                                        },
                                        "id": 4553,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "identifier",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3935,
                                        "src": "3262:15:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 4554,
                                          "name": "item",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4486,
                                          "src": "3295:4:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                            "typeString": "struct ReceivedItem memory"
                                          }
                                        },
                                        "id": 4555,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "amount",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3937,
                                        "src": "3295:11:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 4556,
                                        "name": "conduitKey",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4490,
                                        "src": "3324:10:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "id": 4557,
                                        "name": "accumulator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4492,
                                        "src": "3352:11:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 4546,
                                      "name": "_transferERC1155",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4843,
                                      "src": "3146:16:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                        "typeString": "function (address,address,address,uint256,uint256,bytes32,bytes memory)"
                                      }
                                    },
                                    "id": 4558,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3146:231:28",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 4559,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3146:231:28"
                                }
                              ]
                            },
                            "id": 4561,
                            "nodeType": "IfStatement",
                            "src": "2690:698:28",
                            "trueBody": {
                              "id": 4545,
                              "nodeType": "Block",
                              "src": "2728:326:28",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 4532,
                                          "name": "item",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4486,
                                          "src": "2846:4:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                            "typeString": "struct ReceivedItem memory"
                                          }
                                        },
                                        "id": 4533,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "token",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3933,
                                        "src": "2846:10:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 4534,
                                        "name": "from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4488,
                                        "src": "2874:4:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 4535,
                                          "name": "item",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4486,
                                          "src": "2896:4:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                            "typeString": "struct ReceivedItem memory"
                                          }
                                        },
                                        "id": 4536,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "recipient",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3939,
                                        "src": "2896:14:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 4537,
                                          "name": "item",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4486,
                                          "src": "2928:4:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                            "typeString": "struct ReceivedItem memory"
                                          }
                                        },
                                        "id": 4538,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "identifier",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3935,
                                        "src": "2928:15:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 4539,
                                          "name": "item",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4486,
                                          "src": "2961:4:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                            "typeString": "struct ReceivedItem memory"
                                          }
                                        },
                                        "id": 4540,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "amount",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3937,
                                        "src": "2961:11:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 4541,
                                        "name": "conduitKey",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4490,
                                        "src": "2990:10:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "id": 4542,
                                        "name": "accumulator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4492,
                                        "src": "3018:11:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 4531,
                                      "name": "_transferERC721",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4784,
                                      "src": "2813:15:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                        "typeString": "function (address,address,address,uint256,uint256,bytes32,bytes memory)"
                                      }
                                    },
                                    "id": 4543,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2813:230:28",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 4544,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2813:230:28"
                                }
                              ]
                            }
                          },
                          "id": 4562,
                          "nodeType": "IfStatement",
                          "src": "2355:1033:28",
                          "trueBody": {
                            "id": 4525,
                            "nodeType": "Block",
                            "src": "2392:292:28",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "expression": {
                                        "id": 4514,
                                        "name": "item",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4486,
                                        "src": "2509:4:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                          "typeString": "struct ReceivedItem memory"
                                        }
                                      },
                                      "id": 4515,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "token",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3933,
                                      "src": "2509:10:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 4516,
                                      "name": "from",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4488,
                                      "src": "2537:4:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 4517,
                                        "name": "item",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4486,
                                        "src": "2559:4:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                          "typeString": "struct ReceivedItem memory"
                                        }
                                      },
                                      "id": 4518,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "recipient",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3939,
                                      "src": "2559:14:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    {
                                      "expression": {
                                        "id": 4519,
                                        "name": "item",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4486,
                                        "src": "2591:4:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                          "typeString": "struct ReceivedItem memory"
                                        }
                                      },
                                      "id": 4520,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "amount",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3937,
                                      "src": "2591:11:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    {
                                      "id": 4521,
                                      "name": "conduitKey",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4490,
                                      "src": "2620:10:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "id": 4522,
                                      "name": "accumulator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4492,
                                      "src": "2648:11:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 4513,
                                    "name": "_transferERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4722,
                                    "src": "2477:14:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                      "typeString": "function (address,address,address,uint256,bytes32,bytes memory)"
                                    }
                                  },
                                  "id": 4523,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2477:196:28",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 4524,
                                "nodeType": "ExpressionStatement",
                                "src": "2477:196:28"
                              }
                            ]
                          }
                        },
                        "id": 4563,
                        "nodeType": "IfStatement",
                        "src": "2185:1203:28",
                        "trueBody": {
                          "id": 4507,
                          "nodeType": "Block",
                          "src": "2223:126:28",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 4501,
                                      "name": "item",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4486,
                                      "src": "2310:4:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                        "typeString": "struct ReceivedItem memory"
                                      }
                                    },
                                    "id": 4502,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "recipient",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3939,
                                    "src": "2310:14:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 4503,
                                      "name": "item",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4486,
                                      "src": "2326:4:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                        "typeString": "struct ReceivedItem memory"
                                      }
                                    },
                                    "id": 4504,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3937,
                                    "src": "2326:11:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4500,
                                  "name": "_transferEth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4663,
                                  "src": "2297:12:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                                    "typeString": "function (address payable,uint256)"
                                  }
                                },
                                "id": 4505,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2297:41:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4506,
                              "nodeType": "ExpressionStatement",
                              "src": "2297:41:28"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4483,
                    "nodeType": "StructuredDocumentation",
                    "src": "1202:751:28",
                    "text": " @dev Internal function to transfer a given item, either directly or via\n      a corresponding conduit.\n @param item        The item to transfer, including an amount and a\n                    recipient.\n @param from        The account supplying the item.\n @param conduitKey  A bytes32 value indicating what corresponding conduit,\n                    if any, to source token approvals from. The zero hash\n                    signifies that no conduit should be used, with direct\n                    approvals set on this contract.\n @param accumulator An open-ended array that collects transfers to execute\n                    against a given conduit in a single call."
                  },
                  "id": 4565,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transfer",
                  "nameLocation": "1967:9:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4493,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4486,
                        "mutability": "mutable",
                        "name": "item",
                        "nameLocation": "2006:4:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4565,
                        "src": "1986:24:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                          "typeString": "struct ReceivedItem"
                        },
                        "typeName": {
                          "id": 4485,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 4484,
                            "name": "ReceivedItem",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3940,
                            "src": "1986:12:28"
                          },
                          "referencedDeclaration": 3940,
                          "src": "1986:12:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReceivedItem_$3940_storage_ptr",
                            "typeString": "struct ReceivedItem"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4488,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "2028:4:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4565,
                        "src": "2020:12:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4487,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2020:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4490,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "2050:10:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4565,
                        "src": "2042:18:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4489,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2042:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4492,
                        "mutability": "mutable",
                        "name": "accumulator",
                        "nameLocation": "2083:11:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4565,
                        "src": "2070:24:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4491,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2070:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1976:124:28"
                  },
                  "returnParameters": {
                    "id": 4494,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2110:0:28"
                  },
                  "scope": 5018,
                  "src": "1958:1436:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4633,
                    "nodeType": "Block",
                    "src": "4734:3288:28",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 4589,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4584,
                            "name": "conduitKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4581,
                            "src": "4819:10:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 4587,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4841: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": 4586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4833:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 4585,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "4833:7:28",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4588,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4833:10:28",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4819:24:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4631,
                          "nodeType": "Block",
                          "src": "7375:641:28",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ItemType_$3854",
                                  "typeString": "enum ItemType"
                                },
                                "id": 4604,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4601,
                                  "name": "itemType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4569,
                                  "src": "7470:8:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ItemType_$3854",
                                    "typeString": "enum ItemType"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 4602,
                                    "name": "ItemType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3854,
                                    "src": "7482:8:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ItemType_$3854_$",
                                      "typeString": "type(enum ItemType)"
                                    }
                                  },
                                  "id": 4603,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "ERC721",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3850,
                                  "src": "7482:15:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ItemType_$3854",
                                    "typeString": "enum ItemType"
                                  }
                                },
                                "src": "7470:27:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 4629,
                                "nodeType": "Block",
                                "src": "7844:162:28",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 4622,
                                          "name": "token",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4571,
                                          "src": "7955:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 4623,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4573,
                                          "src": "7962:4:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 4624,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4575,
                                          "src": "7968:2:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 4625,
                                          "name": "identifier",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4577,
                                          "src": "7972:10:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "id": 4626,
                                          "name": "amount",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4579,
                                          "src": "7984:6:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 4621,
                                        "name": "_performERC1155Transfer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7970,
                                        "src": "7931:23:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,address,uint256,uint256)"
                                        }
                                      },
                                      "id": 4627,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7931:60:28",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 4628,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7931:60:28"
                                  }
                                ]
                              },
                              "id": 4630,
                              "nodeType": "IfStatement",
                              "src": "7466:540:28",
                              "trueBody": {
                                "id": 4620,
                                "nodeType": "Block",
                                "src": "7499:339:28",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4607,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 4605,
                                        "name": "amount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4579,
                                        "src": "7595:6:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 4606,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7605:1:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "7595:11:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 4612,
                                    "nodeType": "IfStatement",
                                    "src": "7591:94:28",
                                    "trueBody": {
                                      "id": 4611,
                                      "nodeType": "Block",
                                      "src": "7608:77:28",
                                      "statements": [
                                        {
                                          "errorCall": {
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "id": 4608,
                                              "name": "InvalidERC721TransferAmount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2233,
                                              "src": "7637:27:28",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                                "typeString": "function () pure"
                                              }
                                            },
                                            "id": 4609,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "7637:29:28",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 4610,
                                          "nodeType": "RevertStatement",
                                          "src": "7630:36:28"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 4614,
                                          "name": "token",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4571,
                                          "src": "7795:5:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 4615,
                                          "name": "from",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4573,
                                          "src": "7802:4:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 4616,
                                          "name": "to",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4575,
                                          "src": "7808:2:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 4617,
                                          "name": "identifier",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4577,
                                          "src": "7812:10:28",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 4613,
                                        "name": "_performERC721Transfer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7954,
                                        "src": "7772:22:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                          "typeString": "function (address,address,address,uint256)"
                                        }
                                      },
                                      "id": 4618,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7772:51:28",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 4619,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7772:51:28"
                                  }
                                ]
                              }
                            }
                          ]
                        },
                        "id": 4632,
                        "nodeType": "IfStatement",
                        "src": "4815:3201:28",
                        "trueBody": {
                          "id": 4600,
                          "nodeType": "Block",
                          "src": "4845:2524:28",
                          "statements": [
                            {
                              "assignments": [
                                4591
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 4591,
                                  "mutability": "mutable",
                                  "name": "callDataOffset",
                                  "nameLocation": "4947:14:28",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 4600,
                                  "src": "4939:22:28",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 4590,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4939:7:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 4592,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4939:22:28"
                            },
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "5056:2102:28",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5152:46:28",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "FreeMemoryPointerSlot",
                                          "nodeType": "YulIdentifier",
                                          "src": "5176:21:28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "5170:5:28"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5170:28:28"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "callDataOffset",
                                        "nodeType": "YulIdentifier",
                                        "src": "5152:14:28"
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "callDataOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "5293:14:28"
                                        },
                                        {
                                          "name": "Conduit_execute_signature",
                                          "nodeType": "YulIdentifier",
                                          "src": "5309:25:28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5286:6:28"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5286:49:28"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5286:49:28"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "callDataOffset",
                                              "nodeType": "YulIdentifier",
                                              "src": "5486:14:28"
                                            },
                                            {
                                              "name": "Conduit_execute_ConduitTransfer_offset_ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "5526:42:28"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5457:3:28"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5457:133:28"
                                        },
                                        {
                                          "name": "Conduit_execute_ConduitTransfer_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "5612:35:28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5429:6:28"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5429:236:28"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5429:236:28"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "callDataOffset",
                                              "nodeType": "YulIdentifier",
                                              "src": "5816:14:28"
                                            },
                                            {
                                              "name": "Conduit_execute_ConduitTransfer_length_ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "5856:42:28"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "5787:3:28"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5787:133:28"
                                        },
                                        {
                                          "name": "Conduit_execute_ConduitTransfer_length",
                                          "nodeType": "YulIdentifier",
                                          "src": "5942:38:28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5759:6:28"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5759:239:28"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5759:239:28"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "callDataOffset",
                                              "nodeType": "YulIdentifier",
                                              "src": "6098:14:28"
                                            },
                                            {
                                              "name": "Conduit_execute_transferItemType_ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "6114:36:28"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6094:3:28"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6094:57:28"
                                        },
                                        {
                                          "name": "itemType",
                                          "nodeType": "YulIdentifier",
                                          "src": "6173:8:28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6066:6:28"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6066:133:28"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6066:133:28"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "callDataOffset",
                                              "nodeType": "YulIdentifier",
                                              "src": "6295:14:28"
                                            },
                                            {
                                              "name": "Conduit_execute_transferToken_ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "6311:33:28"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6291:3:28"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6291:54:28"
                                        },
                                        {
                                          "name": "token",
                                          "nodeType": "YulIdentifier",
                                          "src": "6367:5:28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6263:6:28"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6263:127:28"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6263:127:28"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "callDataOffset",
                                              "nodeType": "YulIdentifier",
                                              "src": "6496:14:28"
                                            },
                                            {
                                              "name": "Conduit_execute_transferFrom_ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "6512:32:28"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6492:3:28"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6492:53:28"
                                        },
                                        {
                                          "name": "from",
                                          "nodeType": "YulIdentifier",
                                          "src": "6567:4:28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6464:6:28"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6464:125:28"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6464:125:28"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "callDataOffset",
                                              "nodeType": "YulIdentifier",
                                              "src": "6677:14:28"
                                            },
                                            {
                                              "name": "Conduit_execute_transferTo_ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "6693:30:28"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6673:3:28"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6673:51:28"
                                        },
                                        {
                                          "name": "to",
                                          "nodeType": "YulIdentifier",
                                          "src": "6726:2:28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6666:6:28"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6666:63:28"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6666:63:28"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "callDataOffset",
                                              "nodeType": "YulIdentifier",
                                              "src": "6836:14:28"
                                            },
                                            {
                                              "name": "Conduit_execute_transferIdentifier_ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "6852:38:28"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "6832:3:28"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "6832:59:28"
                                        },
                                        {
                                          "name": "identifier",
                                          "nodeType": "YulIdentifier",
                                          "src": "6913:10:28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "6804:6:28"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "6804:137:28"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "6804:137:28"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "callDataOffset",
                                              "nodeType": "YulIdentifier",
                                              "src": "7047:14:28"
                                            },
                                            {
                                              "name": "Conduit_execute_transferAmount_ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "7063:34:28"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "7043:3:28"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "7043:55:28"
                                        },
                                        {
                                          "name": "amount",
                                          "nodeType": "YulIdentifier",
                                          "src": "7120:6:28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "7015:6:28"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "7015:129:28"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "7015:129:28"
                                  }
                                ]
                              },
                              "evmVersion": "london",
                              "externalReferences": [
                                {
                                  "declaration": 3739,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "5942:38:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3745,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "5856:42:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3742,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "5526:42:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3736,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "5612:35:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3733,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "5309:25:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3763,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "7063:34:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3754,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "6512:32:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3760,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "6852:38:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3748,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "6114:36:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3757,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "6693:30:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3751,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "6311:33:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3500,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "5176:21:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4579,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "7120:6:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4591,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "5152:14:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4591,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "5293:14:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4591,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "5486:14:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4591,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "5816:14:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4591,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "6098:14:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4591,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "6295:14:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4591,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "6496:14:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4591,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "6677:14:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4591,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "6836:14:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4591,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "7047:14:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4573,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "6567:4:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4577,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "6913:10:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4569,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "6173:8:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4575,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "6726:2:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4571,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "6367:5:28",
                                  "valueSize": 1
                                }
                              ],
                              "id": 4593,
                              "nodeType": "InlineAssembly",
                              "src": "5047:2111:28"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4595,
                                    "name": "conduitKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4581,
                                    "src": "7262:10:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 4596,
                                    "name": "callDataOffset",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4591,
                                    "src": "7290:14:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4597,
                                    "name": "OneConduitExecute_size",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3766,
                                    "src": "7322:22:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4594,
                                  "name": "_callConduitUsingOffsets",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4963,
                                  "src": "7220:24:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (bytes32,uint256,uint256)"
                                  }
                                },
                                "id": 4598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7220:138:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4599,
                              "nodeType": "ExpressionStatement",
                              "src": "7220:138:28"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4566,
                    "nodeType": "StructuredDocumentation",
                    "src": "3400:1100:28",
                    "text": " @dev Internal function to transfer an individual ERC721 or ERC1155 item\n      from a given originator to a given recipient. The accumulator will\n      be bypassed, meaning that this function should be utilized in cases\n      where multiple item transfers can be accumulated into a single\n      conduit call. Sufficient approvals must be set, either on the\n      respective conduit or on this contract itself.\n @param itemType   The type of item to transfer, either ERC721 or ERC1155.\n @param token      The token to transfer.\n @param from       The originator of the transfer.\n @param to         The recipient of the transfer.\n @param identifier The tokenId to transfer.\n @param amount     The amount to transfer.\n @param conduitKey A bytes32 value indicating what corresponding conduit,\n                   if any, to source token approvals from. The zero hash\n                   signifies that no conduit should be used, with direct\n                   approvals set on this contract."
                  },
                  "id": 4634,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferIndividual721Or1155Item",
                  "nameLocation": "4514:32:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4582,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4569,
                        "mutability": "mutable",
                        "name": "itemType",
                        "nameLocation": "4565:8:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4634,
                        "src": "4556:17:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ItemType_$3854",
                          "typeString": "enum ItemType"
                        },
                        "typeName": {
                          "id": 4568,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 4567,
                            "name": "ItemType",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3854,
                            "src": "4556:8:28"
                          },
                          "referencedDeclaration": 3854,
                          "src": "4556:8:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ItemType_$3854",
                            "typeString": "enum ItemType"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4571,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "4591:5:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4634,
                        "src": "4583:13:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4570,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4583:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4573,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "4614:4:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4634,
                        "src": "4606:12:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4572,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4606:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4575,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "4636:2:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4634,
                        "src": "4628:10:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4574,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4628:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4577,
                        "mutability": "mutable",
                        "name": "identifier",
                        "nameLocation": "4656:10:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4634,
                        "src": "4648:18:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4576,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4648:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4579,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "4684:6:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4634,
                        "src": "4676:14:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4578,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4676:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4581,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "4708:10:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4634,
                        "src": "4700:18:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4580,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4700:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4546:178:28"
                  },
                  "returnParameters": {
                    "id": 4583,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4734:0:28"
                  },
                  "scope": 5018,
                  "src": "4505:3517:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4662,
                    "nodeType": "Block",
                    "src": "8320:675:28",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4643,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4639,
                              "src": "8407:6:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4642,
                            "name": "_assertNonZeroAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2577,
                            "src": "8386:20:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) pure"
                            }
                          },
                          "id": 4644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8386:28:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4645,
                        "nodeType": "ExpressionStatement",
                        "src": "8386:28:28"
                      },
                      {
                        "assignments": [
                          4647
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4647,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "8511:7:28",
                            "nodeType": "VariableDeclaration",
                            "scope": 4662,
                            "src": "8506:12:28",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4646,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "8506:4:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4648,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8506:12:28"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "8538:136:28",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "8618:46:28",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "gas",
                                      "nodeType": "YulIdentifier",
                                      "src": "8634:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "8634:5:28"
                                  },
                                  {
                                    "name": "to",
                                    "nodeType": "YulIdentifier",
                                    "src": "8641:2:28"
                                  },
                                  {
                                    "name": "amount",
                                    "nodeType": "YulIdentifier",
                                    "src": "8645:6:28"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8653:1:28",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8656:1:28",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8659:1:28",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8662:1:28",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "call",
                                  "nodeType": "YulIdentifier",
                                  "src": "8629:4:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8629:35:28"
                              },
                              "variableNames": [
                                {
                                  "name": "success",
                                  "nodeType": "YulIdentifier",
                                  "src": "8618:7:28"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4639,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8645:6:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4647,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8618:7:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4637,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8641:2:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 4649,
                        "nodeType": "InlineAssembly",
                        "src": "8529:145:28"
                      },
                      {
                        "condition": {
                          "id": 4651,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "8720:8:28",
                          "subExpression": {
                            "id": 4650,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4647,
                            "src": "8721:7:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4661,
                        "nodeType": "IfStatement",
                        "src": "8716:273:28",
                        "trueBody": {
                          "id": 4660,
                          "nodeType": "Block",
                          "src": "8730:259:28",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 4652,
                                  "name": "_revertWithReasonIfOneIsReturned",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5487,
                                  "src": "8820:32:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$__$",
                                    "typeString": "function () view"
                                  }
                                },
                                "id": 4653,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8820:34:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4654,
                              "nodeType": "ExpressionStatement",
                              "src": "8820:34:28"
                            },
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 4656,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4637,
                                    "src": "8967:2:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 4657,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4639,
                                    "src": "8971:6:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4655,
                                  "name": "EtherTransferGenericFailure",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1893,
                                  "src": "8939:27:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,uint256) pure"
                                  }
                                },
                                "id": 4658,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "8939:39:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4659,
                              "nodeType": "RevertStatement",
                              "src": "8932:46:28"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4635,
                    "nodeType": "StructuredDocumentation",
                    "src": "8028:220:28",
                    "text": " @dev Internal function to transfer Ether or other native tokens to a\n      given recipient.\n @param to     The recipient of the transfer.\n @param amount The amount to transfer."
                  },
                  "id": 4663,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferEth",
                  "nameLocation": "8262:12:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4640,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4637,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "8291:2:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4663,
                        "src": "8275:18:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "typeName": {
                          "id": 4636,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "8275:15:28",
                          "stateMutability": "payable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4639,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "8303:6:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4663,
                        "src": "8295:14:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4638,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8295:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8274:36:28"
                  },
                  "returnParameters": {
                    "id": 4641,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8320:0:28"
                  },
                  "scope": 5018,
                  "src": "8253:742:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4721,
                    "nodeType": "Block",
                    "src": "10121:768:28",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4680,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4672,
                              "src": "10208:6:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4679,
                            "name": "_assertNonZeroAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2577,
                            "src": "10187:20:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) pure"
                            }
                          },
                          "id": 4681,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10187:28:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4682,
                        "nodeType": "ExpressionStatement",
                        "src": "10187:28:28"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4684,
                              "name": "accumulator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4676,
                              "src": "10326:11:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 4685,
                              "name": "conduitKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4674,
                              "src": "10339:10:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 4683,
                            "name": "_triggerIfArmedAndNotAccumulatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4867,
                            "src": "10291:34:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes memory,bytes32)"
                            }
                          },
                          "id": 4686,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10291:59:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4687,
                        "nodeType": "ExpressionStatement",
                        "src": "10291:59:28"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 4693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4688,
                            "name": "conduitKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4674,
                            "src": "10412:10:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 4691,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10434: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": 4690,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10426:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 4689,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "10426:7:28",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4692,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10426:10:28",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "10412:24:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4719,
                          "nodeType": "Block",
                          "src": "10567:316:28",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4703,
                                    "name": "conduitKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4674,
                                    "src": "10674:10:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 4704,
                                    "name": "accumulator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4676,
                                    "src": "10702:11:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "31",
                                        "id": 4707,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10739:1:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "id": 4706,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10731:7:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 4705,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10731:7:28",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4708,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10731:10:28",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4709,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4666,
                                    "src": "10759:5:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4710,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4668,
                                    "src": "10782:4:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4711,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4670,
                                    "src": "10804:2:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 4714,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "10832: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": 4713,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "10824:7:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 4712,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "10824:7:28",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4715,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "10824:10:28",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4716,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4672,
                                    "src": "10852:6:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4702,
                                  "name": "_insert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5017,
                                  "src": "10649:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (bytes32,bytes memory,uint256,address,address,address,uint256,uint256) pure"
                                  }
                                },
                                "id": 4717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10649:223:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4718,
                              "nodeType": "ExpressionStatement",
                              "src": "10649:223:28"
                            }
                          ]
                        },
                        "id": 4720,
                        "nodeType": "IfStatement",
                        "src": "10408:475:28",
                        "trueBody": {
                          "id": 4701,
                          "nodeType": "Block",
                          "src": "10438:123:28",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4695,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4666,
                                    "src": "10526:5:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4696,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4668,
                                    "src": "10533:4:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4697,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4670,
                                    "src": "10539:2:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4698,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4672,
                                    "src": "10543:6:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4694,
                                  "name": "_performERC20Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7940,
                                  "src": "10504:21:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256)"
                                  }
                                },
                                "id": 4699,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "10504:46:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4700,
                              "nodeType": "ExpressionStatement",
                              "src": "10504:46:28"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4664,
                    "nodeType": "StructuredDocumentation",
                    "src": "9001:925:28",
                    "text": " @dev Internal function to transfer ERC20 tokens from a given originator\n      to a given recipient using a given conduit if applicable. Sufficient\n      approvals must be set on this contract or on a respective conduit.\n @param token       The ERC20 token to transfer.\n @param from        The originator of the transfer.\n @param to          The recipient of the transfer.\n @param amount      The amount to transfer.\n @param conduitKey  A bytes32 value indicating what corresponding conduit,\n                    if any, to source token approvals from. The zero hash\n                    signifies that no conduit should be used, with direct\n                    approvals set on this contract.\n @param accumulator An open-ended array that collects transfers to execute\n                    against a given conduit in a single call."
                  },
                  "id": 4722,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferERC20",
                  "nameLocation": "9940:14:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4677,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4666,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "9972:5:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4722,
                        "src": "9964:13:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4665,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9964:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4668,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "9995:4:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4722,
                        "src": "9987:12:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4667,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9987:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4670,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "10017:2:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4722,
                        "src": "10009:10:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4669,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10009:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4672,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "10037:6:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4722,
                        "src": "10029:14:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4671,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10029:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4674,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "10061:10:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4722,
                        "src": "10053:18:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4673,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "10053:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4676,
                        "mutability": "mutable",
                        "name": "accumulator",
                        "nameLocation": "10094:11:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4722,
                        "src": "10081:24:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4675,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "10081:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9954:157:28"
                  },
                  "returnParameters": {
                    "id": 4678,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10121:0:28"
                  },
                  "scope": 5018,
                  "src": "9931:958:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4783,
                    "nodeType": "Block",
                    "src": "12109:861:28",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4741,
                              "name": "accumulator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4737,
                              "src": "12219:11:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 4742,
                              "name": "conduitKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4735,
                              "src": "12232:10:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 4740,
                            "name": "_triggerIfArmedAndNotAccumulatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4867,
                            "src": "12184:34:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes memory,bytes32)"
                            }
                          },
                          "id": 4743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12184:59:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4744,
                        "nodeType": "ExpressionStatement",
                        "src": "12184:59:28"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 4750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4745,
                            "name": "conduitKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4735,
                            "src": "12305:10:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 4748,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12327: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": 4747,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12319:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 4746,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "12319:7:28",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4749,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12319:10:28",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "12305:24:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4781,
                          "nodeType": "Block",
                          "src": "12648:316:28",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4768,
                                    "name": "conduitKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4735,
                                    "src": "12755:10:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 4769,
                                    "name": "accumulator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4737,
                                    "src": "12783:11:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "32",
                                        "id": 4772,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12820:1:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        }
                                      ],
                                      "id": 4771,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "12812:7:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 4770,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12812:7:28",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4773,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12812:10:28",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4774,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4725,
                                    "src": "12840:5:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4775,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4727,
                                    "src": "12863:4:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4776,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4729,
                                    "src": "12885:2:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4777,
                                    "name": "identifier",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4731,
                                    "src": "12905:10:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4778,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4733,
                                    "src": "12933:6:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4767,
                                  "name": "_insert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5017,
                                  "src": "12730:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (bytes32,bytes memory,uint256,address,address,address,uint256,uint256) pure"
                                  }
                                },
                                "id": 4779,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12730:223:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4780,
                              "nodeType": "ExpressionStatement",
                              "src": "12730:223:28"
                            }
                          ]
                        },
                        "id": 4782,
                        "nodeType": "IfStatement",
                        "src": "12301:663:28",
                        "trueBody": {
                          "id": 4766,
                          "nodeType": "Block",
                          "src": "12331:311:28",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4753,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 4751,
                                  "name": "amount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4733,
                                  "src": "12419:6:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 4752,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12429:1:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "12419:11:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 4758,
                              "nodeType": "IfStatement",
                              "src": "12415:86:28",
                              "trueBody": {
                                "id": 4757,
                                "nodeType": "Block",
                                "src": "12432:69:28",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 4754,
                                        "name": "InvalidERC721TransferAmount",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2233,
                                        "src": "12457:27:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 4755,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12457:29:28",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 4756,
                                    "nodeType": "RevertStatement",
                                    "src": "12450:36:28"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4760,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4725,
                                    "src": "12603:5:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4761,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4727,
                                    "src": "12610:4:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4762,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4729,
                                    "src": "12616:2:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4763,
                                    "name": "identifier",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4731,
                                    "src": "12620:10:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4759,
                                  "name": "_performERC721Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7954,
                                  "src": "12580:22:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256)"
                                  }
                                },
                                "id": 4764,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12580:51:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4765,
                              "nodeType": "ExpressionStatement",
                              "src": "12580:51:28"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4723,
                    "nodeType": "StructuredDocumentation",
                    "src": "10895:990:28",
                    "text": " @dev Internal function to transfer a single ERC721 token from a given\n      originator to a given recipient. Sufficient approvals must be set,\n      either on the respective conduit or on this contract itself.\n @param token       The ERC721 token to transfer.\n @param from        The originator of the transfer.\n @param to          The recipient of the transfer.\n @param identifier  The tokenId to transfer (must be 1 for ERC721).\n @param amount      The amount to transfer.\n @param conduitKey  A bytes32 value indicating what corresponding conduit,\n                    if any, to source token approvals from. The zero hash\n                    signifies that no conduit should be used, with direct\n                    approvals set on this contract.\n @param accumulator An open-ended array that collects transfers to execute\n                    against a given conduit in a single call."
                  },
                  "id": 4784,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferERC721",
                  "nameLocation": "11899:15:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4738,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4725,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "11932:5:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4784,
                        "src": "11924:13:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4724,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11924:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4727,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "11955:4:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4784,
                        "src": "11947:12:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4726,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11947:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4729,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "11977:2:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4784,
                        "src": "11969:10:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4728,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11969:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4731,
                        "mutability": "mutable",
                        "name": "identifier",
                        "nameLocation": "11997:10:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4784,
                        "src": "11989:18:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4730,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "11989:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4733,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "12025:6:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4784,
                        "src": "12017:14:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4732,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "12017:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4735,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "12049:10:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4784,
                        "src": "12041:18:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4734,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12041:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4737,
                        "mutability": "mutable",
                        "name": "accumulator",
                        "nameLocation": "12082:11:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4784,
                        "src": "12069:24:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4736,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "12069:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11914:185:28"
                  },
                  "returnParameters": {
                    "id": 4739,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "12109:0:28"
                  },
                  "scope": 5018,
                  "src": "11890:1080:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4842,
                    "nodeType": "Block",
                    "src": "14157:795:28",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4803,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4795,
                              "src": "14244:6:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4802,
                            "name": "_assertNonZeroAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2577,
                            "src": "14223:20:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$",
                              "typeString": "function (uint256) pure"
                            }
                          },
                          "id": 4804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14223:28:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4805,
                        "nodeType": "ExpressionStatement",
                        "src": "14223:28:28"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4807,
                              "name": "accumulator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4799,
                              "src": "14362:11:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "id": 4808,
                              "name": "conduitKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4797,
                              "src": "14375:10:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 4806,
                            "name": "_triggerIfArmedAndNotAccumulatable",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4867,
                            "src": "14327:34:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes memory,bytes32)"
                            }
                          },
                          "id": 4809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14327:59:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4810,
                        "nodeType": "ExpressionStatement",
                        "src": "14327:59:28"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 4816,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4811,
                            "name": "conduitKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4797,
                            "src": "14448:10:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 4814,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14470: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": 4813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14462:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 4812,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "14462:7:28",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 4815,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14462:10:28",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "14448:24:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 4840,
                          "nodeType": "Block",
                          "src": "14630:316:28",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4827,
                                    "name": "conduitKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4797,
                                    "src": "14737:10:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 4828,
                                    "name": "accumulator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4799,
                                    "src": "14765:11:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "33",
                                        "id": 4831,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14802:1:28",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_3_by_1",
                                          "typeString": "int_const 3"
                                        },
                                        "value": "3"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_3_by_1",
                                          "typeString": "int_const 3"
                                        }
                                      ],
                                      "id": 4830,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "14794:7:28",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 4829,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "14794:7:28",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 4832,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14794:10:28",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4833,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4787,
                                    "src": "14822:5:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4834,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4789,
                                    "src": "14845:4:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4835,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4791,
                                    "src": "14867:2:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4836,
                                    "name": "identifier",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4793,
                                    "src": "14887:10:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4837,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4795,
                                    "src": "14915:6:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4826,
                                  "name": "_insert",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5017,
                                  "src": "14712:7:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (bytes32,bytes memory,uint256,address,address,address,uint256,uint256) pure"
                                  }
                                },
                                "id": 4838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14712:223:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4839,
                              "nodeType": "ExpressionStatement",
                              "src": "14712:223:28"
                            }
                          ]
                        },
                        "id": 4841,
                        "nodeType": "IfStatement",
                        "src": "14444:502:28",
                        "trueBody": {
                          "id": 4825,
                          "nodeType": "Block",
                          "src": "14474:150:28",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4818,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4787,
                                    "src": "14577:5:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4819,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4789,
                                    "src": "14584:4:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4820,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4791,
                                    "src": "14590:2:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 4821,
                                    "name": "identifier",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4793,
                                    "src": "14594:10:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 4822,
                                    "name": "amount",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4795,
                                    "src": "14606:6:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 4817,
                                  "name": "_performERC1155Transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7970,
                                  "src": "14553:23:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (address,address,address,uint256,uint256)"
                                  }
                                },
                                "id": 4823,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14553:60:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4824,
                              "nodeType": "ExpressionStatement",
                              "src": "14553:60:28"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4785,
                    "nodeType": "StructuredDocumentation",
                    "src": "12976:956:28",
                    "text": " @dev Internal function to transfer ERC1155 tokens from a given originator\n      to a given recipient. Sufficient approvals must be set, either on\n      the respective conduit or on this contract itself.\n @param token       The ERC1155 token to transfer.\n @param from        The originator of the transfer.\n @param to          The recipient of the transfer.\n @param identifier  The id to transfer.\n @param amount      The amount to transfer.\n @param conduitKey  A bytes32 value indicating what corresponding conduit,\n                    if any, to source token approvals from. The zero hash\n                    signifies that no conduit should be used, with direct\n                    approvals set on this contract.\n @param accumulator An open-ended array that collects transfers to execute\n                    against a given conduit in a single call."
                  },
                  "id": 4843,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_transferERC1155",
                  "nameLocation": "13946:16:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4800,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4787,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "13980:5:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4843,
                        "src": "13972:13:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4786,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13972:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4789,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "14003:4:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4843,
                        "src": "13995:12:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4788,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13995:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4791,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "14025:2:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4843,
                        "src": "14017:10:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4790,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14017:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4793,
                        "mutability": "mutable",
                        "name": "identifier",
                        "nameLocation": "14045:10:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4843,
                        "src": "14037:18:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4792,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14037:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4795,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "14073:6:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4843,
                        "src": "14065:14:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4794,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "14065:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4797,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "14097:10:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4843,
                        "src": "14089:18:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4796,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "14089:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4799,
                        "mutability": "mutable",
                        "name": "accumulator",
                        "nameLocation": "14130:11:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4843,
                        "src": "14117:24:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4798,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "14117:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13962:185:28"
                  },
                  "returnParameters": {
                    "id": 4801,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "14157:0:28"
                  },
                  "scope": 5018,
                  "src": "13937:1015:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4866,
                    "nodeType": "Block",
                    "src": "15824:337:28",
                    "statements": [
                      {
                        "assignments": [
                          4852
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4852,
                            "mutability": "mutable",
                            "name": "accumulatorConduitKey",
                            "nameLocation": "15908:21:28",
                            "nodeType": "VariableDeclaration",
                            "scope": 4866,
                            "src": "15900:29:28",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 4851,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "15900:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4856,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4854,
                              "name": "accumulator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4846,
                              "src": "15958:11:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4853,
                            "name": "_getAccumulatorConduitKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4973,
                            "src": "15932:25:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 4855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15932:38:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "15900:70:28"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "id": 4859,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4857,
                            "name": "accumulatorConduitKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4852,
                            "src": "16065:21:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 4858,
                            "name": "conduitKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4848,
                            "src": "16090:10:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "16065:35:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4865,
                        "nodeType": "IfStatement",
                        "src": "16061:94:28",
                        "trueBody": {
                          "id": 4864,
                          "nodeType": "Block",
                          "src": "16102:53:28",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 4861,
                                    "name": "accumulator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4846,
                                    "src": "16132:11:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 4860,
                                  "name": "_triggerIfArmed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4892,
                                  "src": "16116:15:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (bytes memory)"
                                  }
                                },
                                "id": 4862,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16116:28:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4863,
                              "nodeType": "ExpressionStatement",
                              "src": "16116:28:28"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4844,
                    "nodeType": "StructuredDocumentation",
                    "src": "14958:740:28",
                    "text": " @dev Internal function to trigger a call to the conduit currently held by\n      the accumulator if the accumulator contains item transfers (i.e. it\n      is \"armed\") and the supplied conduit key does not match the key held\n      by the accumulator.\n @param accumulator An open-ended array that collects transfers to execute\n                    against a given conduit in a single call.\n @param conduitKey  A bytes32 value indicating what corresponding conduit,\n                    if any, to source token approvals from. The zero hash\n                    signifies that no conduit should be used, with direct\n                    approvals set on this contract."
                  },
                  "id": 4867,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_triggerIfArmedAndNotAccumulatable",
                  "nameLocation": "15712:34:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4849,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4846,
                        "mutability": "mutable",
                        "name": "accumulator",
                        "nameLocation": "15769:11:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4867,
                        "src": "15756:24:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4845,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "15756:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4848,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "15798:10:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4867,
                        "src": "15790:18:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4847,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "15790:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15746:68:28"
                  },
                  "returnParameters": {
                    "id": 4850,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15824:0:28"
                  },
                  "scope": 5018,
                  "src": "15703:458:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4891,
                    "nodeType": "Block",
                    "src": "16585:363:28",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4876,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 4873,
                              "name": "accumulator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4870,
                              "src": "16650:11:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 4874,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "16650:18:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "3634",
                            "id": 4875,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16672:2:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_64_by_1",
                              "typeString": "int_const 64"
                            },
                            "value": "64"
                          },
                          "src": "16650:24:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4879,
                        "nodeType": "IfStatement",
                        "src": "16646:61:28",
                        "trueBody": {
                          "id": 4878,
                          "nodeType": "Block",
                          "src": "16676:31:28",
                          "statements": [
                            {
                              "functionReturnParameters": 4872,
                              "id": 4877,
                              "nodeType": "Return",
                              "src": "16690:7:28"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          4881
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4881,
                            "mutability": "mutable",
                            "name": "accumulatorConduitKey",
                            "nameLocation": "16791:21:28",
                            "nodeType": "VariableDeclaration",
                            "scope": 4891,
                            "src": "16783:29:28",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 4880,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "16783:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4885,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4883,
                              "name": "accumulator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4870,
                              "src": "16841:11:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 4882,
                            "name": "_getAccumulatorConduitKey",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4973,
                            "src": "16815:25:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 4884,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16815:38:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16783:70:28"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4887,
                              "name": "accumulatorConduitKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4881,
                              "src": "16906:21:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 4888,
                              "name": "accumulator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4870,
                              "src": "16929:11:28",
                              "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": 4886,
                            "name": "_trigger",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4915,
                            "src": "16897:8:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,bytes memory)"
                            }
                          },
                          "id": 4889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16897:44:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4890,
                        "nodeType": "ExpressionStatement",
                        "src": "16897:44:28"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4868,
                    "nodeType": "StructuredDocumentation",
                    "src": "16167:353:28",
                    "text": " @dev Internal function to trigger a call to the conduit currently held by\n      the accumulator if the accumulator contains item transfers (i.e. it\n      is \"armed\").\n @param accumulator An open-ended array that collects transfers to execute\n                    against a given conduit in a single call."
                  },
                  "id": 4892,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_triggerIfArmed",
                  "nameLocation": "16534:15:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4871,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4870,
                        "mutability": "mutable",
                        "name": "accumulator",
                        "nameLocation": "16563:11:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4892,
                        "src": "16550:24:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4869,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "16550:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16549:26:28"
                  },
                  "returnParameters": {
                    "id": 4872,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16585:0:28"
                  },
                  "scope": 5018,
                  "src": "16525:423:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4914,
                    "nodeType": "Block",
                    "src": "17726:1040:28",
                    "statements": [
                      {
                        "assignments": [
                          4901
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4901,
                            "mutability": "mutable",
                            "name": "callDataOffset",
                            "nameLocation": "17825:14:28",
                            "nodeType": "VariableDeclaration",
                            "scope": 4914,
                            "src": "17817:22:28",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4900,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17817:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4902,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17817:22:28"
                      },
                      {
                        "assignments": [
                          4904
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4904,
                            "mutability": "mutable",
                            "name": "callDataSize",
                            "nameLocation": "17857:12:28",
                            "nodeType": "VariableDeclaration",
                            "scope": 4914,
                            "src": "17849:20:28",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4903,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "17849:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4905,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17849:20:28"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "17953:493:28",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18106:44:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "accumulator",
                                    "nodeType": "YulIdentifier",
                                    "src": "18128:11:28"
                                  },
                                  {
                                    "name": "TwoWords",
                                    "nodeType": "YulIdentifier",
                                    "src": "18141:8:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18124:3:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18124:26:28"
                              },
                              "variableNames": [
                                {
                                  "name": "callDataOffset",
                                  "nodeType": "YulIdentifier",
                                  "src": "18106:14:28"
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "18196:240:28",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "Accumulator_array_offset_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "18233:28:28"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "accumulator",
                                                "nodeType": "YulIdentifier",
                                                "src": "18314:11:28"
                                              },
                                              {
                                                "name": "Accumulator_array_length_ptr",
                                                "nodeType": "YulIdentifier",
                                                "src": "18327:28:28"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "18310:3:28"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "18310:46:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "18304:5:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18304:53:28"
                                      },
                                      {
                                        "name": "Conduit_transferItem_size",
                                        "nodeType": "YulIdentifier",
                                        "src": "18379:25:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "18279:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18279:143:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "18212:3:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18212:224:28"
                              },
                              "variableNames": [
                                {
                                  "name": "callDataSize",
                                  "nodeType": "YulIdentifier",
                                  "src": "18196:12:28"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3784,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18327:28:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3781,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18233:28:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3793,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18379:25:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3488,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18141:8:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4897,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18128:11:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4897,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18314:11:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4901,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18106:14:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4904,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18196:12:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 4906,
                        "nodeType": "InlineAssembly",
                        "src": "17944:502:28"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 4908,
                              "name": "conduitKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4895,
                              "src": "18562:10:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 4909,
                              "name": "callDataOffset",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4901,
                              "src": "18574:14:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 4910,
                              "name": "callDataSize",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4904,
                              "src": "18590:12:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 4907,
                            "name": "_callConduitUsingOffsets",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4963,
                            "src": "18537:24:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (bytes32,uint256,uint256)"
                            }
                          },
                          "id": 4911,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18537:66:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4912,
                        "nodeType": "ExpressionStatement",
                        "src": "18537:66:28"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "18696:64:28",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "accumulator",
                                    "nodeType": "YulIdentifier",
                                    "src": "18717:11:28"
                                  },
                                  {
                                    "name": "AccumulatorDisarmed",
                                    "nodeType": "YulIdentifier",
                                    "src": "18730:19:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18710:6:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18710:40:28"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18710:40:28"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3769,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18730:19:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4897,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18717:11:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 4913,
                        "nodeType": "InlineAssembly",
                        "src": "18687:73:28"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4893,
                    "nodeType": "StructuredDocumentation",
                    "src": "16954:694:28",
                    "text": " @dev Internal function to trigger a call to the conduit corresponding to\n      a given conduit key, supplying all accumulated item transfers. The\n      accumulator will be \"disarmed\" and reset in the process.\n @param conduitKey  A bytes32 value indicating what corresponding conduit,\n                    if any, to source token approvals from. The zero hash\n                    signifies that no conduit should be used, with direct\n                    approvals set on this contract.\n @param accumulator An open-ended array that collects transfers to execute\n                    against a given conduit in a single call."
                  },
                  "id": 4915,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_trigger",
                  "nameLocation": "17662:8:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4898,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4895,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "17679:10:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4915,
                        "src": "17671:18:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4894,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "17671:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4897,
                        "mutability": "mutable",
                        "name": "accumulator",
                        "nameLocation": "17704:11:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4915,
                        "src": "17691:24:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4896,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "17691:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17670:46:28"
                  },
                  "returnParameters": {
                    "id": 4899,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "17726:0:28"
                  },
                  "scope": 5018,
                  "src": "17653:1113:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4962,
                    "nodeType": "Block",
                    "src": "19575:1314:28",
                    "statements": [
                      {
                        "assignments": [
                          4926
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4926,
                            "mutability": "mutable",
                            "name": "conduit",
                            "nameLocation": "19661:7:28",
                            "nodeType": "VariableDeclaration",
                            "scope": 4962,
                            "src": "19653:15:28",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 4925,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "19653:7:28",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4930,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 4928,
                              "name": "conduitKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4918,
                              "src": "19686:10:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 4927,
                            "name": "_deriveConduit",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5405,
                            "src": "19671:14:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view returns (address)"
                            }
                          },
                          "id": 4929,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "19671:26:28",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19653:44:28"
                      },
                      {
                        "assignments": [
                          4932
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4932,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "19713:7:28",
                            "nodeType": "VariableDeclaration",
                            "scope": 4962,
                            "src": "19708:12:28",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 4931,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "19708:4:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4933,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "19708:12:28"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "19769:393:28",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19850:1:28",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19853:1:28",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "19843:6:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19843:12:28"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "19843:12:28"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "19950:202:28",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "gas",
                                      "nodeType": "YulIdentifier",
                                      "src": "19983:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "19983:5:28"
                                  },
                                  {
                                    "name": "conduit",
                                    "nodeType": "YulIdentifier",
                                    "src": "20006:7:28"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20031:1:28",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "callDataOffset",
                                    "nodeType": "YulIdentifier",
                                    "src": "20050:14:28"
                                  },
                                  {
                                    "name": "callDataSize",
                                    "nodeType": "YulIdentifier",
                                    "src": "20082:12:28"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20112:1:28",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "OneWord",
                                    "nodeType": "YulIdentifier",
                                    "src": "20131:7:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "call",
                                  "nodeType": "YulIdentifier",
                                  "src": "19961:4:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "19961:191:28"
                              },
                              "variableNames": [
                                {
                                  "name": "success",
                                  "nodeType": "YulIdentifier",
                                  "src": "19950:7:28"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20131:7:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4920,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20050:14:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4922,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20082:12:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4926,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20006:7:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4932,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19950:7:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 4934,
                        "nodeType": "InlineAssembly",
                        "src": "19760:402:28"
                      },
                      {
                        "condition": {
                          "id": 4936,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "20209:8:28",
                          "subExpression": {
                            "id": 4935,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4932,
                            "src": "20210:7:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4945,
                        "nodeType": "IfStatement",
                        "src": "20205:254:28",
                        "trueBody": {
                          "id": 4944,
                          "nodeType": "Block",
                          "src": "20219:240:28",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 4937,
                                  "name": "_revertWithReasonIfOneIsReturned",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5487,
                                  "src": "20308:32:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$__$",
                                    "typeString": "function () view"
                                  }
                                },
                                "id": 4938,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20308:34:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4939,
                              "nodeType": "ExpressionStatement",
                              "src": "20308:34:28"
                            },
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 4941,
                                    "name": "conduit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4926,
                                    "src": "20440:7:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4940,
                                  "name": "InvalidCallToConduit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1874,
                                  "src": "20419:20:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
                                    "typeString": "function (address) pure"
                                  }
                                },
                                "id": 4942,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20419:29:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4943,
                              "nodeType": "RevertStatement",
                              "src": "20412:36:28"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          4947
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4947,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "20545:6:28",
                            "nodeType": "VariableDeclaration",
                            "scope": 4962,
                            "src": "20538:13:28",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 4946,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "20538:6:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4948,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "20538:13:28"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "20570:114:28",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "20656:18:28",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20672:1:28",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "20666:5:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20666:8:28"
                              },
                              "variableNames": [
                                {
                                  "name": "result",
                                  "nodeType": "YulIdentifier",
                                  "src": "20656:6:28"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 4947,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20656:6:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 4949,
                        "nodeType": "InlineAssembly",
                        "src": "20561:123:28"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 4954,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 4950,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4947,
                            "src": "20771:6:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 4951,
                                "name": "ConduitInterface",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1801,
                                "src": "20781:16:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_ConduitInterface_$1801_$",
                                  "typeString": "type(contract ConduitInterface)"
                                }
                              },
                              "id": 4952,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "execute",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 1768,
                              "src": "20781:24:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_declaration_nonpayable$_t_array$_t_struct$_ConduitTransfer_$1469_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes4_$",
                                "typeString": "function ConduitInterface.execute(struct ConduitTransfer calldata[] calldata) returns (bytes4)"
                              }
                            },
                            "id": 4953,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "selector",
                            "nodeType": "MemberAccess",
                            "src": "20781:33:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "20771:43:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4961,
                        "nodeType": "IfStatement",
                        "src": "20767:116:28",
                        "trueBody": {
                          "id": 4960,
                          "nodeType": "Block",
                          "src": "20816:67:28",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 4956,
                                    "name": "conduitKey",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4918,
                                    "src": "20852:10:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 4957,
                                    "name": "conduit",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4926,
                                    "src": "20864:7:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4955,
                                  "name": "InvalidConduit",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1866,
                                  "src": "20837:14:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$_t_address_$returns$__$",
                                    "typeString": "function (bytes32,address) pure"
                                  }
                                },
                                "id": 4958,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20837:35:28",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4959,
                              "nodeType": "RevertStatement",
                              "src": "20830:42:28"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4916,
                    "nodeType": "StructuredDocumentation",
                    "src": "18772:659:28",
                    "text": " @dev Internal function to perform a call to the conduit corresponding to\n      a given conduit key based on the offset and size of the calldata in\n      question in memory.\n @param conduitKey     A bytes32 value indicating what corresponding\n                       conduit, if any, to source token approvals from.\n                       The zero hash signifies that no conduit should be\n                       used, with direct approvals set on this contract.\n @param callDataOffset The memory pointer where calldata is contained.\n @param callDataSize   The size of calldata in memory."
                  },
                  "id": 4963,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callConduitUsingOffsets",
                  "nameLocation": "19445:24:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4923,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4918,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "19487:10:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4963,
                        "src": "19479:18:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4917,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "19479:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4920,
                        "mutability": "mutable",
                        "name": "callDataOffset",
                        "nameLocation": "19515:14:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4963,
                        "src": "19507:22:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4919,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19507:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4922,
                        "mutability": "mutable",
                        "name": "callDataSize",
                        "nameLocation": "19547:12:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4963,
                        "src": "19539:20:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4921,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "19539:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "19469:96:28"
                  },
                  "returnParameters": {
                    "id": 4924,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "19575:0:28"
                  },
                  "scope": 5018,
                  "src": "19436:1453:28",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 4972,
                    "nodeType": "Block",
                    "src": "21450:221:28",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "21535:130:28",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "21549:106:28",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "accumulator",
                                        "nodeType": "YulIdentifier",
                                        "src": "21601:11:28"
                                      },
                                      {
                                        "name": "Accumulator_conduitKey_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "21614:26:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "21597:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21597:44:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21574:5:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21574:81:28"
                              },
                              "variableNames": [
                                {
                                  "name": "accumulatorConduitKey",
                                  "nodeType": "YulIdentifier",
                                  "src": "21549:21:28"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3775,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "21614:26:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4966,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "21601:11:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4969,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "21549:21:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 4971,
                        "nodeType": "InlineAssembly",
                        "src": "21526:139:28"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4964,
                    "nodeType": "StructuredDocumentation",
                    "src": "20895:407:28",
                    "text": " @dev Internal pure function to retrieve the current conduit key set for\n      the accumulator.\n @param accumulator An open-ended array that collects transfers to execute\n                    against a given conduit in a single call.\n @return accumulatorConduitKey The conduit key currently set for the\n                               accumulator."
                  },
                  "id": 4973,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getAccumulatorConduitKey",
                  "nameLocation": "21316:25:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4967,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4966,
                        "mutability": "mutable",
                        "name": "accumulator",
                        "nameLocation": "21355:11:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4973,
                        "src": "21342:24:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4965,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "21342:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21341:26:28"
                  },
                  "returnParameters": {
                    "id": 4970,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4969,
                        "mutability": "mutable",
                        "name": "accumulatorConduitKey",
                        "nameLocation": "21423:21:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 4973,
                        "src": "21415:29:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4968,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "21415:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21414:31:28"
                  },
                  "scope": 5018,
                  "src": "21307:364:28",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5016,
                    "nodeType": "Block",
                    "src": "22909:1904:28",
                    "statements": [
                      {
                        "assignments": [
                          4994
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4994,
                            "mutability": "mutable",
                            "name": "elements",
                            "nameLocation": "22927:8:28",
                            "nodeType": "VariableDeclaration",
                            "scope": 5016,
                            "src": "22919:16:28",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 4993,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "22919:7:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 4995,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "22919:16:28"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 4999,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 4996,
                              "name": "accumulator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4978,
                              "src": "23093:11:28",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 4997,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "23093:18:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "id": 4998,
                            "name": "AccumulatorDisarmed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3769,
                            "src": "23115:19:28",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "23093:41:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 5013,
                          "nodeType": "Block",
                          "src": "23755:343:28",
                          "statements": [
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "23844:244:28",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "23862:131:28",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "accumulator",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "23909:11:28"
                                                },
                                                {
                                                  "name": "Accumulator_array_length_ptr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "23922:28:28"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "23905:3:28"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "23905:46:28"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "23899:5:28"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23899:53:28"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "23974:1:28",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "23874:3:28"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23874:119:28"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "elements",
                                        "nodeType": "YulIdentifier",
                                        "src": "23862:8:28"
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "accumulator",
                                              "nodeType": "YulIdentifier",
                                              "src": "24021:11:28"
                                            },
                                            {
                                              "name": "Accumulator_array_length_ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "24034:28:28"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "24017:3:28"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24017:46:28"
                                        },
                                        {
                                          "name": "elements",
                                          "nodeType": "YulIdentifier",
                                          "src": "24065:8:28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "24010:6:28"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24010:64:28"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24010:64:28"
                                  }
                                ]
                              },
                              "evmVersion": "london",
                              "externalReferences": [
                                {
                                  "declaration": 3784,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "23922:28:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3784,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "24034:28:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4978,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "23909:11:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4978,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "24021:11:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4994,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "23862:8:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4994,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "24065:8:28",
                                  "valueSize": 1
                                }
                              ],
                              "id": 5012,
                              "nodeType": "InlineAssembly",
                              "src": "23835:253:28"
                            }
                          ]
                        },
                        "id": 5014,
                        "nodeType": "IfStatement",
                        "src": "23089:1009:28",
                        "trueBody": {
                          "id": 5011,
                          "nodeType": "Block",
                          "src": "23136:613:28",
                          "statements": [
                            {
                              "expression": {
                                "id": 5002,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 5000,
                                  "name": "elements",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4994,
                                  "src": "23150:8:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "31",
                                  "id": 5001,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23161:1:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "23150:12:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5003,
                              "nodeType": "ExpressionStatement",
                              "src": "23150:12:28"
                            },
                            {
                              "assignments": [
                                5005
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5005,
                                  "mutability": "mutable",
                                  "name": "selector",
                                  "nameLocation": "23183:8:28",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5011,
                                  "src": "23176:15:28",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  "typeName": {
                                    "id": 5004,
                                    "name": "bytes4",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "23176:6:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes4",
                                      "typeString": "bytes4"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5009,
                              "initialValue": {
                                "expression": {
                                  "expression": {
                                    "id": 5006,
                                    "name": "ConduitInterface",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1801,
                                    "src": "23194:16:28",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_ConduitInterface_$1801_$",
                                      "typeString": "type(contract ConduitInterface)"
                                    }
                                  },
                                  "id": 5007,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "execute",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 1768,
                                  "src": "23194:24:28",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_declaration_nonpayable$_t_array$_t_struct$_ConduitTransfer_$1469_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes4_$",
                                    "typeString": "function ConduitInterface.execute(struct ConduitTransfer calldata[] calldata) returns (bytes4)"
                                  }
                                },
                                "id": 5008,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "src": "23194:33:28",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "23176:51:28"
                            },
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "23250:489:28",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "accumulator",
                                          "nodeType": "YulIdentifier",
                                          "src": "23275:11:28"
                                        },
                                        {
                                          "name": "AccumulatorArmed",
                                          "nodeType": "YulIdentifier",
                                          "src": "23288:16:28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "23268:6:28"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23268:37:28"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23268:37:28"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "accumulator",
                                              "nodeType": "YulIdentifier",
                                              "src": "23359:11:28"
                                            },
                                            {
                                              "name": "Accumulator_conduitKey_ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "23372:26:28"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "23355:3:28"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23355:44:28"
                                        },
                                        {
                                          "name": "conduitKey",
                                          "nodeType": "YulIdentifier",
                                          "src": "23401:10:28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "23348:6:28"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23348:64:28"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23348:64:28"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "accumulator",
                                              "nodeType": "YulIdentifier",
                                              "src": "23440:11:28"
                                            },
                                            {
                                              "name": "Accumulator_selector_ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "23453:24:28"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "23436:3:28"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23436:42:28"
                                        },
                                        {
                                          "name": "selector",
                                          "nodeType": "YulIdentifier",
                                          "src": "23480:8:28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "23429:6:28"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23429:60:28"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23429:60:28"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "accumulator",
                                              "nodeType": "YulIdentifier",
                                              "src": "23538:11:28"
                                            },
                                            {
                                              "name": "Accumulator_array_offset_ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "23551:28:28"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "23534:3:28"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23534:46:28"
                                        },
                                        {
                                          "name": "Accumulator_array_offset",
                                          "nodeType": "YulIdentifier",
                                          "src": "23602:24:28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "23506:6:28"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23506:138:28"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23506:138:28"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "accumulator",
                                              "nodeType": "YulIdentifier",
                                              "src": "23672:11:28"
                                            },
                                            {
                                              "name": "Accumulator_array_length_ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "23685:28:28"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "23668:3:28"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23668:46:28"
                                        },
                                        {
                                          "name": "elements",
                                          "nodeType": "YulIdentifier",
                                          "src": "23716:8:28"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "23661:6:28"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23661:64:28"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23661:64:28"
                                  }
                                ]
                              },
                              "evmVersion": "london",
                              "externalReferences": [
                                {
                                  "declaration": 3772,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "23288:16:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3784,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "23685:28:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3790,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "23602:24:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3781,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "23551:28:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3775,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "23372:26:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3778,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "23453:24:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4978,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "23275:11:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4978,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "23359:11:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4978,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "23440:11:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4978,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "23538:11:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4978,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "23672:11:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4976,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "23401:10:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 4994,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "23716:8:28",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 5005,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "23480:8:28",
                                  "valueSize": 1
                                }
                              ],
                              "id": 5010,
                              "nodeType": "InlineAssembly",
                              "src": "23241:498:28"
                            }
                          ]
                        }
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "24145:662:28",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24159:166:28",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "accumulator",
                                        "nodeType": "YulIdentifier",
                                        "src": "24203:11:28"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "elements",
                                            "nodeType": "YulIdentifier",
                                            "src": "24220:8:28"
                                          },
                                          {
                                            "name": "Conduit_transferItem_size",
                                            "nodeType": "YulIdentifier",
                                            "src": "24230:25:28"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "24216:3:28"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24216:40:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24199:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24199:58:28"
                                  },
                                  {
                                    "name": "Accumulator_itemSizeOffsetDifference",
                                    "nodeType": "YulIdentifier",
                                    "src": "24275:36:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "24178:3:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24178:147:28"
                              },
                              "variables": [
                                {
                                  "name": "itemPointer",
                                  "nodeType": "YulTypedName",
                                  "src": "24163:11:28",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "itemPointer",
                                    "nodeType": "YulIdentifier",
                                    "src": "24345:11:28"
                                  },
                                  {
                                    "name": "itemType",
                                    "nodeType": "YulIdentifier",
                                    "src": "24358:8:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24338:6:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24338:29:28"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24338:29:28"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "itemPointer",
                                        "nodeType": "YulIdentifier",
                                        "src": "24391:11:28"
                                      },
                                      {
                                        "name": "Conduit_transferItem_token_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "24404:30:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24387:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24387:48:28"
                                  },
                                  {
                                    "name": "token",
                                    "nodeType": "YulIdentifier",
                                    "src": "24437:5:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24380:6:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24380:63:28"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24380:63:28"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "itemPointer",
                                        "nodeType": "YulIdentifier",
                                        "src": "24467:11:28"
                                      },
                                      {
                                        "name": "Conduit_transferItem_from_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "24480:29:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24463:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24463:47:28"
                                  },
                                  {
                                    "name": "from",
                                    "nodeType": "YulIdentifier",
                                    "src": "24512:4:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24456:6:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24456:61:28"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24456:61:28"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "itemPointer",
                                        "nodeType": "YulIdentifier",
                                        "src": "24541:11:28"
                                      },
                                      {
                                        "name": "Conduit_transferItem_to_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "24554:27:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24537:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24537:45:28"
                                  },
                                  {
                                    "name": "to",
                                    "nodeType": "YulIdentifier",
                                    "src": "24584:2:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24530:6:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24530:57:28"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24530:57:28"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "itemPointer",
                                        "nodeType": "YulIdentifier",
                                        "src": "24628:11:28"
                                      },
                                      {
                                        "name": "Conduit_transferItem_identifier_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "24641:35:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24624:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24624:53:28"
                                  },
                                  {
                                    "name": "identifier",
                                    "nodeType": "YulIdentifier",
                                    "src": "24695:10:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24600:6:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24600:119:28"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24600:119:28"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "itemPointer",
                                        "nodeType": "YulIdentifier",
                                        "src": "24743:11:28"
                                      },
                                      {
                                        "name": "Conduit_transferItem_amount_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "24756:31:28"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24739:3:28"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24739:49:28"
                                  },
                                  {
                                    "name": "amount",
                                    "nodeType": "YulIdentifier",
                                    "src": "24790:6:28"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24732:6:28"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24732:65:28"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24732:65:28"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3787,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24275:36:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3808,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24756:31:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3799,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24480:29:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3805,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24641:35:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3793,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24230:25:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3802,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24554:27:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3796,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24404:30:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4978,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24203:11:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4990,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24790:6:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4994,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24220:8:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4984,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24512:4:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4988,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24695:10:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4980,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24358:8:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4986,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24584:2:28",
                            "valueSize": 1
                          },
                          {
                            "declaration": 4982,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24437:5:28",
                            "valueSize": 1
                          }
                        ],
                        "id": 5015,
                        "nodeType": "InlineAssembly",
                        "src": "24136:671:28"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 4974,
                    "nodeType": "StructuredDocumentation",
                    "src": "21677:985:28",
                    "text": " @dev Internal pure function to place an item transfer into an accumulator\n      that collects a series of transfers to execute against a given\n      conduit in a single call.\n @param conduitKey  A bytes32 value indicating what corresponding conduit,\n                    if any, to source token approvals from. The zero hash\n                    signifies that no conduit should be used, with direct\n                    approvals set on this contract.\n @param accumulator An open-ended array that collects transfers to execute\n                    against a given conduit in a single call.\n @param itemType    The type of the item to transfer.\n @param token       The token to transfer.\n @param from        The originator of the transfer.\n @param to          The recipient of the transfer.\n @param identifier  The tokenId to transfer.\n @param amount      The amount to transfer."
                  },
                  "id": 5017,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_insert",
                  "nameLocation": "22676:7:28",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 4991,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 4976,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "22701:10:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 5017,
                        "src": "22693:18:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 4975,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "22693:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4978,
                        "mutability": "mutable",
                        "name": "accumulator",
                        "nameLocation": "22734:11:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 5017,
                        "src": "22721:24:28",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 4977,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "22721:5:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4980,
                        "mutability": "mutable",
                        "name": "itemType",
                        "nameLocation": "22763:8:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 5017,
                        "src": "22755:16:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4979,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22755:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4982,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "22789:5:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 5017,
                        "src": "22781:13:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4981,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22781:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4984,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "22812:4:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 5017,
                        "src": "22804:12:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4983,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22804:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4986,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "22834:2:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 5017,
                        "src": "22826:10:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4985,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "22826:7:28",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4988,
                        "mutability": "mutable",
                        "name": "identifier",
                        "nameLocation": "22854:10:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 5017,
                        "src": "22846:18:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4987,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22846:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 4990,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "22882:6:28",
                        "nodeType": "VariableDeclaration",
                        "scope": 5017,
                        "src": "22874:14:28",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4989,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "22874:7:28",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "22683:211:28"
                  },
                  "returnParameters": {
                    "id": 4992,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "22909:0:28"
                  },
                  "scope": 5018,
                  "src": "22667:2146:28",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 5019,
              "src": "718:24097:28",
              "usedErrors": [
                1856,
                1859,
                1866,
                1869,
                1874,
                1883,
                1886,
                1893,
                1896,
                1901,
                1906,
                1909,
                1912,
                1917,
                1920,
                1923,
                2208,
                2217,
                2220,
                2223,
                2226,
                2233,
                2236,
                2249,
                2264,
                2275,
                2280
              ]
            }
          ],
          "src": "32:24784:28"
        },
        "id": 28
      },
      "seaport/contracts/lib/FulfillmentApplier.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/FulfillmentApplier.sol",
          "exportedSymbols": {
            "AccumulatorArmed": [
              3772
            ],
            "AccumulatorDisarmed": [
              3769
            ],
            "Accumulator_array_length_ptr": [
              3784
            ],
            "Accumulator_array_offset": [
              3790
            ],
            "Accumulator_array_offset_ptr": [
              3781
            ],
            "Accumulator_conduitKey_ptr": [
              3775
            ],
            "Accumulator_itemSizeOffsetDifference": [
              3787
            ],
            "Accumulator_selector_ptr": [
              3778
            ],
            "AdditionalRecipients_size": [
              3530
            ],
            "AdvancedOrder": [
              4031
            ],
            "AdvancedOrder_numerator_offset": [
              3482
            ],
            "BasicOrder_additionalRecipients_data_cdPtr": [
              3621
            ],
            "BasicOrder_additionalRecipients_head_cdPtr": [
              3612
            ],
            "BasicOrder_additionalRecipients_head_ptr": [
              3678
            ],
            "BasicOrder_additionalRecipients_length_cdPtr": [
              3618
            ],
            "BasicOrder_basicOrderType_cdPtr": [
              3597
            ],
            "BasicOrder_considerationAmount_cdPtr": [
              3582
            ],
            "BasicOrder_considerationHashesArray_ptr": [
              3518
            ],
            "BasicOrder_considerationItem_endAmount_ptr": [
              3642
            ],
            "BasicOrder_considerationItem_identifier_ptr": [
              3636
            ],
            "BasicOrder_considerationItem_itemType_ptr": [
              3630
            ],
            "BasicOrder_considerationItem_startAmount_ptr": [
              3639
            ],
            "BasicOrder_considerationItem_token_ptr": [
              3633
            ],
            "BasicOrder_considerationItem_typeHash_ptr": [
              3627
            ],
            "BasicOrder_considerationToken_cdPtr": [
              3579
            ],
            "BasicOrder_endAmount_cdPtr": [
              3515
            ],
            "BasicOrder_fulfillerConduit_cdPtr": [
              3606
            ],
            "BasicOrder_offerAmount_cdPtr": [
              3594
            ],
            "BasicOrder_offerItem_endAmount_ptr": [
              3654
            ],
            "BasicOrder_offerItem_itemType_ptr": [
              3648
            ],
            "BasicOrder_offerItem_token_ptr": [
              3651
            ],
            "BasicOrder_offerItem_typeHash_ptr": [
              3645
            ],
            "BasicOrder_offerToken_cdPtr": [
              3591
            ],
            "BasicOrder_offererConduit_cdPtr": [
              3603
            ],
            "BasicOrder_offerer_cdPtr": [
              3585
            ],
            "BasicOrder_order_considerationHashes_ptr": [
              3666
            ],
            "BasicOrder_order_nonce_ptr": [
              3675
            ],
            "BasicOrder_order_offerHashes_ptr": [
              3663
            ],
            "BasicOrder_order_offerer_ptr": [
              3660
            ],
            "BasicOrder_order_orderType_ptr": [
              3669
            ],
            "BasicOrder_order_startTime_ptr": [
              3672
            ],
            "BasicOrder_order_typeHash_ptr": [
              3657
            ],
            "BasicOrder_parameters_cdPtr": [
              3576
            ],
            "BasicOrder_parameters_ptr": [
              3624
            ],
            "BasicOrder_signature_cdPtr": [
              3615
            ],
            "BasicOrder_signature_ptr": [
              3681
            ],
            "BasicOrder_startTime_cdPtr": [
              3600
            ],
            "BasicOrder_totalOriginalAdditionalRecipients_cdPtr": [
              3609
            ],
            "BasicOrder_zone_cdPtr": [
              3588
            ],
            "Common_amount_offset": [
              3413
            ],
            "Common_identifier_offset": [
              3410
            ],
            "Common_token_offset": [
              3407
            ],
            "Conduit_execute_ConduitTransfer_length": [
              3739
            ],
            "Conduit_execute_ConduitTransfer_length_ptr": [
              3745
            ],
            "Conduit_execute_ConduitTransfer_offset_ptr": [
              3742
            ],
            "Conduit_execute_ConduitTransfer_ptr": [
              3736
            ],
            "Conduit_execute_signature": [
              3733
            ],
            "Conduit_execute_transferAmount_ptr": [
              3763
            ],
            "Conduit_execute_transferFrom_ptr": [
              3754
            ],
            "Conduit_execute_transferIdentifier_ptr": [
              3760
            ],
            "Conduit_execute_transferItemType_ptr": [
              3748
            ],
            "Conduit_execute_transferTo_ptr": [
              3757
            ],
            "Conduit_execute_transferToken_ptr": [
              3751
            ],
            "Conduit_transferItem_amount_ptr": [
              3808
            ],
            "Conduit_transferItem_from_ptr": [
              3799
            ],
            "Conduit_transferItem_identifier_ptr": [
              3805
            ],
            "Conduit_transferItem_size": [
              3793
            ],
            "Conduit_transferItem_to_ptr": [
              3802
            ],
            "Conduit_transferItem_token_ptr": [
              3796
            ],
            "ConsiderItem_recipient_offset": [
              3431
            ],
            "ConsiderationItem": [
              3918
            ],
            "ConsiderationItem_recipient_offset": [
              3428
            ],
            "CostPerWord": [
              3708
            ],
            "Create2AddressDerivation_length": [
              3717
            ],
            "Create2AddressDerivation_ptr": [
              3714
            ],
            "DefaultFreeMemoryPointer": [
              3506
            ],
            "EIP2098_allButHighestBitMask": [
              3685
            ],
            "EIP712_ConsiderationItem_size": [
              3527
            ],
            "EIP712_DigestPayload_size": [
              3539
            ],
            "EIP712_DomainSeparator_offset": [
              3533
            ],
            "EIP712_OfferItem_size": [
              3524
            ],
            "EIP712_OrderHash_offset": [
              3536
            ],
            "EIP712_Order_size": [
              3521
            ],
            "EIP_712_PREFIX": [
              3702
            ],
            "Execution": [
              4075
            ],
            "Execution_conduit_offset": [
              3437
            ],
            "Execution_offerer_offset": [
              3434
            ],
            "ExtraGasBuffer": [
              3705
            ],
            "FiveWords": [
              3497
            ],
            "FourWords": [
              3494
            ],
            "FreeMemoryPointerSlot": [
              3500
            ],
            "FulfillmentApplicationErrors": [
              2202
            ],
            "FulfillmentApplier": [
              5325
            ],
            "FulfillmentComponent": [
              4067
            ],
            "Fulfillment_itemIndex_offset": [
              3479
            ],
            "InvalidFulfillmentComponentData_error_len": [
              3444
            ],
            "InvalidFulfillmentComponentData_error_signature": [
              3441
            ],
            "ItemType": [
              3854
            ],
            "MaskOverByteTwelve": [
              3721
            ],
            "MaskOverFirstFourBytes": [
              3729
            ],
            "MaskOverLastTwentyBytes": [
              3725
            ],
            "MemoryExpansionCoefficient": [
              3711
            ],
            "MissingItemAmount_error_len": [
              3464
            ],
            "MissingItemAmount_error_signature": [
              3461
            ],
            "NameLengthPtr": [
              3389
            ],
            "NameWithLength": [
              3392
            ],
            "NoContract_error_length": [
              3698
            ],
            "NoContract_error_sig_ptr": [
              3692
            ],
            "NoContract_error_signature": [
              3689
            ],
            "NoContract_error_token_ptr": [
              3695
            ],
            "OfferItem": [
              3904
            ],
            "OneConduitExecute_size": [
              3766
            ],
            "OneWord": [
              3485
            ],
            "OrderFulfilled_baseOffset": [
              3552
            ],
            "OrderFulfilled_baseSize": [
              3545
            ],
            "OrderFulfilled_consideration_body_offset": [
              3573
            ],
            "OrderFulfilled_consideration_head_offset": [
              3570
            ],
            "OrderFulfilled_consideration_length_baseOffset": [
              3555
            ],
            "OrderFulfilled_fulfiller_offset": [
              3561
            ],
            "OrderFulfilled_offer_body_offset": [
              3567
            ],
            "OrderFulfilled_offer_head_offset": [
              3564
            ],
            "OrderFulfilled_offer_length_baseOffset": [
              3558
            ],
            "OrderFulfilled_selector": [
              3549
            ],
            "OrderParameters": [
              4013
            ],
            "OrderParameters_conduit_offset": [
              3473
            ],
            "OrderParameters_consideration_head_offset": [
              3470
            ],
            "OrderParameters_nonce_offset": [
              3476
            ],
            "OrderParameters_offer_head_offset": [
              3467
            ],
            "Panic_arithmetic": [
              3457
            ],
            "Panic_error_length": [
              3454
            ],
            "Panic_error_offset": [
              3451
            ],
            "Panic_error_signature": [
              3448
            ],
            "ReceivedItem": [
              3940
            ],
            "ReceivedItem_CommonParams_size": [
              3425
            ],
            "ReceivedItem_amount_offset": [
              3419
            ],
            "ReceivedItem_recipient_offset": [
              3422
            ],
            "ReceivedItem_size": [
              3416
            ],
            "Side": [
              3857
            ],
            "Slot0x80": [
              3509
            ],
            "Slot0xA0": [
              3512
            ],
            "ThreeWords": [
              3491
            ],
            "TwoWords": [
              3488
            ],
            "Version": [
              3395
            ],
            "Version_length": [
              3398
            ],
            "ZeroSlot": [
              3503
            ],
            "_ENTERED": [
              3404
            ],
            "_NOT_ENTERED": [
              3401
            ],
            "receivedItemsHash_ptr": [
              3542
            ]
          },
          "id": 5326,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5020,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:29"
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationEnums.sol",
              "file": "./ConsiderationEnums.sol",
              "id": 5023,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5326,
              "sourceUnit": 3858,
              "src": "57:58:29",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5021,
                    "name": "ItemType",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3854,
                    "src": "66:8:29",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5022,
                    "name": "Side",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3857,
                    "src": "76:4:29",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationStructs.sol",
              "file": "./ConsiderationStructs.sol",
              "id": 5031,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5326,
              "sourceUnit": 4076,
              "src": "136:181:29",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5024,
                    "name": "OfferItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3904,
                    "src": "149:9:29",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5025,
                    "name": "ConsiderationItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3918,
                    "src": "164:17:29",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5026,
                    "name": "ReceivedItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3940,
                    "src": "187:12:29",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5027,
                    "name": "OrderParameters",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4013,
                    "src": "205:15:29",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5028,
                    "name": "AdvancedOrder",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4031,
                    "src": "226:13:29",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5029,
                    "name": "Execution",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4075,
                    "src": "245:9:29",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5030,
                    "name": "FulfillmentComponent",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4067,
                    "src": "260:20:29",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationConstants.sol",
              "file": "./ConsiderationConstants.sol",
              "id": 5032,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5326,
              "sourceUnit": 3809,
              "src": "319:38:29",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/interfaces/FulfillmentApplicationErrors.sol",
              "file": "../interfaces/FulfillmentApplicationErrors.sol",
              "id": 5034,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5326,
              "sourceUnit": 2203,
              "src": "378:98:29",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5033,
                    "name": "FulfillmentApplicationErrors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2202,
                    "src": "391:28:29",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5036,
                    "name": "FulfillmentApplicationErrors",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2202,
                    "src": "873:28:29"
                  },
                  "id": 5037,
                  "nodeType": "InheritanceSpecifier",
                  "src": "873:28:29"
                }
              ],
              "canonicalName": "FulfillmentApplier",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 5035,
                "nodeType": "StructuredDocumentation",
                "src": "478:363:29",
                "text": " @title FulfillmentApplier\n @author 0age\n @notice FulfillmentApplier contains logic related to applying fulfillments,\n         both as part of order matching (where offer items are matched to\n         consideration items) as well as fulfilling available orders (where\n         order items and consideration items are independently aggregated)."
              },
              "fullyImplemented": true,
              "id": 5325,
              "linearizedBaseContracts": [
                5325,
                2202
              ],
              "name": "FulfillmentApplier",
              "nameLocation": "851:18:29",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 5206,
                    "nodeType": "Block",
                    "src": "1983:2948:29",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5064,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5059,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 5056,
                                "name": "offerComponents",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5046,
                                "src": "2088:15:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "struct FulfillmentComponent calldata[] calldata"
                                }
                              },
                              "id": 5057,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "2088:22:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 5058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2114:1:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2088:27:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5063,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 5060,
                                "name": "considerationComponents",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5050,
                                "src": "2119:23:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "struct FulfillmentComponent calldata[] calldata"
                                }
                              },
                              "id": 5061,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "2119:30:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 5062,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2153:1:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2119:35:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2088:66:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5069,
                        "nodeType": "IfStatement",
                        "src": "2071:170:29",
                        "trueBody": {
                          "id": 5068,
                          "nodeType": "Block",
                          "src": "2165:76:29",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5065,
                                  "name": "OfferAndConsiderationRequiredOnFulfillment",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2195,
                                  "src": "2186:42:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 5066,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2186:44:29",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5067,
                              "nodeType": "RevertStatement",
                              "src": "2179:51:29"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          5072
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5072,
                            "mutability": "mutable",
                            "name": "considerationExecution",
                            "nameLocation": "2311:22:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 5206,
                            "src": "2294:39:29",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                              "typeString": "struct Execution"
                            },
                            "typeName": {
                              "id": 5071,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5070,
                                "name": "Execution",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4075,
                                "src": "2294:9:29"
                              },
                              "referencedDeclaration": 4075,
                              "src": "2294:9:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                                "typeString": "struct Execution"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5073,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2294:39:29"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5075,
                              "name": "advancedOrders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5042,
                              "src": "2479:14:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              }
                            },
                            {
                              "id": 5076,
                              "name": "considerationComponents",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5050,
                              "src": "2507:23:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct FulfillmentComponent calldata[] calldata"
                              }
                            },
                            {
                              "id": 5077,
                              "name": "considerationExecution",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5072,
                              "src": "2544:22:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                "typeString": "struct Execution memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct FulfillmentComponent calldata[] calldata"
                              },
                              {
                                "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                "typeString": "struct Execution memory"
                              }
                            ],
                            "id": 5074,
                            "name": "_aggregateValidFulfillmentConsiderationItems",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5324,
                            "src": "2421:44:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$_t_struct$_Execution_$4075_memory_ptr_$returns$__$",
                              "typeString": "function (struct AdvancedOrder memory[] memory,struct FulfillmentComponent memory[] memory,struct Execution memory) pure"
                            }
                          },
                          "id": 5078,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2421:155:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5079,
                        "nodeType": "ExpressionStatement",
                        "src": "2421:155:29"
                      },
                      {
                        "assignments": [
                          5082
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5082,
                            "mutability": "mutable",
                            "name": "considerationItem",
                            "nameLocation": "2677:17:29",
                            "nodeType": "VariableDeclaration",
                            "scope": 5206,
                            "src": "2657:37:29",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                              "typeString": "struct ReceivedItem"
                            },
                            "typeName": {
                              "id": 5081,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5080,
                                "name": "ReceivedItem",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 3940,
                                "src": "2657:12:29"
                              },
                              "referencedDeclaration": 3940,
                              "src": "2657:12:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReceivedItem_$3940_storage_ptr",
                                "typeString": "struct ReceivedItem"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5085,
                        "initialValue": {
                          "expression": {
                            "id": 5083,
                            "name": "considerationExecution",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5072,
                            "src": "2697:22:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                              "typeString": "struct Execution memory"
                            }
                          },
                          "id": 5084,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "item",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4070,
                          "src": "2697:27:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                            "typeString": "struct ReceivedItem memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2657:67:29"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5087,
                              "name": "advancedOrders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5042,
                              "src": "2850:14:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              }
                            },
                            {
                              "id": 5088,
                              "name": "offerComponents",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5046,
                              "src": "2878:15:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct FulfillmentComponent calldata[] calldata"
                              }
                            },
                            {
                              "id": 5089,
                              "name": "execution",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5054,
                              "src": "2907:9:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                "typeString": "struct Execution memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct FulfillmentComponent calldata[] calldata"
                              },
                              {
                                "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                "typeString": "struct Execution memory"
                              }
                            ],
                            "id": 5086,
                            "name": "_aggregateValidFulfillmentOfferItems",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5307,
                            "src": "2800:36:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$_t_struct$_Execution_$4075_memory_ptr_$returns$__$",
                              "typeString": "function (struct AdvancedOrder memory[] memory,struct FulfillmentComponent memory[] memory,struct Execution memory) view"
                            }
                          },
                          "id": 5090,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2800:126:29",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5091,
                        "nodeType": "ExpressionStatement",
                        "src": "2800:126:29"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 5111,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 5104,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_enum$_ItemType_$3854",
                                "typeString": "enum ItemType"
                              },
                              "id": 5097,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "expression": {
                                    "id": 5092,
                                    "name": "execution",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5054,
                                    "src": "3033:9:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                      "typeString": "struct Execution memory"
                                    }
                                  },
                                  "id": 5093,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "item",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4070,
                                  "src": "3033:14:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                    "typeString": "struct ReceivedItem memory"
                                  }
                                },
                                "id": 5094,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "itemType",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3931,
                                "src": "3033:23:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ItemType_$3854",
                                  "typeString": "enum ItemType"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "expression": {
                                  "id": 5095,
                                  "name": "considerationItem",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5082,
                                  "src": "3060:17:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                    "typeString": "struct ReceivedItem memory"
                                  }
                                },
                                "id": 5096,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "itemType",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3931,
                                "src": "3060:26:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ItemType_$3854",
                                  "typeString": "enum ItemType"
                                }
                              },
                              "src": "3033:53:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 5103,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "expression": {
                                    "id": 5098,
                                    "name": "execution",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5054,
                                    "src": "3102:9:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                      "typeString": "struct Execution memory"
                                    }
                                  },
                                  "id": 5099,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "item",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4070,
                                  "src": "3102:14:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                    "typeString": "struct ReceivedItem memory"
                                  }
                                },
                                "id": 5100,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "token",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3933,
                                "src": "3102:20:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "expression": {
                                  "id": 5101,
                                  "name": "considerationItem",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5082,
                                  "src": "3126:17:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                    "typeString": "struct ReceivedItem memory"
                                  }
                                },
                                "id": 5102,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "token",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3933,
                                "src": "3126:23:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3102:47:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "3033:116:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5110,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "expression": {
                                  "id": 5105,
                                  "name": "execution",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5054,
                                  "src": "3165:9:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                    "typeString": "struct Execution memory"
                                  }
                                },
                                "id": 5106,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "item",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4070,
                                "src": "3165:14:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                  "typeString": "struct ReceivedItem memory"
                                }
                              },
                              "id": 5107,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "identifier",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3935,
                              "src": "3165:25:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "expression": {
                                "id": 5108,
                                "name": "considerationItem",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5082,
                                "src": "3194:17:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                  "typeString": "struct ReceivedItem memory"
                                }
                              },
                              "id": 5109,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "identifier",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3935,
                              "src": "3194:28:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3165:57:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3033:189:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 5116,
                        "nodeType": "IfStatement",
                        "src": "3016:303:29",
                        "trueBody": {
                          "id": 5115,
                          "nodeType": "Block",
                          "src": "3233:86:29",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 5112,
                                  "name": "MismatchedFulfillmentOfferAndConsiderationComponents",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2198,
                                  "src": "3254:52:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 5113,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3254:54:29",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 5114,
                              "nodeType": "RevertStatement",
                              "src": "3247:61:29"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 5117,
                              "name": "considerationItem",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5082,
                              "src": "3402:17:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                "typeString": "struct ReceivedItem memory"
                              }
                            },
                            "id": 5118,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3937,
                            "src": "3402:24:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "expression": {
                              "expression": {
                                "id": 5119,
                                "name": "execution",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5054,
                                "src": "3429:9:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                  "typeString": "struct Execution memory"
                                }
                              },
                              "id": 5120,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "item",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4070,
                              "src": "3429:14:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                "typeString": "struct ReceivedItem memory"
                              }
                            },
                            "id": 5121,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3937,
                            "src": "3429:21:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3402:48:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 5184,
                          "nodeType": "Block",
                          "src": "4110:455:29",
                          "statements": [
                            {
                              "assignments": [
                                5160
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5160,
                                  "mutability": "mutable",
                                  "name": "targetComponent",
                                  "nameLocation": "4224:15:29",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5184,
                                  "src": "4196:43:29",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_memory_ptr",
                                    "typeString": "struct FulfillmentComponent"
                                  },
                                  "typeName": {
                                    "id": 5159,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 5158,
                                      "name": "FulfillmentComponent",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 4067,
                                      "src": "4196:20:29"
                                    },
                                    "referencedDeclaration": 4067,
                                    "src": "4196:20:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                                      "typeString": "struct FulfillmentComponent"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5165,
                              "initialValue": {
                                "components": [
                                  {
                                    "baseExpression": {
                                      "id": 5161,
                                      "name": "offerComponents",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5046,
                                      "src": "4243:15:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "struct FulfillmentComponent calldata[] calldata"
                                      }
                                    },
                                    "id": 5163,
                                    "indexExpression": {
                                      "hexValue": "30",
                                      "id": 5162,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4259:1:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4243:18:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_calldata_ptr",
                                      "typeString": "struct FulfillmentComponent calldata"
                                    }
                                  }
                                ],
                                "id": 5164,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "4242:20:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_calldata_ptr",
                                  "typeString": "struct FulfillmentComponent calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "4196:66:29"
                            },
                            {
                              "expression": {
                                "id": 5182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "expression": {
                                        "expression": {
                                          "baseExpression": {
                                            "id": 5166,
                                            "name": "advancedOrders",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5042,
                                            "src": "4354:14:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                              "typeString": "struct AdvancedOrder memory[] memory"
                                            }
                                          },
                                          "id": 5169,
                                          "indexExpression": {
                                            "expression": {
                                              "id": 5167,
                                              "name": "targetComponent",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5160,
                                              "src": "4369:15:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_memory_ptr",
                                                "typeString": "struct FulfillmentComponent memory"
                                              }
                                            },
                                            "id": 5168,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "orderIndex",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4064,
                                            "src": "4369:26:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "4354:42:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                            "typeString": "struct AdvancedOrder memory"
                                          }
                                        },
                                        "id": 5170,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "parameters",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4022,
                                        "src": "4354:70:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                          "typeString": "struct OrderParameters memory"
                                        }
                                      },
                                      "id": 5171,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "offer",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3993,
                                      "src": "4354:93:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct OfferItem memory[] memory"
                                      }
                                    },
                                    "id": 5174,
                                    "indexExpression": {
                                      "expression": {
                                        "id": 5172,
                                        "name": "targetComponent",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5160,
                                        "src": "4448:15:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_memory_ptr",
                                          "typeString": "struct FulfillmentComponent memory"
                                        }
                                      },
                                      "id": 5173,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "itemIndex",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4066,
                                      "src": "4448:25:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4354:120:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                      "typeString": "struct OfferItem memory"
                                    }
                                  },
                                  "id": 5175,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "startAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3901,
                                  "src": "4354:149:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5181,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "expression": {
                                        "id": 5176,
                                        "name": "execution",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5054,
                                        "src": "4506:9:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                          "typeString": "struct Execution memory"
                                        }
                                      },
                                      "id": 5177,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "item",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4070,
                                      "src": "4506:14:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                        "typeString": "struct ReceivedItem memory"
                                      }
                                    },
                                    "id": 5178,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3937,
                                    "src": "4506:21:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 5179,
                                      "name": "considerationItem",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5082,
                                      "src": "4530:17:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                        "typeString": "struct ReceivedItem memory"
                                      }
                                    },
                                    "id": 5180,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3937,
                                    "src": "4530:24:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "4506:48:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4354:200:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5183,
                              "nodeType": "ExpressionStatement",
                              "src": "4354:200:29"
                            }
                          ]
                        },
                        "id": 5185,
                        "nodeType": "IfStatement",
                        "src": "3398:1167:29",
                        "trueBody": {
                          "id": 5157,
                          "nodeType": "Block",
                          "src": "3452:652:29",
                          "statements": [
                            {
                              "assignments": [
                                5125
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5125,
                                  "mutability": "mutable",
                                  "name": "targetComponent",
                                  "nameLocation": "3574:15:29",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5157,
                                  "src": "3546:43:29",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_memory_ptr",
                                    "typeString": "struct FulfillmentComponent"
                                  },
                                  "typeName": {
                                    "id": 5124,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 5123,
                                      "name": "FulfillmentComponent",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 4067,
                                      "src": "3546:20:29"
                                    },
                                    "referencedDeclaration": 4067,
                                    "src": "3546:20:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                                      "typeString": "struct FulfillmentComponent"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5130,
                              "initialValue": {
                                "components": [
                                  {
                                    "baseExpression": {
                                      "id": 5126,
                                      "name": "considerationComponents",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5050,
                                      "src": "3610:23:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "struct FulfillmentComponent calldata[] calldata"
                                      }
                                    },
                                    "id": 5128,
                                    "indexExpression": {
                                      "hexValue": "30",
                                      "id": 5127,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3634:1:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3610:26:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_calldata_ptr",
                                      "typeString": "struct FulfillmentComponent calldata"
                                    }
                                  }
                                ],
                                "id": 5129,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3592:58:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_calldata_ptr",
                                  "typeString": "struct FulfillmentComponent calldata"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "3546:104:29"
                            },
                            {
                              "expression": {
                                "id": 5147,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "expression": {
                                        "expression": {
                                          "baseExpression": {
                                            "id": 5131,
                                            "name": "advancedOrders",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5042,
                                            "src": "3746:14:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                              "typeString": "struct AdvancedOrder memory[] memory"
                                            }
                                          },
                                          "id": 5134,
                                          "indexExpression": {
                                            "expression": {
                                              "id": 5132,
                                              "name": "targetComponent",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5125,
                                              "src": "3761:15:29",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_memory_ptr",
                                                "typeString": "struct FulfillmentComponent memory"
                                              }
                                            },
                                            "id": 5133,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "orderIndex",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4064,
                                            "src": "3761:26:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "3746:42:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                            "typeString": "struct AdvancedOrder memory"
                                          }
                                        },
                                        "id": 5135,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "parameters",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4022,
                                        "src": "3746:70:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                          "typeString": "struct OrderParameters memory"
                                        }
                                      },
                                      "id": 5136,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "consideration",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3997,
                                      "src": "3746:101:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct ConsiderationItem memory[] memory"
                                      }
                                    },
                                    "id": 5139,
                                    "indexExpression": {
                                      "expression": {
                                        "id": 5137,
                                        "name": "targetComponent",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5125,
                                        "src": "3848:15:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_memory_ptr",
                                          "typeString": "struct FulfillmentComponent memory"
                                        }
                                      },
                                      "id": 5138,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "itemIndex",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4066,
                                      "src": "3848:25:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3746:128:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                      "typeString": "struct ConsiderationItem memory"
                                    }
                                  },
                                  "id": 5140,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "startAmount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3913,
                                  "src": "3746:157:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5146,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 5141,
                                      "name": "considerationItem",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5082,
                                      "src": "3906:17:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                        "typeString": "struct ReceivedItem memory"
                                      }
                                    },
                                    "id": 5142,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3937,
                                    "src": "3906:24:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "expression": {
                                      "expression": {
                                        "id": 5143,
                                        "name": "execution",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5054,
                                        "src": "3933:9:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                          "typeString": "struct Execution memory"
                                        }
                                      },
                                      "id": 5144,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "item",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4070,
                                      "src": "3933:14:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                        "typeString": "struct ReceivedItem memory"
                                      }
                                    },
                                    "id": 5145,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "amount",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3937,
                                    "src": "3933:21:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3906:48:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "3746:208:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5148,
                              "nodeType": "ExpressionStatement",
                              "src": "3746:208:29"
                            },
                            {
                              "expression": {
                                "id": 5155,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "id": 5149,
                                    "name": "considerationItem",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5082,
                                    "src": "4045:17:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                      "typeString": "struct ReceivedItem memory"
                                    }
                                  },
                                  "id": 5151,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "amount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3937,
                                  "src": "4045:24:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "expression": {
                                    "expression": {
                                      "id": 5152,
                                      "name": "execution",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5054,
                                      "src": "4072:9:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                        "typeString": "struct Execution memory"
                                      }
                                    },
                                    "id": 5153,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "item",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4070,
                                    "src": "4072:14:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                      "typeString": "struct ReceivedItem memory"
                                    }
                                  },
                                  "id": 5154,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "amount",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3937,
                                  "src": "4072:21:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4045:48:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5156,
                              "nodeType": "ExpressionStatement",
                              "src": "4045:48:29"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 5193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "expression": {
                                "id": 5186,
                                "name": "execution",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5054,
                                "src": "4650:9:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                  "typeString": "struct Execution memory"
                                }
                              },
                              "id": 5189,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "item",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4070,
                              "src": "4650:14:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                "typeString": "struct ReceivedItem memory"
                              }
                            },
                            "id": 5190,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3937,
                            "src": "4650:21:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 5191,
                              "name": "considerationItem",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5082,
                              "src": "4674:17:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                "typeString": "struct ReceivedItem memory"
                              }
                            },
                            "id": 5192,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "amount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3937,
                            "src": "4674:24:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "4650:48:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5194,
                        "nodeType": "ExpressionStatement",
                        "src": "4650:48:29"
                      },
                      {
                        "expression": {
                          "id": 5202,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "expression": {
                                "id": 5195,
                                "name": "execution",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5054,
                                "src": "4708:9:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                  "typeString": "struct Execution memory"
                                }
                              },
                              "id": 5198,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "item",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4070,
                              "src": "4708:14:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                "typeString": "struct ReceivedItem memory"
                              }
                            },
                            "id": 5199,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "recipient",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3939,
                            "src": "4708:24:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "id": 5200,
                              "name": "considerationItem",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5082,
                              "src": "4735:17:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                "typeString": "struct ReceivedItem memory"
                              }
                            },
                            "id": 5201,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "recipient",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3939,
                            "src": "4735:27:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4708:54:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "id": 5203,
                        "nodeType": "ExpressionStatement",
                        "src": "4708:54:29"
                      },
                      {
                        "expression": {
                          "id": 5204,
                          "name": "execution",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5054,
                          "src": "4861:9:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                            "typeString": "struct Execution memory"
                          }
                        },
                        "functionReturnParameters": 5055,
                        "id": 5205,
                        "nodeType": "Return",
                        "src": "4854:16:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5038,
                    "nodeType": "StructuredDocumentation",
                    "src": "908:817:29",
                    "text": " @dev Internal view function to match offer items to consideration items\n      on a group of orders via a supplied fulfillment.\n @param advancedOrders          The orders to match.\n @param offerComponents         An array designating offer components to\n                                match to consideration components.\n @param considerationComponents An array designating consideration\n                                components to match to offer components.\n                                Note that each consideration amount must\n                                be zero in order for the match operation\n                                to be valid.\n @return execution The transfer performed as a result of the fulfillment."
                  },
                  "id": 5207,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_applyFulfillment",
                  "nameLocation": "1739:17:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5051,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5042,
                        "mutability": "mutable",
                        "name": "advancedOrders",
                        "nameLocation": "1789:14:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 5207,
                        "src": "1766:37:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct AdvancedOrder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5040,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5039,
                              "name": "AdvancedOrder",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4031,
                              "src": "1766:13:29"
                            },
                            "referencedDeclaration": 4031,
                            "src": "1766:13:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                              "typeString": "struct AdvancedOrder"
                            }
                          },
                          "id": 5041,
                          "nodeType": "ArrayTypeName",
                          "src": "1766:15:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                            "typeString": "struct AdvancedOrder[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5046,
                        "mutability": "mutable",
                        "name": "offerComponents",
                        "nameLocation": "1845:15:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 5207,
                        "src": "1813:47:29",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct FulfillmentComponent[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5044,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5043,
                              "name": "FulfillmentComponent",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4067,
                              "src": "1813:20:29"
                            },
                            "referencedDeclaration": 4067,
                            "src": "1813:20:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                              "typeString": "struct FulfillmentComponent"
                            }
                          },
                          "id": 5045,
                          "nodeType": "ArrayTypeName",
                          "src": "1813:22:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                            "typeString": "struct FulfillmentComponent[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5050,
                        "mutability": "mutable",
                        "name": "considerationComponents",
                        "nameLocation": "1902:23:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 5207,
                        "src": "1870:55:29",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct FulfillmentComponent[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5048,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5047,
                              "name": "FulfillmentComponent",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4067,
                              "src": "1870:20:29"
                            },
                            "referencedDeclaration": 4067,
                            "src": "1870:20:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                              "typeString": "struct FulfillmentComponent"
                            }
                          },
                          "id": 5049,
                          "nodeType": "ArrayTypeName",
                          "src": "1870:22:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                            "typeString": "struct FulfillmentComponent[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1756:175:29"
                  },
                  "returnParameters": {
                    "id": 5055,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5054,
                        "mutability": "mutable",
                        "name": "execution",
                        "nameLocation": "1972:9:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 5207,
                        "src": "1955:26:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                          "typeString": "struct Execution"
                        },
                        "typeName": {
                          "id": 5053,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5052,
                            "name": "Execution",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4075,
                            "src": "1955:9:29"
                          },
                          "referencedDeclaration": 4075,
                          "src": "1955:9:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                            "typeString": "struct Execution"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1954:28:29"
                  },
                  "scope": 5325,
                  "src": "1730:3201:29",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5289,
                    "nodeType": "Block",
                    "src": "6266:1658:29",
                    "statements": [
                      {
                        "id": 5288,
                        "nodeType": "UncheckedBlock",
                        "src": "6356:1562:29",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5230,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 5227,
                                  "name": "fulfillmentComponents",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5219,
                                  "src": "6540:21:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct FulfillmentComponent memory[] memory"
                                  }
                                },
                                "id": 5228,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "6540:28:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 5229,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6572:1:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6540:33:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 5236,
                            "nodeType": "IfStatement",
                            "src": "6536:125:29",
                            "trueBody": {
                              "id": 5235,
                              "nodeType": "Block",
                              "src": "6575:86:29",
                              "statements": [
                                {
                                  "errorCall": {
                                    "arguments": [
                                      {
                                        "id": 5232,
                                        "name": "side",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5215,
                                        "src": "6641:4:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_Side_$3857",
                                          "typeString": "enum Side"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_enum$_Side_$3857",
                                          "typeString": "enum Side"
                                        }
                                      ],
                                      "id": 5231,
                                      "name": "MissingFulfillmentComponentOnAggregation",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2192,
                                      "src": "6600:40:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_error_pure$_t_enum$_Side_$3857_$returns$__$",
                                        "typeString": "function (enum Side) pure"
                                      }
                                    },
                                    "id": 5233,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6600:46:29",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 5234,
                                  "nodeType": "RevertStatement",
                                  "src": "6593:53:29"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_enum$_Side_$3857",
                                "typeString": "enum Side"
                              },
                              "id": 5240,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5237,
                                "name": "side",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5215,
                                "src": "6748:4:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Side_$3857",
                                  "typeString": "enum Side"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "expression": {
                                  "id": 5238,
                                  "name": "Side",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3857,
                                  "src": "6756:4:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_Side_$3857_$",
                                    "typeString": "type(enum Side)"
                                  }
                                },
                                "id": 5239,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "OFFER",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3855,
                                "src": "6756:10:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_Side_$3857",
                                  "typeString": "enum Side"
                                }
                              },
                              "src": "6748:18:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 5267,
                              "nodeType": "Block",
                              "src": "7049:646:29",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 5249,
                                        "name": "advancedOrders",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5212,
                                        "src": "7319:14:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory[] memory"
                                        }
                                      },
                                      {
                                        "id": 5250,
                                        "name": "fulfillmentComponents",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5219,
                                        "src": "7355:21:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct FulfillmentComponent memory[] memory"
                                        }
                                      },
                                      {
                                        "id": 5251,
                                        "name": "execution",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5225,
                                        "src": "7398:9:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                          "typeString": "struct Execution memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory[] memory"
                                        },
                                        {
                                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct FulfillmentComponent memory[] memory"
                                        },
                                        {
                                          "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                          "typeString": "struct Execution memory"
                                        }
                                      ],
                                      "id": 5248,
                                      "name": "_aggregateValidFulfillmentConsiderationItems",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5324,
                                      "src": "7253:44:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$_t_struct$_Execution_$4075_memory_ptr_$returns$__$",
                                        "typeString": "function (struct AdvancedOrder memory[] memory,struct FulfillmentComponent memory[] memory,struct Execution memory) pure"
                                      }
                                    },
                                    "id": 5252,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7253:172:29",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 5253,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7253:172:29"
                                },
                                {
                                  "expression": {
                                    "id": 5259,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "id": 5254,
                                        "name": "execution",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5225,
                                        "src": "7511:9:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                          "typeString": "struct Execution memory"
                                        }
                                      },
                                      "id": 5256,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "offerer",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4072,
                                      "src": "7511:17:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "expression": {
                                        "id": 5257,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "7531:3:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 5258,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "src": "7531:10:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "7511:30:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 5260,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7511:30:29"
                                },
                                {
                                  "expression": {
                                    "id": 5265,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "id": 5261,
                                        "name": "execution",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5225,
                                        "src": "7638:9:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                          "typeString": "struct Execution memory"
                                        }
                                      },
                                      "id": 5263,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "conduitKey",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4074,
                                      "src": "7638:20:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "id": 5264,
                                      "name": "fulfillerConduitKey",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5221,
                                      "src": "7661:19:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "src": "7638:42:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "id": 5266,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7638:42:29"
                                }
                              ]
                            },
                            "id": 5268,
                            "nodeType": "IfStatement",
                            "src": "6744:951:29",
                            "trueBody": {
                              "id": 5247,
                              "nodeType": "Block",
                              "src": "6768:275:29",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 5242,
                                        "name": "advancedOrders",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5212,
                                        "src": "6922:14:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory[] memory"
                                        }
                                      },
                                      {
                                        "id": 5243,
                                        "name": "fulfillmentComponents",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5219,
                                        "src": "6958:21:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct FulfillmentComponent memory[] memory"
                                        }
                                      },
                                      {
                                        "id": 5244,
                                        "name": "execution",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5225,
                                        "src": "7001:9:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                          "typeString": "struct Execution memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory[] memory"
                                        },
                                        {
                                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct FulfillmentComponent memory[] memory"
                                        },
                                        {
                                          "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                          "typeString": "struct Execution memory"
                                        }
                                      ],
                                      "id": 5241,
                                      "name": "_aggregateValidFulfillmentOfferItems",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5307,
                                      "src": "6864:36:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$_t_struct$_Execution_$4075_memory_ptr_$returns$__$",
                                        "typeString": "function (struct AdvancedOrder memory[] memory,struct FulfillmentComponent memory[] memory,struct Execution memory) view"
                                      }
                                    },
                                    "id": 5245,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6864:164:29",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 5246,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6864:164:29"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "expression": {
                                    "id": 5269,
                                    "name": "execution",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5225,
                                    "src": "7794:9:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                      "typeString": "struct Execution memory"
                                    }
                                  },
                                  "id": 5270,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "item",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4070,
                                  "src": "7794:14:29",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                    "typeString": "struct ReceivedItem memory"
                                  }
                                },
                                "id": 5271,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "amount",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3937,
                                "src": "7794:21:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 5272,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7819:1:29",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "7794:26:29",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 5287,
                            "nodeType": "IfStatement",
                            "src": "7790:118:29",
                            "trueBody": {
                              "id": 5286,
                              "nodeType": "Block",
                              "src": "7822:86:29",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 5284,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "expression": {
                                          "id": 5274,
                                          "name": "execution",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5225,
                                          "src": "7840:9:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                            "typeString": "struct Execution memory"
                                          }
                                        },
                                        "id": 5277,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "item",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4070,
                                        "src": "7840:14:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                          "typeString": "struct ReceivedItem memory"
                                        }
                                      },
                                      "id": 5278,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "recipient",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3939,
                                      "src": "7840:24:29",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "expression": {
                                            "id": 5281,
                                            "name": "execution",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5225,
                                            "src": "7875:9:29",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                              "typeString": "struct Execution memory"
                                            }
                                          },
                                          "id": 5282,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "offerer",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4072,
                                          "src": "7875:17:29",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 5280,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "7867:8:29",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_address_payable_$",
                                          "typeString": "type(address payable)"
                                        },
                                        "typeName": {
                                          "id": 5279,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "7867:8:29",
                                          "stateMutability": "payable",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 5283,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7867:26:29",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "src": "7840:53:29",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "id": 5285,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7840:53:29"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5208,
                    "nodeType": "StructuredDocumentation",
                    "src": "4937:1074:29",
                    "text": " @dev Internal view function to aggregate offer or consideration items\n      from a group of orders into a single execution via a supplied array\n      of fulfillment components. Items that are not available to aggregate\n      will not be included in the aggregated execution.\n @param advancedOrders        The orders to aggregate.\n @param side                  The side (i.e. offer or consideration).\n @param fulfillmentComponents An array designating item components to\n                              aggregate if part of an available order.\n @param fulfillerConduitKey   A bytes32 value indicating what conduit, if\n                              any, to source the fulfiller's token\n                              approvals from. The zero hash signifies that\n                              no conduit should be used, with approvals\n                              set directly on this contract.\n @return execution The transfer performed as a result of the fulfillment."
                  },
                  "id": 5290,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_aggregateAvailable",
                  "nameLocation": "6025:19:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5222,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5212,
                        "mutability": "mutable",
                        "name": "advancedOrders",
                        "nameLocation": "6077:14:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 5290,
                        "src": "6054:37:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct AdvancedOrder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5210,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5209,
                              "name": "AdvancedOrder",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4031,
                              "src": "6054:13:29"
                            },
                            "referencedDeclaration": 4031,
                            "src": "6054:13:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                              "typeString": "struct AdvancedOrder"
                            }
                          },
                          "id": 5211,
                          "nodeType": "ArrayTypeName",
                          "src": "6054:15:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                            "typeString": "struct AdvancedOrder[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5215,
                        "mutability": "mutable",
                        "name": "side",
                        "nameLocation": "6106:4:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 5290,
                        "src": "6101:9:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_Side_$3857",
                          "typeString": "enum Side"
                        },
                        "typeName": {
                          "id": 5214,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5213,
                            "name": "Side",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3857,
                            "src": "6101:4:29"
                          },
                          "referencedDeclaration": 3857,
                          "src": "6101:4:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_Side_$3857",
                            "typeString": "enum Side"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5219,
                        "mutability": "mutable",
                        "name": "fulfillmentComponents",
                        "nameLocation": "6150:21:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 5290,
                        "src": "6120:51:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct FulfillmentComponent[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5217,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5216,
                              "name": "FulfillmentComponent",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4067,
                              "src": "6120:20:29"
                            },
                            "referencedDeclaration": 4067,
                            "src": "6120:20:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                              "typeString": "struct FulfillmentComponent"
                            }
                          },
                          "id": 5218,
                          "nodeType": "ArrayTypeName",
                          "src": "6120:22:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                            "typeString": "struct FulfillmentComponent[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5221,
                        "mutability": "mutable",
                        "name": "fulfillerConduitKey",
                        "nameLocation": "6189:19:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 5290,
                        "src": "6181:27:29",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5220,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6181:7:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6044:170:29"
                  },
                  "returnParameters": {
                    "id": 5226,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5225,
                        "mutability": "mutable",
                        "name": "execution",
                        "nameLocation": "6255:9:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 5290,
                        "src": "6238:26:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                          "typeString": "struct Execution"
                        },
                        "typeName": {
                          "id": 5224,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5223,
                            "name": "Execution",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4075,
                            "src": "6238:9:29"
                          },
                          "referencedDeclaration": 4075,
                          "src": "6238:9:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                            "typeString": "struct Execution"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6237:28:29"
                  },
                  "scope": 5325,
                  "src": "6016:1908:29",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5306,
                    "nodeType": "Block",
                    "src": "8748:10684:29",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "8767:10659:29",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "8902:318:29",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9005:1:29",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "name": "InvalidFulfillmentComponentData_error_signature",
                                          "nodeType": "YulIdentifier",
                                          "src": "9008:47:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "8998:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "8998:58:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "8998:58:29"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9161:1:29",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "name": "InvalidFulfillmentComponentData_error_len",
                                          "nodeType": "YulIdentifier",
                                          "src": "9164:41:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9154:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9154:52:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9154:52:29"
                                  }
                                ]
                              },
                              "name": "throwInvalidFulfillmentComponentData",
                              "nodeType": "YulFunctionDefinition",
                              "src": "8854:366:29"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "9332:378:29",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9409:1:29",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "name": "Panic_error_signature",
                                          "nodeType": "YulIdentifier",
                                          "src": "9412:21:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9402:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9402:32:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9402:32:29"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "Panic_error_offset",
                                          "nodeType": "YulIdentifier",
                                          "src": "9538:18:29"
                                        },
                                        {
                                          "name": "Panic_arithmetic",
                                          "nodeType": "YulIdentifier",
                                          "src": "9558:16:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "9531:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9531:44:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9531:44:29"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "9674:1:29",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "name": "Panic_error_length",
                                          "nodeType": "YulIdentifier",
                                          "src": "9677:18:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "9667:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "9667:29:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "9667:29:29"
                                  }
                                ]
                              },
                              "name": "throwOverflow",
                              "nodeType": "YulFunctionDefinition",
                              "src": "9307:403:29"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9777:55:29",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offerComponents",
                                    "nodeType": "YulIdentifier",
                                    "src": "9807:15:29"
                                  },
                                  {
                                    "name": "OneWord",
                                    "nodeType": "YulIdentifier",
                                    "src": "9824:7:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "9803:3:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9803:29:29"
                              },
                              "variables": [
                                {
                                  "name": "fulfillmentHeadPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "9781:18:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9917:50:29",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "fulfillmentHeadPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "9947:18:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "9941:5:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "9941:25:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9935:5:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9935:32:29"
                              },
                              "variables": [
                                {
                                  "name": "orderIndex",
                                  "nodeType": "YulTypedName",
                                  "src": "9921:10:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10094:70:29",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "throwInvalidFulfillmentComponentData",
                                        "nodeType": "YulIdentifier",
                                        "src": "10112:36:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10112:38:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10112:38:29"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "orderIndex",
                                        "nodeType": "YulIdentifier",
                                        "src": "10058:10:29"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "advancedOrders",
                                            "nodeType": "YulIdentifier",
                                            "src": "10076:14:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "10070:5:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10070:21:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "10055:2:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10055:37:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "10048:6:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10048:45:29"
                              },
                              "nodeType": "YulIf",
                              "src": "10045:119:29"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10254:186:29",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "advancedOrders",
                                            "nodeType": "YulIdentifier",
                                            "src": "10375:14:29"
                                          },
                                          {
                                            "name": "OneWord",
                                            "nodeType": "YulIdentifier",
                                            "src": "10391:7:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "10371:3:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10371:28:29"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "orderIndex",
                                            "nodeType": "YulIdentifier",
                                            "src": "10405:10:29"
                                          },
                                          {
                                            "name": "OneWord",
                                            "nodeType": "YulIdentifier",
                                            "src": "10417:7:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "10401:3:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10401:24:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10367:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10367:59:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10270:5:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10270:170:29"
                              },
                              "variables": [
                                {
                                  "name": "orderPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "10258:8:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10529:32:29",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "orderPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "10552:8:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10546:5:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10546:15:29"
                              },
                              "variables": [
                                {
                                  "name": "paramsPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "10533:9:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10620:105:29",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "paramsPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10666:9:29"
                                      },
                                      {
                                        "name": "OrderParameters_offer_head_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "10677:33:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10662:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10662:49:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10639:5:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10639:86:29"
                              },
                              "variables": [
                                {
                                  "name": "offerArrPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "10624:11:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10818:114:29",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "fulfillmentHeadPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "10868:18:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "10862:5:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "10862:25:29"
                                      },
                                      {
                                        "name": "Fulfillment_itemIndex_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "10889:28:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "10858:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10858:60:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10835:5:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10835:97:29"
                              },
                              "variables": [
                                {
                                  "name": "itemIndex",
                                  "nodeType": "YulTypedName",
                                  "src": "10822:9:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11055:70:29",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "throwInvalidFulfillmentComponentData",
                                        "nodeType": "YulIdentifier",
                                        "src": "11073:36:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11073:38:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "11073:38:29"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "itemIndex",
                                        "nodeType": "YulIdentifier",
                                        "src": "11023:9:29"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "offerArrPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "11040:11:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "11034:5:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11034:18:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "11020:2:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11020:33:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "11013:6:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11013:41:29"
                              },
                              "nodeType": "YulIf",
                              "src": "11010:115:29"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11212:305:29",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offerArrPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "11349:11:29"
                                          },
                                          {
                                            "name": "OneWord",
                                            "nodeType": "YulIdentifier",
                                            "src": "11362:7:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "11345:3:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11345:25:29"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "itemIndex",
                                            "nodeType": "YulIdentifier",
                                            "src": "11466:9:29"
                                          },
                                          {
                                            "name": "OneWord",
                                            "nodeType": "YulIdentifier",
                                            "src": "11477:7:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "11462:3:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "11462:23:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11255:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11255:248:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11232:5:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11232:285:29"
                              },
                              "variables": [
                                {
                                  "name": "offerItemPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "11216:12:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11603:15:29",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11617:1:29",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "amount",
                                  "nodeType": "YulTypedName",
                                  "src": "11607:6:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11704:20:29",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "11723:1:29",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "errorBuffer",
                                  "nodeType": "YulTypedName",
                                  "src": "11708:11:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11875:464:29",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "11970:56:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "offerItemPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "11991:12:29"
                                        },
                                        {
                                          "name": "Common_amount_offset",
                                          "nodeType": "YulIdentifier",
                                          "src": "12005:20:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "11987:3:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11987:39:29"
                                    },
                                    "variables": [
                                      {
                                        "name": "amountPtr",
                                        "nodeType": "YulTypedName",
                                        "src": "11974:9:29",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12079:26:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "amountPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "12095:9:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "12089:5:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12089:16:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "amount",
                                        "nodeType": "YulIdentifier",
                                        "src": "12079:6:29"
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "amountPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "12201:9:29"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "12212:1:29",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "12194:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12194:20:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "12194:20:29"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "12296:29:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "amount",
                                          "nodeType": "YulIdentifier",
                                          "src": "12318:6:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "12311:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "12311:14:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "errorBuffer",
                                        "nodeType": "YulIdentifier",
                                        "src": "12296:11:29"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "orderPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "11832:8:29"
                                      },
                                      {
                                        "name": "AdvancedOrder_numerator_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "11842:30:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "11828:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11828:45:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "11822:5:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11822:52:29"
                              },
                              "nodeType": "YulIf",
                              "src": "11819:520:29"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "12404:39:29",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "execution",
                                    "nodeType": "YulIdentifier",
                                    "src": "12433:9:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "12427:5:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12427:16:29"
                              },
                              "variables": [
                                {
                                  "name": "receivedItemPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "12408:15:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "receivedItemPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "12554:15:29"
                                      },
                                      {
                                        "name": "ReceivedItem_recipient_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "12571:29:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12550:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12550:51:29"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "caller",
                                      "nodeType": "YulIdentifier",
                                      "src": "12619:6:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12619:8:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12526:6:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12526:115:29"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12526:115:29"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "receivedItemPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "12717:15:29"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offerItemPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "12740:12:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "12734:5:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12734:19:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12710:6:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12710:44:29"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12710:44:29"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "receivedItemPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "12847:15:29"
                                      },
                                      {
                                        "name": "Common_token_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "12864:19:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12843:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12843:41:29"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offerItemPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "12912:12:29"
                                          },
                                          {
                                            "name": "Common_token_offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "12926:19:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "12908:3:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "12908:38:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "12902:5:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12902:45:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12819:6:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12819:142:29"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12819:142:29"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "receivedItemPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "13059:15:29"
                                      },
                                      {
                                        "name": "Common_identifier_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "13076:24:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13055:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13055:46:29"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offerItemPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "13129:12:29"
                                          },
                                          {
                                            "name": "Common_identifier_offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "13143:24:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "13125:3:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13125:43:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "13119:5:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13119:50:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13031:6:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13031:152:29"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13031:152:29"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "execution",
                                        "nodeType": "YulIdentifier",
                                        "src": "13282:9:29"
                                      },
                                      {
                                        "name": "Execution_offerer_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "13293:24:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13278:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13278:40:29"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "paramsPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "13326:9:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "13320:5:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13320:16:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13271:6:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13271:66:29"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13271:66:29"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "execution",
                                        "nodeType": "YulIdentifier",
                                        "src": "13460:9:29"
                                      },
                                      {
                                        "name": "Execution_conduit_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "13471:24:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "13456:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13456:40:29"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "paramsPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "13524:9:29"
                                          },
                                          {
                                            "name": "OrderParameters_conduit_offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "13535:30:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "13520:3:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13520:46:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "13514:5:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13514:53:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13432:6:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13432:149:29"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13432:149:29"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13663:120:29",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "receivedItemPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "13706:15:29"
                                  },
                                  {
                                    "name": "ReceivedItem_CommonParams_size",
                                    "nodeType": "YulIdentifier",
                                    "src": "13739:30:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "13679:9:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13679:104:29"
                              },
                              "variables": [
                                {
                                  "name": "dataHash",
                                  "nodeType": "YulTypedName",
                                  "src": "13667:8:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "13870:118:29",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offerComponents",
                                    "nodeType": "YulIdentifier",
                                    "src": "13905:15:29"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "offerComponents",
                                            "nodeType": "YulIdentifier",
                                            "src": "13948:15:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "13942:5:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "13942:22:29"
                                      },
                                      {
                                        "name": "OneWord",
                                        "nodeType": "YulIdentifier",
                                        "src": "13966:7:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "13938:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "13938:36:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13884:3:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13884:104:29"
                              },
                              "variables": [
                                {
                                  "name": "endPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "13874:6:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "14131:4659:29",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14227:54:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "fulfillmentHeadPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "14253:18:29"
                                        },
                                        {
                                          "name": "OneWord",
                                          "nodeType": "YulIdentifier",
                                          "src": "14273:7:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "14249:3:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14249:32:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "fulfillmentHeadPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "14227:18:29"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14369:46:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "fulfillmentHeadPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "14395:18:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "14389:5:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14389:25:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "14383:5:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14383:32:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "orderIndex",
                                        "nodeType": "YulIdentifier",
                                        "src": "14369:10:29"
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "14537:76:29",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "throwInvalidFulfillmentComponentData",
                                              "nodeType": "YulIdentifier",
                                              "src": "14557:36:29"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "14557:38:29"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "14557:38:29"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "orderIndex",
                                              "nodeType": "YulIdentifier",
                                              "src": "14501:10:29"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "advancedOrders",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14519:14:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "14513:5:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "14513:21:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "14498:2:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14498:37:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "14491:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14491:45:29"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "14488:125:29"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "14688:186:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "advancedOrders",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14760:14:29"
                                                },
                                                {
                                                  "name": "OneWord",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14776:7:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "14756:3:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "14756:28:29"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "orderIndex",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14814:10:29"
                                                },
                                                {
                                                  "name": "OneWord",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14826:7:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mul",
                                                "nodeType": "YulIdentifier",
                                                "src": "14810:3:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "14810:24:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "14727:3:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14727:129:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "14700:5:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14700:174:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "orderPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "14688:8:29"
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "15053:46:29",
                                      "statements": [
                                        {
                                          "nodeType": "YulContinue",
                                          "src": "15073:8:29"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "orderPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14992:8:29"
                                                },
                                                {
                                                  "name": "AdvancedOrder_numerator_offset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15002:30:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "14988:3:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "14988:45:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "14961:5:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14961:90:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "14954:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14954:98:29"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "14951:148:29"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "15196:28:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "orderPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "15215:8:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "15209:5:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15209:15:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "paramsPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "15196:9:29"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "15287:179:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "paramsPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "15358:9:29"
                                            },
                                            {
                                              "name": "OrderParameters_offer_head_offset",
                                              "nodeType": "YulIdentifier",
                                              "src": "15393:33:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "15329:3:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15329:119:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "15302:5:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15302:164:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "offerArrPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "15287:11:29"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "15553:59:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "fulfillmentHeadPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15582:18:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "15576:5:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "15576:25:29"
                                            },
                                            {
                                              "name": "OneWord",
                                              "nodeType": "YulIdentifier",
                                              "src": "15603:7:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "15572:3:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15572:39:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "15566:5:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15566:46:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "itemIndex",
                                        "nodeType": "YulIdentifier",
                                        "src": "15553:9:29"
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "15781:78:29",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "throwInvalidFulfillmentComponentData",
                                              "nodeType": "YulIdentifier",
                                              "src": "15803:36:29"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "15803:38:29"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "15803:38:29"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "itemIndex",
                                              "nodeType": "YulIdentifier",
                                              "src": "15732:9:29"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "offerArrPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15749:11:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "15743:5:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "15743:18:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "15729:2:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15729:33:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "15701:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15701:79:29"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "15698:161:29"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "15937:323:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "offerArrPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "16082:11:29"
                                                },
                                                {
                                                  "name": "OneWord",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "16095:7:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "16078:3:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "16078:25:29"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "itemIndex",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "16201:9:29"
                                                },
                                                {
                                                  "name": "OneWord",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "16212:7:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mul",
                                                "nodeType": "YulIdentifier",
                                                "src": "16197:3:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "16197:23:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "15980:3:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "15980:262:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "15953:5:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15953:307:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "offerItemPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "15937:12:29"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "16347:118:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "offerItemPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "16391:12:29"
                                        },
                                        {
                                          "name": "Common_amount_offset",
                                          "nodeType": "YulIdentifier",
                                          "src": "16427:20:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "16364:3:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16364:101:29"
                                    },
                                    "variables": [
                                      {
                                        "name": "amountPtr",
                                        "nodeType": "YulTypedName",
                                        "src": "16351:9:29",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "16540:46:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "amount",
                                          "nodeType": "YulIdentifier",
                                          "src": "16561:6:29"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "amountPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "16575:9:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "16569:5:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "16569:16:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "16557:3:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16557:29:29"
                                    },
                                    "variables": [
                                      {
                                        "name": "newAmount",
                                        "nodeType": "YulTypedName",
                                        "src": "16544:9:29",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "16676:205:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "errorBuffer",
                                          "nodeType": "YulIdentifier",
                                          "src": "16713:11:29"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "16772:1:29",
                                                  "type": "",
                                                  "value": "1"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "newAmount",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "16778:9:29"
                                                    },
                                                    {
                                                      "name": "amount",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "16789:6:29"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "lt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "16775:2:29"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "16775:21:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "shl",
                                                "nodeType": "YulIdentifier",
                                                "src": "16768:3:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "16768:29:29"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "amountPtr",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "16832:9:29"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "16826:5:29"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "16826:16:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "iszero",
                                                "nodeType": "YulIdentifier",
                                                "src": "16819:6:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "16819:24:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "or",
                                            "nodeType": "YulIdentifier",
                                            "src": "16744:2:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "16744:119:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "or",
                                        "nodeType": "YulIdentifier",
                                        "src": "16691:2:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16691:190:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "errorBuffer",
                                        "nodeType": "YulIdentifier",
                                        "src": "16676:11:29"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "16963:19:29",
                                    "value": {
                                      "name": "newAmount",
                                      "nodeType": "YulIdentifier",
                                      "src": "16973:9:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "amount",
                                        "nodeType": "YulIdentifier",
                                        "src": "16963:6:29"
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "amountPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "17087:9:29"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "17098:1:29",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "17080:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17080:20:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "17080:20:29"
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "18629:147:29",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "throwInvalidFulfillmentComponentData",
                                              "nodeType": "YulIdentifier",
                                              "src": "18720:36:29"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "18720:38:29"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "18720:38:29"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "paramsPtr",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "17384:9:29"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "mload",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "17378:5:29"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "17378:16:29"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "execution",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "17471:9:29"
                                                            },
                                                            {
                                                              "name": "Execution_offerer_offset",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "17482:24:29"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "17467:3:29"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "17467:40:29"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "mload",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "17426:5:29"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "17426:113:29"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "17344:2:29"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "17344:223:29"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "paramsPtr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "17784:9:29"
                                                            },
                                                            {
                                                              "name": "OrderParameters_conduit_offset",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "17833:30:29"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "17741:3:29"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "17741:158:29"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "mload",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "17700:5:29"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "17700:231:29"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "execution",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "18047:9:29"
                                                            },
                                                            {
                                                              "name": "Execution_conduit_offset",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "18096:24:29"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "18004:3:29"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "18004:152:29"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "mload",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "17963:5:29"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "17963:225:29"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "17666:2:29"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "17666:550:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "17246:3:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "17246:996:29"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "dataHash",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "18375:8:29"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "offerItemPtr",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "18456:12:29"
                                                    },
                                                    {
                                                      "name": "ReceivedItem_CommonParams_size",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "18502:30:29"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "keccak256",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "18413:9:29"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "18413:149:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "eq",
                                                "nodeType": "YulIdentifier",
                                                "src": "18343:2:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "18343:245:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "17217:3:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "17217:1393:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "17189:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17189:1439:29"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "17186:1590:29"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "fulfillmentHeadPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "14099:18:29"
                                  },
                                  {
                                    "name": "endPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "14120:6:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "14096:2:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14096:31:29"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "14128:2:29",
                                "statements": []
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "14093:2:29",
                                "statements": []
                              },
                              "src": "14089:4701:29"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "execution",
                                            "nodeType": "YulIdentifier",
                                            "src": "18868:9:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "18862:5:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "18862:16:29"
                                      },
                                      {
                                        "name": "Common_amount_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "18880:20:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "18858:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18858:43:29"
                                  },
                                  {
                                    "name": "amount",
                                    "nodeType": "YulIdentifier",
                                    "src": "18903:6:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "18851:6:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18851:59:29"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "18851:59:29"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "19038:262:29",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "19127:1:29",
                                              "type": "",
                                              "value": "0"
                                            },
                                            {
                                              "name": "MissingItemAmount_error_signature",
                                              "nodeType": "YulIdentifier",
                                              "src": "19130:33:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "19120:6:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "19120:44:29"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "19120:44:29"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "19255:1:29",
                                              "type": "",
                                              "value": "0"
                                            },
                                            {
                                              "name": "MissingItemAmount_error_len",
                                              "nodeType": "YulIdentifier",
                                              "src": "19258:27:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "19248:6:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "19248:38:29"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "19248:38:29"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "19031:269:29",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19036:1:29",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "19320:96:29",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [],
                                          "functionName": {
                                            "name": "throwOverflow",
                                            "nodeType": "YulIdentifier",
                                            "src": "19387:13:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "19387:15:29"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "19387:15:29"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "19313:103:29",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "19318:1:29",
                                    "type": "",
                                    "value": "2"
                                  }
                                }
                              ],
                              "expression": {
                                "name": "errorBuffer",
                                "nodeType": "YulIdentifier",
                                "src": "19007:11:29"
                              },
                              "nodeType": "YulSwitch",
                              "src": "19000:416:29"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3482,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11842:30:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3482,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "15002:30:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3413,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "12005:20:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3413,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16427:20:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3413,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18880:20:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3410,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13076:24:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3410,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13143:24:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3407,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "12864:19:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3407,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "12926:19:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3437,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13471:24:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3437,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18096:24:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3434,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13293:24:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3434,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "17482:24:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3479,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10889:28:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3444,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9164:41:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3441,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9008:47:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3464,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19258:27:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3461,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19130:33:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10391:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10417:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11362:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11477:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13966:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14273:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14776:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14826:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "15603:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16095:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16212:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9824:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3473,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13535:30:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3473,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "17833:30:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3467,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10677:33:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3467,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "15393:33:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3457,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9558:16:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3454,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9677:18:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3451,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9538:18:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3448,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9412:21:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3425,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13739:30:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3425,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18502:30:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3422,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "12571:29:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5295,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10076:14:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5295,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10375:14:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5295,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14519:14:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5295,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14760:14:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5302,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "12433:9:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5302,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13282:9:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5302,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13460:9:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5302,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "17471:9:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5302,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18047:9:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5302,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18868:9:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5299,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13905:15:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5299,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13948:15:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5299,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9807:15:29",
                            "valueSize": 1
                          }
                        ],
                        "id": 5305,
                        "nodeType": "InlineAssembly",
                        "src": "8758:10668:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5291,
                    "nodeType": "StructuredDocumentation",
                    "src": "7930:609:29",
                    "text": " @dev Internal pure function to aggregate a group of offer items using\n      supplied directives on which component items are candidates for\n      aggregation, skipping items on orders that are not available.\n @param advancedOrders  The orders to aggregate offer items from.\n @param offerComponents An array of FulfillmentComponent structs\n                        indicating the order index and item index of each\n                        candidate offer item for aggregation.\n @param execution       The execution to apply the aggregation to."
                  },
                  "id": 5307,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_aggregateValidFulfillmentOfferItems",
                  "nameLocation": "8553:36:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5303,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5295,
                        "mutability": "mutable",
                        "name": "advancedOrders",
                        "nameLocation": "8622:14:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 5307,
                        "src": "8599:37:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct AdvancedOrder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5293,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5292,
                              "name": "AdvancedOrder",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4031,
                              "src": "8599:13:29"
                            },
                            "referencedDeclaration": 4031,
                            "src": "8599:13:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                              "typeString": "struct AdvancedOrder"
                            }
                          },
                          "id": 5294,
                          "nodeType": "ArrayTypeName",
                          "src": "8599:15:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                            "typeString": "struct AdvancedOrder[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5299,
                        "mutability": "mutable",
                        "name": "offerComponents",
                        "nameLocation": "8676:15:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 5307,
                        "src": "8646:45:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct FulfillmentComponent[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5297,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5296,
                              "name": "FulfillmentComponent",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4067,
                              "src": "8646:20:29"
                            },
                            "referencedDeclaration": 4067,
                            "src": "8646:20:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                              "typeString": "struct FulfillmentComponent"
                            }
                          },
                          "id": 5298,
                          "nodeType": "ArrayTypeName",
                          "src": "8646:22:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                            "typeString": "struct FulfillmentComponent[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5302,
                        "mutability": "mutable",
                        "name": "execution",
                        "nameLocation": "8718:9:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 5307,
                        "src": "8701:26:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                          "typeString": "struct Execution"
                        },
                        "typeName": {
                          "id": 5301,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5300,
                            "name": "Execution",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4075,
                            "src": "8701:9:29"
                          },
                          "referencedDeclaration": 4075,
                          "src": "8701:9:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                            "typeString": "struct Execution"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8589:144:29"
                  },
                  "returnParameters": {
                    "id": 5304,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8748:0:29"
                  },
                  "scope": 5325,
                  "src": "8544:10888:29",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5323,
                    "nodeType": "Block",
                    "src": "20404:10251:29",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "20496:10153:29",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "20631:318:29",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20734:1:29",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "name": "InvalidFulfillmentComponentData_error_signature",
                                          "nodeType": "YulIdentifier",
                                          "src": "20737:47:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "20727:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20727:58:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20727:58:29"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "20890:1:29",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "name": "InvalidFulfillmentComponentData_error_len",
                                          "nodeType": "YulIdentifier",
                                          "src": "20893:41:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20883:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20883:52:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20883:52:29"
                                  }
                                ]
                              },
                              "name": "throwInvalidFulfillmentComponentData",
                              "nodeType": "YulFunctionDefinition",
                              "src": "20583:366:29"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21061:378:29",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21138:1:29",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "name": "Panic_error_signature",
                                          "nodeType": "YulIdentifier",
                                          "src": "21141:21:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "21131:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21131:32:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21131:32:29"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "Panic_error_offset",
                                          "nodeType": "YulIdentifier",
                                          "src": "21267:18:29"
                                        },
                                        {
                                          "name": "Panic_arithmetic",
                                          "nodeType": "YulIdentifier",
                                          "src": "21287:16:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "21260:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21260:44:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21260:44:29"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "21403:1:29",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "name": "Panic_error_length",
                                          "nodeType": "YulIdentifier",
                                          "src": "21406:18:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "21396:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21396:29:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21396:29:29"
                                  }
                                ]
                              },
                              "name": "throwOverflow",
                              "nodeType": "YulFunctionDefinition",
                              "src": "21036:403:29"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21514:63:29",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "considerationComponents",
                                    "nodeType": "YulIdentifier",
                                    "src": "21544:23:29"
                                  },
                                  {
                                    "name": "OneWord",
                                    "nodeType": "YulIdentifier",
                                    "src": "21569:7:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "21540:3:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21540:37:29"
                              },
                              "variables": [
                                {
                                  "name": "fulfillmentHeadPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "21518:18:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21662:50:29",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "fulfillmentHeadPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "21692:18:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "21686:5:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21686:25:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "21680:5:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21680:32:29"
                              },
                              "variables": [
                                {
                                  "name": "orderIndex",
                                  "nodeType": "YulTypedName",
                                  "src": "21666:10:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "21839:70:29",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "throwInvalidFulfillmentComponentData",
                                        "nodeType": "YulIdentifier",
                                        "src": "21857:36:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "21857:38:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "21857:38:29"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "orderIndex",
                                        "nodeType": "YulIdentifier",
                                        "src": "21803:10:29"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "advancedOrders",
                                            "nodeType": "YulIdentifier",
                                            "src": "21821:14:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "21815:5:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "21815:21:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "21800:2:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "21800:37:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "21793:6:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "21793:45:29"
                              },
                              "nodeType": "YulIf",
                              "src": "21790:119:29"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21999:186:29",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "advancedOrders",
                                            "nodeType": "YulIdentifier",
                                            "src": "22120:14:29"
                                          },
                                          {
                                            "name": "OneWord",
                                            "nodeType": "YulIdentifier",
                                            "src": "22136:7:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "22116:3:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22116:28:29"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "orderIndex",
                                            "nodeType": "YulIdentifier",
                                            "src": "22150:10:29"
                                          },
                                          {
                                            "name": "OneWord",
                                            "nodeType": "YulIdentifier",
                                            "src": "22162:7:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "22146:3:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22146:24:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22112:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22112:59:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22015:5:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22015:170:29"
                              },
                              "variables": [
                                {
                                  "name": "orderPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "22003:8:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22248:264:29",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "orderPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "22408:8:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "22402:5:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22402:15:29"
                                      },
                                      {
                                        "name": "OrderParameters_consideration_head_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "22439:41:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22298:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22298:200:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22275:5:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22275:237:29"
                              },
                              "variables": [
                                {
                                  "name": "considerationArrPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "22252:19:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22605:114:29",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "fulfillmentHeadPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "22655:18:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "22649:5:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22649:25:29"
                                      },
                                      {
                                        "name": "Fulfillment_itemIndex_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "22676:28:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "22645:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22645:60:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "22622:5:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22622:97:29"
                              },
                              "variables": [
                                {
                                  "name": "itemIndex",
                                  "nodeType": "YulTypedName",
                                  "src": "22609:9:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22850:70:29",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "throwInvalidFulfillmentComponentData",
                                        "nodeType": "YulIdentifier",
                                        "src": "22868:36:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22868:38:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "22868:38:29"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "itemIndex",
                                        "nodeType": "YulIdentifier",
                                        "src": "22810:9:29"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "considerationArrPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "22827:19:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "22821:5:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "22821:26:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "lt",
                                      "nodeType": "YulIdentifier",
                                      "src": "22807:2:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "22807:41:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "22800:6:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22800:49:29"
                              },
                              "nodeType": "YulIf",
                              "src": "22797:123:29"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23007:321:29",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "considerationArrPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "23152:19:29"
                                          },
                                          {
                                            "name": "OneWord",
                                            "nodeType": "YulIdentifier",
                                            "src": "23173:7:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "23148:3:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23148:33:29"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "itemIndex",
                                            "nodeType": "YulIdentifier",
                                            "src": "23277:9:29"
                                          },
                                          {
                                            "name": "OneWord",
                                            "nodeType": "YulIdentifier",
                                            "src": "23288:7:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mul",
                                          "nodeType": "YulIdentifier",
                                          "src": "23273:3:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "23273:23:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23058:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23058:256:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "23035:5:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23035:293:29"
                              },
                              "variables": [
                                {
                                  "name": "considerationItemPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "23011:20:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23414:15:29",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "23428:1:29",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "amount",
                                  "nodeType": "YulTypedName",
                                  "src": "23418:6:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "23515:20:29",
                              "value": {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "23534:1:29",
                                "type": "",
                                "value": "0"
                              },
                              "variables": [
                                {
                                  "name": "errorBuffer",
                                  "nodeType": "YulTypedName",
                                  "src": "23519:11:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "23720:460:29",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "23815:64:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "considerationItemPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "23836:20:29"
                                        },
                                        {
                                          "name": "Common_amount_offset",
                                          "nodeType": "YulIdentifier",
                                          "src": "23858:20:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "23832:3:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23832:47:29"
                                    },
                                    "variables": [
                                      {
                                        "name": "amountPtr",
                                        "nodeType": "YulTypedName",
                                        "src": "23819:9:29",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "23932:26:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "amountPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "23948:9:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "23942:5:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23942:16:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "amount",
                                        "nodeType": "YulIdentifier",
                                        "src": "23932:6:29"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "24028:29:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "amount",
                                          "nodeType": "YulIdentifier",
                                          "src": "24050:6:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "24043:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24043:14:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "errorBuffer",
                                        "nodeType": "YulIdentifier",
                                        "src": "24028:11:29"
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "amountPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "24153:9:29"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24164:1:29",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "24146:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24146:20:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24146:20:29"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "orderPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "23677:8:29"
                                      },
                                      {
                                        "name": "AdvancedOrder_numerator_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "23687:30:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "23673:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "23673:45:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "23667:5:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "23667:52:29"
                              },
                              "nodeType": "YulIf",
                              "src": "23664:516:29"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "24255:36:29",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "execution",
                                    "nodeType": "YulIdentifier",
                                    "src": "24281:9:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "24275:5:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24275:16:29"
                              },
                              "variables": [
                                {
                                  "name": "receivedItem",
                                  "nodeType": "YulTypedName",
                                  "src": "24259:12:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "receivedItem",
                                    "nodeType": "YulIdentifier",
                                    "src": "24367:12:29"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "considerationItemPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "24387:20:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "24381:5:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24381:27:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24360:6:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24360:49:29"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24360:49:29"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "receivedItem",
                                        "nodeType": "YulIdentifier",
                                        "src": "24502:12:29"
                                      },
                                      {
                                        "name": "Common_token_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "24516:19:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24498:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24498:38:29"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "considerationItemPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "24564:20:29"
                                          },
                                          {
                                            "name": "Common_token_offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "24586:19:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "24560:3:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24560:46:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "24554:5:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24554:53:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24474:6:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24474:147:29"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24474:147:29"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "receivedItem",
                                        "nodeType": "YulIdentifier",
                                        "src": "24719:12:29"
                                      },
                                      {
                                        "name": "Common_identifier_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "24733:24:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24715:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24715:43:29"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "considerationItemPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "24786:20:29"
                                          },
                                          {
                                            "name": "Common_identifier_offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "24808:24:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "24782:3:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "24782:51:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "24776:5:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24776:58:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24691:6:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24691:157:29"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24691:157:29"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "receivedItem",
                                        "nodeType": "YulIdentifier",
                                        "src": "24945:12:29"
                                      },
                                      {
                                        "name": "ReceivedItem_recipient_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "24959:29:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "24941:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "24941:48:29"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "considerationItemPtr",
                                            "nodeType": "YulIdentifier",
                                            "src": "25063:20:29"
                                          },
                                          {
                                            "name": "ConsiderationItem_recipient_offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "25109:34:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "25034:3:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25034:131:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "25007:5:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25007:176:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "24917:6:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "24917:280:29"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "24917:280:29"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25279:117:29",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "receivedItem",
                                    "nodeType": "YulIdentifier",
                                    "src": "25322:12:29"
                                  },
                                  {
                                    "name": "ReceivedItem_CommonParams_size",
                                    "nodeType": "YulIdentifier",
                                    "src": "25352:30:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "25295:9:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25295:101:29"
                              },
                              "variables": [
                                {
                                  "name": "dataHash",
                                  "nodeType": "YulTypedName",
                                  "src": "25283:8:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "25483:134:29",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "considerationComponents",
                                    "nodeType": "YulIdentifier",
                                    "src": "25518:23:29"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "considerationComponents",
                                            "nodeType": "YulIdentifier",
                                            "src": "25569:23:29"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "25563:5:29"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "25563:30:29"
                                      },
                                      {
                                        "name": "OneWord",
                                        "nodeType": "YulIdentifier",
                                        "src": "25595:7:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "25559:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "25559:44:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "25497:3:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25497:120:29"
                              },
                              "variables": [
                                {
                                  "name": "endPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "25487:6:29",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "25760:4257:29",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "25849:54:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "fulfillmentHeadPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "25875:18:29"
                                        },
                                        {
                                          "name": "OneWord",
                                          "nodeType": "YulIdentifier",
                                          "src": "25895:7:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "25871:3:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25871:32:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "fulfillmentHeadPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "25849:18:29"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "25991:46:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "fulfillmentHeadPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "26017:18:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "26011:5:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "26011:25:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "26005:5:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "26005:32:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "orderIndex",
                                        "nodeType": "YulIdentifier",
                                        "src": "25991:10:29"
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "26159:76:29",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "throwInvalidFulfillmentComponentData",
                                              "nodeType": "YulIdentifier",
                                              "src": "26179:36:29"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "26179:38:29"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "26179:38:29"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "orderIndex",
                                              "nodeType": "YulIdentifier",
                                              "src": "26123:10:29"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "advancedOrders",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "26141:14:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "26135:5:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "26135:21:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "26120:2:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "26120:37:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "26113:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "26113:45:29"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "26110:125:29"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "26310:186:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "advancedOrders",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "26382:14:29"
                                                },
                                                {
                                                  "name": "OneWord",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "26398:7:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "26378:3:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "26378:28:29"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "orderIndex",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "26436:10:29"
                                                },
                                                {
                                                  "name": "OneWord",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "26448:7:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mul",
                                                "nodeType": "YulIdentifier",
                                                "src": "26432:3:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "26432:24:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "26349:3:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "26349:129:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "26322:5:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "26322:174:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "orderPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "26310:8:29"
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "26675:46:29",
                                      "statements": [
                                        {
                                          "nodeType": "YulContinue",
                                          "src": "26695:8:29"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "orderPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "26614:8:29"
                                                },
                                                {
                                                  "name": "AdvancedOrder_numerator_offset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "26624:30:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "26610:3:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "26610:45:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "26604:5:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "26604:52:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "26576:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "26576:98:29"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "26573:148:29"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "26813:279:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "orderPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "26976:8:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "26970:5:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "26970:15:29"
                                            },
                                            {
                                              "name": "OrderParameters_consideration_head_offset",
                                              "nodeType": "YulIdentifier",
                                              "src": "27011:41:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "26863:3:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "26863:211:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "26836:5:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "26836:256:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "considerationArrPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "26813:19:29"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "27179:59:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "fulfillmentHeadPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "27208:18:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "27202:5:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "27202:25:29"
                                            },
                                            {
                                              "name": "OneWord",
                                              "nodeType": "YulIdentifier",
                                              "src": "27229:7:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "27198:3:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "27198:39:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "27192:5:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27192:46:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "itemIndex",
                                        "nodeType": "YulIdentifier",
                                        "src": "27179:9:29"
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "27377:78:29",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "throwInvalidFulfillmentComponentData",
                                              "nodeType": "YulIdentifier",
                                              "src": "27399:36:29"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "27399:38:29"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "27399:38:29"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "itemIndex",
                                              "nodeType": "YulIdentifier",
                                              "src": "27337:9:29"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "considerationArrPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "27354:19:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "27348:5:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "27348:26:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "lt",
                                            "nodeType": "YulIdentifier",
                                            "src": "27334:2:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "27334:41:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "27327:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27327:49:29"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "27324:131:29"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "27541:339:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "considerationArrPtr",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "27694:19:29"
                                                },
                                                {
                                                  "name": "OneWord",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "27715:7:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "27690:3:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "27690:33:29"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "itemIndex",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "27821:9:29"
                                                },
                                                {
                                                  "name": "OneWord",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "27832:7:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mul",
                                                "nodeType": "YulIdentifier",
                                                "src": "27817:3:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "27817:23:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "27592:3:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "27592:270:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "27565:5:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27565:315:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "considerationItemPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "27541:20:29"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "27975:126:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "considerationItemPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "28019:20:29"
                                        },
                                        {
                                          "name": "Common_amount_offset",
                                          "nodeType": "YulIdentifier",
                                          "src": "28063:20:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "27992:3:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27992:109:29"
                                    },
                                    "variables": [
                                      {
                                        "name": "amountPtr",
                                        "nodeType": "YulTypedName",
                                        "src": "27979:9:29",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "28176:46:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "amount",
                                          "nodeType": "YulIdentifier",
                                          "src": "28197:6:29"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "amountPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "28211:9:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "28205:5:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "28205:16:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "28193:3:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28193:29:29"
                                    },
                                    "variables": [
                                      {
                                        "name": "newAmount",
                                        "nodeType": "YulTypedName",
                                        "src": "28180:9:29",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "28312:205:29",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "errorBuffer",
                                          "nodeType": "YulIdentifier",
                                          "src": "28349:11:29"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "28408:1:29",
                                                  "type": "",
                                                  "value": "1"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "newAmount",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "28414:9:29"
                                                    },
                                                    {
                                                      "name": "amount",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "28425:6:29"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "lt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "28411:2:29"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "28411:21:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "shl",
                                                "nodeType": "YulIdentifier",
                                                "src": "28404:3:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "28404:29:29"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "amountPtr",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "28468:9:29"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "28462:5:29"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "28462:16:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "iszero",
                                                "nodeType": "YulIdentifier",
                                                "src": "28455:6:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "28455:24:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "or",
                                            "nodeType": "YulIdentifier",
                                            "src": "28380:2:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "28380:119:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "or",
                                        "nodeType": "YulIdentifier",
                                        "src": "28327:2:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28327:190:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "errorBuffer",
                                        "nodeType": "YulIdentifier",
                                        "src": "28312:11:29"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "28599:19:29",
                                    "value": {
                                      "name": "newAmount",
                                      "nodeType": "YulIdentifier",
                                      "src": "28609:9:29"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "amount",
                                        "nodeType": "YulIdentifier",
                                        "src": "28599:6:29"
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "amountPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "28723:9:29"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "28734:1:29",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "28716:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28716:20:29"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "28716:20:29"
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "29856:147:29",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "throwInvalidFulfillmentComponentData",
                                              "nodeType": "YulIdentifier",
                                              "src": "29947:36:29"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "29947:38:29"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "29947:38:29"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "considerationItemPtr",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "29049:20:29"
                                                        },
                                                        {
                                                          "name": "ConsiderItem_recipient_offset",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "29107:29:29"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "29008:3:29"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "29008:162:29"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "28969:5:29"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "28969:231:29"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "receivedItem",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "29310:12:29"
                                                        },
                                                        {
                                                          "name": "ReceivedItem_recipient_offset",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "29360:29:29"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "29269:3:29"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "29269:154:29"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "29230:5:29"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "29230:223:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "eq",
                                                "nodeType": "YulIdentifier",
                                                "src": "28937:2:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "28937:542:29"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "dataHash",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "29606:8:29"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "considerationItemPtr",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "29681:20:29"
                                                    },
                                                    {
                                                      "name": "ReceivedItem_CommonParams_size",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "29731:30:29"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "keccak256",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "29642:9:29"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "29642:147:29"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "eq",
                                                "nodeType": "YulIdentifier",
                                                "src": "29576:2:29"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "29576:239:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "28853:3:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "28853:984:29"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "28825:6:29"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28825:1030:29"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "28822:1181:29"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "fulfillmentHeadPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "25728:18:29"
                                  },
                                  {
                                    "name": "endPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "25749:6:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "25725:2:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25725:31:29"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "25757:2:29",
                                "statements": []
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "25722:2:29",
                                "statements": []
                              },
                              "src": "25718:4299:29"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "receivedItem",
                                        "nodeType": "YulIdentifier",
                                        "src": "30089:12:29"
                                      },
                                      {
                                        "name": "Common_amount_offset",
                                        "nodeType": "YulIdentifier",
                                        "src": "30103:20:29"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "30085:3:29"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "30085:39:29"
                                  },
                                  {
                                    "name": "amount",
                                    "nodeType": "YulIdentifier",
                                    "src": "30126:6:29"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "30078:6:29"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "30078:55:29"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "30078:55:29"
                            },
                            {
                              "cases": [
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "30261:262:29",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "30350:1:29",
                                              "type": "",
                                              "value": "0"
                                            },
                                            {
                                              "name": "MissingItemAmount_error_signature",
                                              "nodeType": "YulIdentifier",
                                              "src": "30353:33:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "30343:6:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "30343:44:29"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "30343:44:29"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "30478:1:29",
                                              "type": "",
                                              "value": "0"
                                            },
                                            {
                                              "name": "MissingItemAmount_error_len",
                                              "nodeType": "YulIdentifier",
                                              "src": "30481:27:29"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "revert",
                                            "nodeType": "YulIdentifier",
                                            "src": "30471:6:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "30471:38:29"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "30471:38:29"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "30254:269:29",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30259:1:29",
                                    "type": "",
                                    "value": "1"
                                  }
                                },
                                {
                                  "body": {
                                    "nodeType": "YulBlock",
                                    "src": "30543:96:29",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [],
                                          "functionName": {
                                            "name": "throwOverflow",
                                            "nodeType": "YulIdentifier",
                                            "src": "30610:13:29"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "30610:15:29"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "30610:15:29"
                                      }
                                    ]
                                  },
                                  "nodeType": "YulCase",
                                  "src": "30536:103:29",
                                  "value": {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "30541:1:29",
                                    "type": "",
                                    "value": "2"
                                  }
                                }
                              ],
                              "expression": {
                                "name": "errorBuffer",
                                "nodeType": "YulIdentifier",
                                "src": "30230:11:29"
                              },
                              "nodeType": "YulSwitch",
                              "src": "30223:416:29"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3482,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "23687:30:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3482,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "26624:30:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3413,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "23858:20:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3413,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "28063:20:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3413,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "30103:20:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3410,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24733:24:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3410,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24808:24:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3407,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24516:19:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3407,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24586:19:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3431,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "29107:29:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3428,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25109:34:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3479,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "22676:28:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3444,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20893:41:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3441,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20737:47:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3464,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "30481:27:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3461,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "30353:33:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "21569:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "22136:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "22162:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "23173:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "23288:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25595:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25895:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "26398:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "26448:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "27229:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "27715:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "27832:7:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3470,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "22439:41:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3470,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "27011:41:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3457,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "21287:16:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3454,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "21406:18:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3451,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "21267:18:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3448,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "21141:21:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3425,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25352:30:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3425,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "29731:30:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3422,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24959:29:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3422,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "29360:29:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5312,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "21821:14:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5312,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "22120:14:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5312,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "26141:14:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5312,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "26382:14:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5316,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "21544:23:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5316,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25518:23:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5316,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25569:23:29",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5319,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24281:9:29",
                            "valueSize": 1
                          }
                        ],
                        "id": 5322,
                        "nodeType": "InlineAssembly",
                        "src": "20487:10162:29"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5308,
                    "nodeType": "StructuredDocumentation",
                    "src": "19438:741:29",
                    "text": " @dev Internal pure function to aggregate a group of consideration items\n      using supplied directives on which component items are candidates\n      for aggregation, skipping items on orders that are not available.\n @param advancedOrders          The orders to aggregate consideration\n                                items from.\n @param considerationComponents An array of FulfillmentComponent structs\n                                indicating the order index and item index\n                                of each candidate consideration item for\n                                aggregation.\n @param execution       The execution to apply the aggregation to."
                  },
                  "id": 5324,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_aggregateValidFulfillmentConsiderationItems",
                  "nameLocation": "20193:44:29",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5320,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5312,
                        "mutability": "mutable",
                        "name": "advancedOrders",
                        "nameLocation": "20270:14:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 5324,
                        "src": "20247:37:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct AdvancedOrder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5310,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5309,
                              "name": "AdvancedOrder",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4031,
                              "src": "20247:13:29"
                            },
                            "referencedDeclaration": 4031,
                            "src": "20247:13:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                              "typeString": "struct AdvancedOrder"
                            }
                          },
                          "id": 5311,
                          "nodeType": "ArrayTypeName",
                          "src": "20247:15:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                            "typeString": "struct AdvancedOrder[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5316,
                        "mutability": "mutable",
                        "name": "considerationComponents",
                        "nameLocation": "20324:23:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 5324,
                        "src": "20294:53:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct FulfillmentComponent[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5314,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5313,
                              "name": "FulfillmentComponent",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4067,
                              "src": "20294:20:29"
                            },
                            "referencedDeclaration": 4067,
                            "src": "20294:20:29",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                              "typeString": "struct FulfillmentComponent"
                            }
                          },
                          "id": 5315,
                          "nodeType": "ArrayTypeName",
                          "src": "20294:22:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                            "typeString": "struct FulfillmentComponent[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5319,
                        "mutability": "mutable",
                        "name": "execution",
                        "nameLocation": "20374:9:29",
                        "nodeType": "VariableDeclaration",
                        "scope": 5324,
                        "src": "20357:26:29",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                          "typeString": "struct Execution"
                        },
                        "typeName": {
                          "id": 5318,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5317,
                            "name": "Execution",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4075,
                            "src": "20357:9:29"
                          },
                          "referencedDeclaration": 4075,
                          "src": "20357:9:29",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                            "typeString": "struct Execution"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "20237:152:29"
                  },
                  "returnParameters": {
                    "id": 5321,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "20404:0:29"
                  },
                  "scope": 5325,
                  "src": "20184:10471:29",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 5326,
              "src": "842:29815:29",
              "usedErrors": [
                2192,
                2195,
                2198,
                2201
              ]
            }
          ],
          "src": "32:30626:29"
        },
        "id": 29
      },
      "seaport/contracts/lib/GettersAndDerivers.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/GettersAndDerivers.sol",
          "exportedSymbols": {
            "AccumulatorArmed": [
              3772
            ],
            "AccumulatorDisarmed": [
              3769
            ],
            "Accumulator_array_length_ptr": [
              3784
            ],
            "Accumulator_array_offset": [
              3790
            ],
            "Accumulator_array_offset_ptr": [
              3781
            ],
            "Accumulator_conduitKey_ptr": [
              3775
            ],
            "Accumulator_itemSizeOffsetDifference": [
              3787
            ],
            "Accumulator_selector_ptr": [
              3778
            ],
            "AdditionalRecipients_size": [
              3530
            ],
            "AdvancedOrder_numerator_offset": [
              3482
            ],
            "BasicOrder_additionalRecipients_data_cdPtr": [
              3621
            ],
            "BasicOrder_additionalRecipients_head_cdPtr": [
              3612
            ],
            "BasicOrder_additionalRecipients_head_ptr": [
              3678
            ],
            "BasicOrder_additionalRecipients_length_cdPtr": [
              3618
            ],
            "BasicOrder_basicOrderType_cdPtr": [
              3597
            ],
            "BasicOrder_considerationAmount_cdPtr": [
              3582
            ],
            "BasicOrder_considerationHashesArray_ptr": [
              3518
            ],
            "BasicOrder_considerationItem_endAmount_ptr": [
              3642
            ],
            "BasicOrder_considerationItem_identifier_ptr": [
              3636
            ],
            "BasicOrder_considerationItem_itemType_ptr": [
              3630
            ],
            "BasicOrder_considerationItem_startAmount_ptr": [
              3639
            ],
            "BasicOrder_considerationItem_token_ptr": [
              3633
            ],
            "BasicOrder_considerationItem_typeHash_ptr": [
              3627
            ],
            "BasicOrder_considerationToken_cdPtr": [
              3579
            ],
            "BasicOrder_endAmount_cdPtr": [
              3515
            ],
            "BasicOrder_fulfillerConduit_cdPtr": [
              3606
            ],
            "BasicOrder_offerAmount_cdPtr": [
              3594
            ],
            "BasicOrder_offerItem_endAmount_ptr": [
              3654
            ],
            "BasicOrder_offerItem_itemType_ptr": [
              3648
            ],
            "BasicOrder_offerItem_token_ptr": [
              3651
            ],
            "BasicOrder_offerItem_typeHash_ptr": [
              3645
            ],
            "BasicOrder_offerToken_cdPtr": [
              3591
            ],
            "BasicOrder_offererConduit_cdPtr": [
              3603
            ],
            "BasicOrder_offerer_cdPtr": [
              3585
            ],
            "BasicOrder_order_considerationHashes_ptr": [
              3666
            ],
            "BasicOrder_order_nonce_ptr": [
              3675
            ],
            "BasicOrder_order_offerHashes_ptr": [
              3663
            ],
            "BasicOrder_order_offerer_ptr": [
              3660
            ],
            "BasicOrder_order_orderType_ptr": [
              3669
            ],
            "BasicOrder_order_startTime_ptr": [
              3672
            ],
            "BasicOrder_order_typeHash_ptr": [
              3657
            ],
            "BasicOrder_parameters_cdPtr": [
              3576
            ],
            "BasicOrder_parameters_ptr": [
              3624
            ],
            "BasicOrder_signature_cdPtr": [
              3615
            ],
            "BasicOrder_signature_ptr": [
              3681
            ],
            "BasicOrder_startTime_cdPtr": [
              3600
            ],
            "BasicOrder_totalOriginalAdditionalRecipients_cdPtr": [
              3609
            ],
            "BasicOrder_zone_cdPtr": [
              3588
            ],
            "Common_amount_offset": [
              3413
            ],
            "Common_identifier_offset": [
              3410
            ],
            "Common_token_offset": [
              3407
            ],
            "Conduit_execute_ConduitTransfer_length": [
              3739
            ],
            "Conduit_execute_ConduitTransfer_length_ptr": [
              3745
            ],
            "Conduit_execute_ConduitTransfer_offset_ptr": [
              3742
            ],
            "Conduit_execute_ConduitTransfer_ptr": [
              3736
            ],
            "Conduit_execute_signature": [
              3733
            ],
            "Conduit_execute_transferAmount_ptr": [
              3763
            ],
            "Conduit_execute_transferFrom_ptr": [
              3754
            ],
            "Conduit_execute_transferIdentifier_ptr": [
              3760
            ],
            "Conduit_execute_transferItemType_ptr": [
              3748
            ],
            "Conduit_execute_transferTo_ptr": [
              3757
            ],
            "Conduit_execute_transferToken_ptr": [
              3751
            ],
            "Conduit_transferItem_amount_ptr": [
              3808
            ],
            "Conduit_transferItem_from_ptr": [
              3799
            ],
            "Conduit_transferItem_identifier_ptr": [
              3805
            ],
            "Conduit_transferItem_size": [
              3793
            ],
            "Conduit_transferItem_to_ptr": [
              3802
            ],
            "Conduit_transferItem_token_ptr": [
              3796
            ],
            "ConsiderItem_recipient_offset": [
              3431
            ],
            "ConsiderationBase": [
              3384
            ],
            "ConsiderationItem_recipient_offset": [
              3428
            ],
            "CostPerWord": [
              3708
            ],
            "Create2AddressDerivation_length": [
              3717
            ],
            "Create2AddressDerivation_ptr": [
              3714
            ],
            "DefaultFreeMemoryPointer": [
              3506
            ],
            "EIP2098_allButHighestBitMask": [
              3685
            ],
            "EIP712_ConsiderationItem_size": [
              3527
            ],
            "EIP712_DigestPayload_size": [
              3539
            ],
            "EIP712_DomainSeparator_offset": [
              3533
            ],
            "EIP712_OfferItem_size": [
              3524
            ],
            "EIP712_OrderHash_offset": [
              3536
            ],
            "EIP712_Order_size": [
              3521
            ],
            "EIP_712_PREFIX": [
              3702
            ],
            "Execution_conduit_offset": [
              3437
            ],
            "Execution_offerer_offset": [
              3434
            ],
            "ExtraGasBuffer": [
              3705
            ],
            "FiveWords": [
              3497
            ],
            "FourWords": [
              3494
            ],
            "FreeMemoryPointerSlot": [
              3500
            ],
            "Fulfillment_itemIndex_offset": [
              3479
            ],
            "GettersAndDerivers": [
              5465
            ],
            "InvalidFulfillmentComponentData_error_len": [
              3444
            ],
            "InvalidFulfillmentComponentData_error_signature": [
              3441
            ],
            "MaskOverByteTwelve": [
              3721
            ],
            "MaskOverFirstFourBytes": [
              3729
            ],
            "MaskOverLastTwentyBytes": [
              3725
            ],
            "MemoryExpansionCoefficient": [
              3711
            ],
            "MissingItemAmount_error_len": [
              3464
            ],
            "MissingItemAmount_error_signature": [
              3461
            ],
            "NameLengthPtr": [
              3389
            ],
            "NameWithLength": [
              3392
            ],
            "NoContract_error_length": [
              3698
            ],
            "NoContract_error_sig_ptr": [
              3692
            ],
            "NoContract_error_signature": [
              3689
            ],
            "NoContract_error_token_ptr": [
              3695
            ],
            "OneConduitExecute_size": [
              3766
            ],
            "OneWord": [
              3485
            ],
            "OrderFulfilled_baseOffset": [
              3552
            ],
            "OrderFulfilled_baseSize": [
              3545
            ],
            "OrderFulfilled_consideration_body_offset": [
              3573
            ],
            "OrderFulfilled_consideration_head_offset": [
              3570
            ],
            "OrderFulfilled_consideration_length_baseOffset": [
              3555
            ],
            "OrderFulfilled_fulfiller_offset": [
              3561
            ],
            "OrderFulfilled_offer_body_offset": [
              3567
            ],
            "OrderFulfilled_offer_head_offset": [
              3564
            ],
            "OrderFulfilled_offer_length_baseOffset": [
              3558
            ],
            "OrderFulfilled_selector": [
              3549
            ],
            "OrderParameters": [
              4013
            ],
            "OrderParameters_conduit_offset": [
              3473
            ],
            "OrderParameters_consideration_head_offset": [
              3470
            ],
            "OrderParameters_nonce_offset": [
              3476
            ],
            "OrderParameters_offer_head_offset": [
              3467
            ],
            "Panic_arithmetic": [
              3457
            ],
            "Panic_error_length": [
              3454
            ],
            "Panic_error_offset": [
              3451
            ],
            "Panic_error_signature": [
              3448
            ],
            "ReceivedItem_CommonParams_size": [
              3425
            ],
            "ReceivedItem_amount_offset": [
              3419
            ],
            "ReceivedItem_recipient_offset": [
              3422
            ],
            "ReceivedItem_size": [
              3416
            ],
            "Slot0x80": [
              3509
            ],
            "Slot0xA0": [
              3512
            ],
            "ThreeWords": [
              3491
            ],
            "TwoWords": [
              3488
            ],
            "Version": [
              3395
            ],
            "Version_length": [
              3398
            ],
            "ZeroSlot": [
              3503
            ],
            "_ENTERED": [
              3404
            ],
            "_NOT_ENTERED": [
              3401
            ],
            "receivedItemsHash_ptr": [
              3542
            ]
          },
          "id": 5466,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5327,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:30"
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationStructs.sol",
              "file": "./ConsiderationStructs.sol",
              "id": 5329,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5466,
              "sourceUnit": 4076,
              "src": "57:61:30",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5328,
                    "name": "OrderParameters",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4013,
                    "src": "66:15:30",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationBase.sol",
              "file": "./ConsiderationBase.sol",
              "id": 5331,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5466,
              "sourceUnit": 3385,
              "src": "120:60:30",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5330,
                    "name": "ConsiderationBase",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3384,
                    "src": "129:17:30",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationConstants.sol",
              "file": "./ConsiderationConstants.sol",
              "id": 5332,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5466,
              "sourceUnit": 3809,
              "src": "182:38:30",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5334,
                    "name": "ConsiderationBase",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3384,
                    "src": "439:17:30"
                  },
                  "id": 5335,
                  "nodeType": "InheritanceSpecifier",
                  "src": "439:17:30"
                }
              ],
              "canonicalName": "GettersAndDerivers",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 5333,
                "nodeType": "StructuredDocumentation",
                "src": "222:185:30",
                "text": " @title GettersAndDerivers\n @author 0age\n @notice ConsiderationInternal contains pure and internal view functions\n         related to getting or deriving various values."
              },
              "fullyImplemented": true,
              "id": 5465,
              "linearizedBaseContracts": [
                5465,
                3384,
                1924
              ],
              "name": "GettersAndDerivers",
              "nameLocation": "417:18:30",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 5344,
                    "nodeType": "Block",
                    "src": "904:2:30",
                    "statements": []
                  },
                  "documentation": {
                    "id": 5336,
                    "nodeType": "StructuredDocumentation",
                    "src": "463:348:30",
                    "text": " @dev Derive and set hashes, reference chainId, and associated domain\n      separator during deployment.\n @param conduitController A contract that deploys conduits, or proxies\n                          that may optionally be used to transfer approved\n                          ERC20/721/1155 tokens."
                  },
                  "id": 5345,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 5341,
                          "name": "conduitController",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5338,
                          "src": "881:17:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 5342,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 5340,
                        "name": "ConsiderationBase",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3384,
                        "src": "863:17:30"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "863:36:30"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5339,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5338,
                        "mutability": "mutable",
                        "name": "conduitController",
                        "nameLocation": "836:17:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 5345,
                        "src": "828:25:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5337,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "828:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "827:27:30"
                  },
                  "returnParameters": {
                    "id": 5343,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "904:0:30"
                  },
                  "scope": 5465,
                  "src": "816:90:30",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5383,
                    "nodeType": "Block",
                    "src": "1511:7094:30",
                    "statements": [
                      {
                        "assignments": [
                          5357
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5357,
                            "mutability": "mutable",
                            "name": "originalConsiderationLength",
                            "nameLocation": "1610:27:30",
                            "nodeType": "VariableDeclaration",
                            "scope": 5383,
                            "src": "1602:35:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5356,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1602:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5361,
                        "initialValue": {
                          "components": [
                            {
                              "expression": {
                                "id": 5358,
                                "name": "orderParameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5349,
                                "src": "1654:15:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                  "typeString": "struct OrderParameters memory"
                                }
                              },
                              "id": 5359,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "totalOriginalConsiderationItems",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4012,
                              "src": "1654:47:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 5360,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "1640:71:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1602:109:30"
                      },
                      {
                        "assignments": [
                          5363
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5363,
                            "mutability": "mutable",
                            "name": "offerHash",
                            "nameLocation": "2111:9:30",
                            "nodeType": "VariableDeclaration",
                            "scope": 5383,
                            "src": "2103:17:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 5362,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2103:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5364,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2103:17:30"
                      },
                      {
                        "assignments": [
                          5366
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5366,
                            "mutability": "mutable",
                            "name": "typeHash",
                            "nameLocation": "2219:8:30",
                            "nodeType": "VariableDeclaration",
                            "scope": 5383,
                            "src": "2211:16:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 5365,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2211:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5368,
                        "initialValue": {
                          "id": 5367,
                          "name": "_OFFER_ITEM_TYPEHASH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3170,
                          "src": "2230:20:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2211:39:30"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "2350:1645:30",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2436:46:30",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "FreeMemoryPointerSlot",
                                    "nodeType": "YulIdentifier",
                                    "src": "2460:21:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2454:5:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2454:28:30"
                              },
                              "variables": [
                                {
                                  "name": "hashArrPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2440:10:30",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2548:56:30",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "orderParameters",
                                        "nodeType": "YulIdentifier",
                                        "src": "2577:15:30"
                                      },
                                      {
                                        "name": "TwoWords",
                                        "nodeType": "YulIdentifier",
                                        "src": "2594:8:30"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2573:3:30"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2573:30:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2567:5:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2567:37:30"
                              },
                              "variables": [
                                {
                                  "name": "offerArrPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "2552:11:30",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "2650:37:30",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offerArrPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2675:11:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "2669:5:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2669:18:30"
                              },
                              "variables": [
                                {
                                  "name": "offerLength",
                                  "nodeType": "YulTypedName",
                                  "src": "2654:11:30",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "2759:40:30",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offerArrPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "2778:11:30"
                                  },
                                  {
                                    "name": "OneWord",
                                    "nodeType": "YulIdentifier",
                                    "src": "2791:7:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2774:3:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2774:25:30"
                              },
                              "variableNames": [
                                {
                                  "name": "offerArrPtr",
                                  "nodeType": "YulIdentifier",
                                  "src": "2759:11:30"
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2974:804:30",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3112:43:30",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "offerArrPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "3133:11:30"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "3127:5:30"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3127:18:30"
                                        },
                                        {
                                          "name": "OneWord",
                                          "nodeType": "YulIdentifier",
                                          "src": "3147:7:30"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "sub",
                                        "nodeType": "YulIdentifier",
                                        "src": "3123:3:30"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3123:32:30"
                                    },
                                    "variables": [
                                      {
                                        "name": "ptr",
                                        "nodeType": "YulTypedName",
                                        "src": "3116:3:30",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "3238:23:30",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "3257:3:30"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "3251:5:30"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3251:10:30"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "3242:5:30",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "3347:3:30"
                                        },
                                        {
                                          "name": "typeHash",
                                          "nodeType": "YulIdentifier",
                                          "src": "3352:8:30"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3340:6:30"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3340:21:30"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3340:21:30"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "hashArrPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "3458:10:30"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "3480:3:30"
                                            },
                                            {
                                              "name": "EIP712_OfferItem_size",
                                              "nodeType": "YulIdentifier",
                                              "src": "3485:21:30"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "keccak256",
                                            "nodeType": "YulIdentifier",
                                            "src": "3470:9:30"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3470:37:30"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3451:6:30"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3451:57:30"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3451:57:30"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "3579:3:30"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "3584:5:30"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "3572:6:30"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3572:18:30"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "3572:18:30"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3669:40:30",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "offerArrPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "3688:11:30"
                                        },
                                        {
                                          "name": "OneWord",
                                          "nodeType": "YulIdentifier",
                                          "src": "3701:7:30"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3684:3:30"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3684:25:30"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "offerArrPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3669:11:30"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "3726:38:30",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "hashArrPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "3744:10:30"
                                        },
                                        {
                                          "name": "OneWord",
                                          "nodeType": "YulIdentifier",
                                          "src": "3756:7:30"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "3740:3:30"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3740:24:30"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "hashArrPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "3726:10:30"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "2911:1:30"
                                  },
                                  {
                                    "name": "offerLength",
                                    "nodeType": "YulIdentifier",
                                    "src": "2914:11:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "2908:2:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2908:18:30"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "2927:46:30",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2945:14:30",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "2954:1:30"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2957:1:30",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2950:3:30"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2950:9:30"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "2945:1:30"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "2893:14:30",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2895:10:30",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "2904:1:30",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulTypedName",
                                        "src": "2899:1:30",
                                        "type": ""
                                      }
                                    ]
                                  }
                                ]
                              },
                              "src": "2889:889:30"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "3860:125:30",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "FreeMemoryPointerSlot",
                                        "nodeType": "YulIdentifier",
                                        "src": "3906:21:30"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "3900:5:30"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3900:28:30"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "offerLength",
                                        "nodeType": "YulIdentifier",
                                        "src": "3950:11:30"
                                      },
                                      {
                                        "name": "OneWord",
                                        "nodeType": "YulIdentifier",
                                        "src": "3963:7:30"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "3946:3:30"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3946:25:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "3873:9:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3873:112:30"
                              },
                              "variableNames": [
                                {
                                  "name": "offerHash",
                                  "nodeType": "YulIdentifier",
                                  "src": "3860:9:30"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3524,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3485:21:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3500,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2460:21:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3500,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3906:21:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2791:7:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3147:7:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3701:7:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3756:7:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3963:7:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3488,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2594:8:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5363,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3860:9:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5349,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2577:15:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5366,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3352:8:30",
                            "valueSize": 1
                          }
                        ],
                        "id": 5369,
                        "nodeType": "InlineAssembly",
                        "src": "2341:1654:30"
                      },
                      {
                        "assignments": [
                          5371
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5371,
                            "mutability": "mutable",
                            "name": "considerationHash",
                            "nameLocation": "4092:17:30",
                            "nodeType": "VariableDeclaration",
                            "scope": 5383,
                            "src": "4084:25:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 5370,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "4084:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5372,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4084:25:30"
                      },
                      {
                        "expression": {
                          "id": 5375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5373,
                            "name": "typeHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5366,
                            "src": "4200:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5374,
                            "name": "_CONSIDERATION_ITEM_TYPEHASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3172,
                            "src": "4211:28:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "4200:39:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 5376,
                        "nodeType": "ExpressionStatement",
                        "src": "4200:39:30"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "4339:1783:30",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4425:46:30",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "FreeMemoryPointerSlot",
                                    "nodeType": "YulIdentifier",
                                    "src": "4449:21:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "4443:5:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4443:28:30"
                              },
                              "variables": [
                                {
                                  "name": "hashArrPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4429:10:30",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "4544:265:30",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "orderParameters",
                                            "nodeType": "YulIdentifier",
                                            "src": "4648:15:30"
                                          },
                                          {
                                            "name": "OrderParameters_consideration_head_offset",
                                            "nodeType": "YulIdentifier",
                                            "src": "4689:41:30"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "4619:3:30"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "4619:133:30"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "4592:5:30"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4592:178:30"
                                  },
                                  {
                                    "name": "OneWord",
                                    "nodeType": "YulIdentifier",
                                    "src": "4788:7:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "4571:3:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4571:238:30"
                              },
                              "variables": [
                                {
                                  "name": "considerationArrPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "4548:19:30",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "5021:852:30",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "5167:51:30",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "considerationArrPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "5188:19:30"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "5182:5:30"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5182:26:30"
                                        },
                                        {
                                          "name": "OneWord",
                                          "nodeType": "YulIdentifier",
                                          "src": "5210:7:30"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "sub",
                                        "nodeType": "YulIdentifier",
                                        "src": "5178:3:30"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5178:40:30"
                                    },
                                    "variables": [
                                      {
                                        "name": "ptr",
                                        "nodeType": "YulTypedName",
                                        "src": "5171:3:30",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "5309:23:30",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "5328:3:30"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "5322:5:30"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5322:10:30"
                                    },
                                    "variables": [
                                      {
                                        "name": "value",
                                        "nodeType": "YulTypedName",
                                        "src": "5313:5:30",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "5418:3:30"
                                        },
                                        {
                                          "name": "typeHash",
                                          "nodeType": "YulIdentifier",
                                          "src": "5423:8:30"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5411:6:30"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5411:21:30"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5411:21:30"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "hashArrPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "5529:10:30"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "ptr",
                                              "nodeType": "YulIdentifier",
                                              "src": "5551:3:30"
                                            },
                                            {
                                              "name": "EIP712_ConsiderationItem_size",
                                              "nodeType": "YulIdentifier",
                                              "src": "5556:29:30"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "keccak256",
                                            "nodeType": "YulIdentifier",
                                            "src": "5541:9:30"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "5541:45:30"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5522:6:30"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5522:65:30"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5522:65:30"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "5658:3:30"
                                        },
                                        {
                                          "name": "value",
                                          "nodeType": "YulIdentifier",
                                          "src": "5663:5:30"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "5651:6:30"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5651:18:30"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "5651:18:30"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5748:56:30",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "considerationArrPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "5775:19:30"
                                        },
                                        {
                                          "name": "OneWord",
                                          "nodeType": "YulIdentifier",
                                          "src": "5796:7:30"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5771:3:30"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5771:33:30"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "considerationArrPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5748:19:30"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "5821:38:30",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "hashArrPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "5839:10:30"
                                        },
                                        {
                                          "name": "OneWord",
                                          "nodeType": "YulIdentifier",
                                          "src": "5851:7:30"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "5835:3:30"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "5835:24:30"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "hashArrPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "5821:10:30"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "4942:1:30"
                                  },
                                  {
                                    "name": "originalConsiderationLength",
                                    "nodeType": "YulIdentifier",
                                    "src": "4945:27:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "4939:2:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4939:34:30"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "4974:46:30",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4992:14:30",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "5001:1:30"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "5004:1:30",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "4997:3:30"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4997:9:30"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "4992:1:30"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "4924:14:30",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "4926:10:30",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "4935:1:30",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulTypedName",
                                        "src": "4930:1:30",
                                        "type": ""
                                      }
                                    ]
                                  }
                                ]
                              },
                              "src": "4920:953:30"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "5963:149:30",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "FreeMemoryPointerSlot",
                                        "nodeType": "YulIdentifier",
                                        "src": "6017:21:30"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "6011:5:30"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6011:28:30"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "originalConsiderationLength",
                                        "nodeType": "YulIdentifier",
                                        "src": "6061:27:30"
                                      },
                                      {
                                        "name": "OneWord",
                                        "nodeType": "YulIdentifier",
                                        "src": "6090:7:30"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mul",
                                      "nodeType": "YulIdentifier",
                                      "src": "6057:3:30"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "6057:41:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "5984:9:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "5984:128:30"
                              },
                              "variableNames": [
                                {
                                  "name": "considerationHash",
                                  "nodeType": "YulIdentifier",
                                  "src": "5963:17:30"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3527,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5556:29:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3500,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4449:21:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3500,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6017:21:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4788:7:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5210:7:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5796:7:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5851:7:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6090:7:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3470,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4689:41:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5371,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5963:17:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5349,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4648:15:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5357,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4945:27:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5357,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6061:27:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5366,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5423:8:30",
                            "valueSize": 1
                          }
                        ],
                        "id": 5377,
                        "nodeType": "InlineAssembly",
                        "src": "4330:1792:30"
                      },
                      {
                        "expression": {
                          "id": 5380,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5378,
                            "name": "typeHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5366,
                            "src": "6212:8:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 5379,
                            "name": "_ORDER_TYPEHASH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3174,
                            "src": "6223:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "6212:26:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 5381,
                        "nodeType": "ExpressionStatement",
                        "src": "6212:26:30"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "6339:2260:30",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6431:48:30",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "orderParameters",
                                    "nodeType": "YulIdentifier",
                                    "src": "6454:15:30"
                                  },
                                  {
                                    "name": "OneWord",
                                    "nodeType": "YulIdentifier",
                                    "src": "6471:7:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "6450:3:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6450:29:30"
                              },
                              "variables": [
                                {
                                  "name": "typeHashPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "6435:11:30",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6567:39:30",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "typeHashPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "6594:11:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "6588:5:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6588:18:30"
                              },
                              "variables": [
                                {
                                  "name": "previousValue",
                                  "nodeType": "YulTypedName",
                                  "src": "6571:13:30",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "typeHashPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "6706:11:30"
                                  },
                                  {
                                    "name": "typeHash",
                                    "nodeType": "YulIdentifier",
                                    "src": "6719:8:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "6699:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6699:29:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "6699:29:30"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "6804:121:30",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "orderParameters",
                                    "nodeType": "YulIdentifier",
                                    "src": "6845:15:30"
                                  },
                                  {
                                    "name": "OrderParameters_offer_head_offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "6878:33:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "6824:3:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "6824:101:30"
                              },
                              "variables": [
                                {
                                  "name": "offerHeadPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "6808:12:30",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7010:39:30",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "offerHeadPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7036:12:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7030:5:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7030:19:30"
                              },
                              "variables": [
                                {
                                  "name": "offerDataPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7014:12:30",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "offerHeadPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7140:12:30"
                                  },
                                  {
                                    "name": "offerHash",
                                    "nodeType": "YulIdentifier",
                                    "src": "7154:9:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7133:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7133:31:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7133:31:30"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7248:137:30",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "orderParameters",
                                    "nodeType": "YulIdentifier",
                                    "src": "7297:15:30"
                                  },
                                  {
                                    "name": "OrderParameters_consideration_head_offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7330:41:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7276:3:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7276:109:30"
                              },
                              "variables": [
                                {
                                  "name": "considerationHeadPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7252:20:30",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7478:55:30",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "considerationHeadPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7512:20:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "7506:5:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7506:27:30"
                              },
                              "variables": [
                                {
                                  "name": "considerationDataPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7482:20:30",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "considerationHeadPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7632:20:30"
                                  },
                                  {
                                    "name": "considerationHash",
                                    "nodeType": "YulIdentifier",
                                    "src": "7654:17:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7625:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7625:47:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7625:47:30"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "7737:66:30",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "orderParameters",
                                    "nodeType": "YulIdentifier",
                                    "src": "7757:15:30"
                                  },
                                  {
                                    "name": "OrderParameters_nonce_offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "7774:28:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "7753:3:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7753:50:30"
                              },
                              "variables": [
                                {
                                  "name": "noncePtr",
                                  "nodeType": "YulTypedName",
                                  "src": "7741:8:30",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "noncePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "7889:8:30"
                                  },
                                  {
                                    "name": "nonce",
                                    "nodeType": "YulIdentifier",
                                    "src": "7899:5:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "7882:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "7882:23:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "7882:23:30"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "7998:54:30",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "typeHashPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8021:11:30"
                                  },
                                  {
                                    "name": "EIP712_Order_size",
                                    "nodeType": "YulIdentifier",
                                    "src": "8034:17:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "8011:9:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8011:41:30"
                              },
                              "variableNames": [
                                {
                                  "name": "orderHash",
                                  "nodeType": "YulIdentifier",
                                  "src": "7998:9:30"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "typeHashPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8152:11:30"
                                  },
                                  {
                                    "name": "previousValue",
                                    "nodeType": "YulIdentifier",
                                    "src": "8165:13:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8145:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8145:34:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8145:34:30"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "offerHeadPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8278:12:30"
                                  },
                                  {
                                    "name": "offerDataPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8292:12:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8271:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8271:34:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8271:34:30"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "considerationHeadPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8407:20:30"
                                  },
                                  {
                                    "name": "considerationDataPtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8429:20:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8400:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8400:50:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8400:50:30"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "noncePtr",
                                    "nodeType": "YulIdentifier",
                                    "src": "8551:8:30"
                                  },
                                  {
                                    "name": "originalConsiderationLength",
                                    "nodeType": "YulIdentifier",
                                    "src": "8561:27:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8544:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8544:45:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8544:45:30"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3521,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8034:17:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6471:7:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3470,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7330:41:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3476,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7774:28:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3467,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6878:33:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5371,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7654:17:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5351,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7899:5:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5363,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7154:9:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5354,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7998:9:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5349,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6454:15:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5349,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6845:15:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5349,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7297:15:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5349,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7757:15:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5357,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8561:27:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5366,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6719:8:30",
                            "valueSize": 1
                          }
                        ],
                        "id": 5382,
                        "nodeType": "InlineAssembly",
                        "src": "6330:2269:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5346,
                    "nodeType": "StructuredDocumentation",
                    "src": "912:449:30",
                    "text": " @dev Internal view function to derive the order hash for a given order.\n      Note that only the original consideration items are included in the\n      order hash, as additional consideration items may be supplied by the\n      caller.\n @param orderParameters The parameters of the order to hash.\n @param nonce           The nonce of the order to hash.\n @return orderHash The hash."
                  },
                  "id": 5384,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_deriveOrderHash",
                  "nameLocation": "1375:16:30",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5352,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5349,
                        "mutability": "mutable",
                        "name": "orderParameters",
                        "nameLocation": "1424:15:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 5384,
                        "src": "1401:38:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                          "typeString": "struct OrderParameters"
                        },
                        "typeName": {
                          "id": 5348,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 5347,
                            "name": "OrderParameters",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4013,
                            "src": "1401:15:30"
                          },
                          "referencedDeclaration": 4013,
                          "src": "1401:15:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_OrderParameters_$4013_storage_ptr",
                            "typeString": "struct OrderParameters"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5351,
                        "mutability": "mutable",
                        "name": "nonce",
                        "nameLocation": "1457:5:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 5384,
                        "src": "1449:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5350,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1449:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1391:77:30"
                  },
                  "returnParameters": {
                    "id": 5355,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5354,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "1500:9:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 5384,
                        "src": "1492:17:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5353,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1492:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1491:19:30"
                  },
                  "scope": 5465,
                  "src": "1366:7239:30",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5404,
                    "nodeType": "Block",
                    "src": "9307:1697:30",
                    "statements": [
                      {
                        "assignments": [
                          5393
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5393,
                            "mutability": "mutable",
                            "name": "conduitController",
                            "nameLocation": "9405:17:30",
                            "nodeType": "VariableDeclaration",
                            "scope": 5404,
                            "src": "9397:25:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5392,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9397:7:30",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5398,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5396,
                              "name": "_CONDUIT_CONTROLLER",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3181,
                              "src": "9433:19:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ConduitControllerInterface_$1733",
                                "typeString": "contract ConduitControllerInterface"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_ConduitControllerInterface_$1733",
                                "typeString": "contract ConduitControllerInterface"
                              }
                            ],
                            "id": 5395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "9425:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 5394,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9425:7:30",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 5397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9425:28:30",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9397:56:30"
                      },
                      {
                        "assignments": [
                          5400
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5400,
                            "mutability": "mutable",
                            "name": "conduitCreationCodeHash",
                            "nameLocation": "9552:23:30",
                            "nodeType": "VariableDeclaration",
                            "scope": 5404,
                            "src": "9544:31:30",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 5399,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "9544:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5402,
                        "initialValue": {
                          "id": 5401,
                          "name": "_CONDUIT_CREATION_CODE_HASH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3183,
                          "src": "9578:27:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "9544:61:30"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "9689:1309:30",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "9784:53:30",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "FreeMemoryPointerSlot",
                                    "nodeType": "YulIdentifier",
                                    "src": "9815:21:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "9809:5:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9809:28:30"
                              },
                              "variables": [
                                {
                                  "name": "freeMemoryPointer",
                                  "nodeType": "YulTypedName",
                                  "src": "9788:17:30",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "10018:1:30",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "MaskOverByteTwelve",
                                        "nodeType": "YulIdentifier",
                                        "src": "10024:18:30"
                                      },
                                      {
                                        "name": "conduitController",
                                        "nodeType": "YulIdentifier",
                                        "src": "10044:17:30"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "10021:2:30"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10021:41:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10011:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10011:52:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10011:52:30"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "OneWord",
                                    "nodeType": "YulIdentifier",
                                    "src": "10158:7:30"
                                  },
                                  {
                                    "name": "conduitKey",
                                    "nodeType": "YulIdentifier",
                                    "src": "10167:10:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10151:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10151:27:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10151:27:30"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "TwoWords",
                                    "nodeType": "YulIdentifier",
                                    "src": "10280:8:30"
                                  },
                                  {
                                    "name": "conduitCreationCodeHash",
                                    "nodeType": "YulIdentifier",
                                    "src": "10290:23:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10273:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10273:41:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10273:41:30"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "10409:469:30",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "Create2AddressDerivation_ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "10580:28:30"
                                      },
                                      {
                                        "name": "Create2AddressDerivation_length",
                                        "nodeType": "YulIdentifier",
                                        "src": "10701:31:30"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "keccak256",
                                      "nodeType": "YulIdentifier",
                                      "src": "10486:9:30"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10486:264:30"
                                  },
                                  {
                                    "name": "MaskOverLastTwentyBytes",
                                    "nodeType": "YulIdentifier",
                                    "src": "10841:23:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "10420:3:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10420:458:30"
                              },
                              "variableNames": [
                                {
                                  "name": "conduit",
                                  "nodeType": "YulIdentifier",
                                  "src": "10409:7:30"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "FreeMemoryPointerSlot",
                                    "nodeType": "YulIdentifier",
                                    "src": "10947:21:30"
                                  },
                                  {
                                    "name": "freeMemoryPointer",
                                    "nodeType": "YulIdentifier",
                                    "src": "10970:17:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10940:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10940:48:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10940:48:30"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3717,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10701:31:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3714,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10580:28:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3500,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10947:21:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3500,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9815:21:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3721,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10024:18:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3725,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10841:23:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10158:7:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3488,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10280:8:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5390,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10409:7:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5393,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10044:17:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5400,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10290:23:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5387,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10167:10:30",
                            "valueSize": 1
                          }
                        ],
                        "id": 5403,
                        "nodeType": "InlineAssembly",
                        "src": "9680:1318:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5385,
                    "nodeType": "StructuredDocumentation",
                    "src": "8611:579:30",
                    "text": " @dev Internal view function to derive the address of a given conduit\n      using a corresponding conduit key.\n @param conduitKey A bytes32 value indicating what corresponding conduit,\n                   if any, to source token approvals from. This value is\n                   the \"salt\" parameter supplied by the deployer (i.e. the\n                   conduit controller) when deploying the given conduit.\n @return conduit The address of the conduit associated with the given\n                 conduit key."
                  },
                  "id": 5405,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_deriveConduit",
                  "nameLocation": "9204:14:30",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5388,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5387,
                        "mutability": "mutable",
                        "name": "conduitKey",
                        "nameLocation": "9227:10:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 5405,
                        "src": "9219:18:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5386,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "9219:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9218:20:30"
                  },
                  "returnParameters": {
                    "id": 5391,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5390,
                        "mutability": "mutable",
                        "name": "conduit",
                        "nameLocation": "9294:7:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 5405,
                        "src": "9286:15:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5389,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9286:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "9285:17:30"
                  },
                  "scope": 5465,
                  "src": "9195:1809:30",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5420,
                    "nodeType": "Block",
                    "src": "11338:148:30",
                    "statements": [
                      {
                        "expression": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5414,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 5411,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "11382:5:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 5412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "chainid",
                              "nodeType": "MemberAccess",
                              "src": "11382:13:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "id": 5413,
                              "name": "_CHAIN_ID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3176,
                              "src": "11399:9:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11382:26:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 5416,
                              "name": "_deriveDomainSeparator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3247,
                              "src": "11455:22:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                "typeString": "function () view returns (bytes32)"
                              }
                            },
                            "id": 5417,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11455:24:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 5418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "11382:97:30",
                          "trueExpression": {
                            "id": 5415,
                            "name": "_DOMAIN_SEPARATOR",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3178,
                            "src": "11423:17:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "functionReturnParameters": 5410,
                        "id": 5419,
                        "nodeType": "Return",
                        "src": "11375:104:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5406,
                    "nodeType": "StructuredDocumentation",
                    "src": "11010:263:30",
                    "text": " @dev Internal view function to get the EIP-712 domain separator. If the\n      chainId matches the chainId set on deployment, the cached domain\n      separator will be returned; otherwise, it will be derived from\n      scratch."
                  },
                  "id": 5421,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_domainSeparator",
                  "nameLocation": "11287:16:30",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5407,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11303:2:30"
                  },
                  "returnParameters": {
                    "id": 5410,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5409,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5421,
                        "src": "11329:7:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5408,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11329:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11328:9:30"
                  },
                  "scope": 5465,
                  "src": "11278:208:30",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5451,
                    "nodeType": "Block",
                    "src": "12022:490:30",
                    "statements": [
                      {
                        "expression": {
                          "id": 5434,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5431,
                            "name": "domainSeparator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5427,
                            "src": "12072:15:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 5432,
                              "name": "_domainSeparator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5421,
                              "src": "12090:16:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                "typeString": "function () view returns (bytes32)"
                              }
                            },
                            "id": 5433,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12090:18:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "12072:36:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 5435,
                        "nodeType": "ExpressionStatement",
                        "src": "12072:36:30"
                      },
                      {
                        "expression": {
                          "id": 5441,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5436,
                            "name": "conduitController",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5429,
                            "src": "12197:17:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5439,
                                "name": "_CONDUIT_CONTROLLER",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3181,
                                "src": "12225:19:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ConduitControllerInterface_$1733",
                                  "typeString": "contract ConduitControllerInterface"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ConduitControllerInterface_$1733",
                                  "typeString": "contract ConduitControllerInterface"
                                }
                              ],
                              "id": 5438,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "12217:7:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 5437,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "12217:7:30",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 5440,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12217:28:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "12197:48:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5442,
                        "nodeType": "ExpressionStatement",
                        "src": "12197:48:30"
                      },
                      {
                        "expression": {
                          "id": 5448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5443,
                            "name": "version",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5425,
                            "src": "12311:7:30",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5446,
                                "name": "Version_length",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3398,
                                "src": "12332:14:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 5445,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "12321:10:30",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (string memory)"
                              },
                              "typeName": {
                                "id": 5444,
                                "name": "string",
                                "nodeType": "ElementaryTypeName",
                                "src": "12325:6:30",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_storage_ptr",
                                  "typeString": "string"
                                }
                              }
                            },
                            "id": 5447,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12321:26:30",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "src": "12311:36:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "id": 5449,
                        "nodeType": "ExpressionStatement",
                        "src": "12311:36:30"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "12433:73:30",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "version",
                                        "nodeType": "YulIdentifier",
                                        "src": "12458:7:30"
                                      },
                                      {
                                        "name": "OneWord",
                                        "nodeType": "YulIdentifier",
                                        "src": "12467:7:30"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "12454:3:30"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12454:21:30"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "12481:4:30",
                                        "type": "",
                                        "value": "0xf8"
                                      },
                                      {
                                        "name": "Version",
                                        "nodeType": "YulIdentifier",
                                        "src": "12487:7:30"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "12477:3:30"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "12477:18:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "12447:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "12447:49:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "12447:49:30"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "12467:7:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3395,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "12487:7:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5425,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "12458:7:30",
                            "valueSize": 1
                          }
                        ],
                        "id": 5450,
                        "nodeType": "InlineAssembly",
                        "src": "12424:82:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5422,
                    "nodeType": "StructuredDocumentation",
                    "src": "11492:329:30",
                    "text": " @dev Internal view function to retrieve configuration information for\n      this contract.\n @return version           The contract version.\n @return domainSeparator   The domain separator for this contract.\n @return conduitController The conduit Controller set for this contract."
                  },
                  "id": 5452,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_information",
                  "nameLocation": "11835:12:30",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5423,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "11847:2:30"
                  },
                  "returnParameters": {
                    "id": 5430,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5425,
                        "mutability": "mutable",
                        "name": "version",
                        "nameLocation": "11924:7:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 5452,
                        "src": "11910:21:30",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string"
                        },
                        "typeName": {
                          "id": 5424,
                          "name": "string",
                          "nodeType": "ElementaryTypeName",
                          "src": "11910:6:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage_ptr",
                            "typeString": "string"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5427,
                        "mutability": "mutable",
                        "name": "domainSeparator",
                        "nameLocation": "11953:15:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 5452,
                        "src": "11945:23:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5426,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "11945:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5429,
                        "mutability": "mutable",
                        "name": "conduitController",
                        "nameLocation": "11990:17:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 5452,
                        "src": "11982:25:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5428,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11982:7:30",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "11896:121:30"
                  },
                  "scope": 5465,
                  "src": "11826:686:30",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5463,
                    "nodeType": "Block",
                    "src": "12944:923:30",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "13027:834:30",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13119:1:30",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "EIP_712_PREFIX",
                                    "nodeType": "YulIdentifier",
                                    "src": "13122:14:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13112:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13112:25:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13112:25:30"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "EIP712_DomainSeparator_offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13237:29:30"
                                  },
                                  {
                                    "name": "domainSeparator",
                                    "nodeType": "YulIdentifier",
                                    "src": "13268:15:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13230:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13230:54:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13230:54:30"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "EIP712_OrderHash_offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13589:23:30"
                                  },
                                  {
                                    "name": "orderHash",
                                    "nodeType": "YulIdentifier",
                                    "src": "13614:9:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13582:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13582:42:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13582:42:30"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "13690:48:30",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13709:1:30",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "EIP712_DigestPayload_size",
                                    "nodeType": "YulIdentifier",
                                    "src": "13712:25:30"
                                  }
                                ],
                                "functionName": {
                                  "name": "keccak256",
                                  "nodeType": "YulIdentifier",
                                  "src": "13699:9:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13699:39:30"
                              },
                              "variableNames": [
                                {
                                  "name": "value",
                                  "nodeType": "YulIdentifier",
                                  "src": "13690:5:30"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "EIP712_OrderHash_offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "13824:23:30"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13849:1:30",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "13817:6:30"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13817:34:30"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "13817:34:30"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3539,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13712:25:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3533,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13237:29:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3536,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13589:23:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3536,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13824:23:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3702,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13122:14:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5455,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13268:15:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5457,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13614:9:30",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5460,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13690:5:30",
                            "valueSize": 1
                          }
                        ],
                        "id": 5462,
                        "nodeType": "InlineAssembly",
                        "src": "13018:843:30"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5453,
                    "nodeType": "StructuredDocumentation",
                    "src": "12518:282:30",
                    "text": " @dev Internal pure function to efficiently derive an digest to sign for\n      an order in accordance with EIP-712.\n @param domainSeparator The domain separator.\n @param orderHash       The order hash.\n @return value The hash."
                  },
                  "id": 5464,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_deriveEIP712Digest",
                  "nameLocation": "12814:19:30",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5458,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5455,
                        "mutability": "mutable",
                        "name": "domainSeparator",
                        "nameLocation": "12842:15:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 5464,
                        "src": "12834:23:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5454,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12834:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5457,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "12867:9:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 5464,
                        "src": "12859:17:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5456,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12859:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12833:44:30"
                  },
                  "returnParameters": {
                    "id": 5461,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5460,
                        "mutability": "mutable",
                        "name": "value",
                        "nameLocation": "12933:5:30",
                        "nodeType": "VariableDeclaration",
                        "scope": 5464,
                        "src": "12925:13:30",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5459,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "12925:7:30",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "12924:15:30"
                  },
                  "scope": 5465,
                  "src": "12805:1062:30",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 5466,
              "src": "408:13461:30",
              "usedErrors": [
                1856,
                1859,
                1866,
                1869,
                1874,
                1883,
                1886,
                1893,
                1896,
                1901,
                1906,
                1909,
                1912,
                1917,
                1920,
                1923
              ]
            }
          ],
          "src": "32:13838:30"
        },
        "id": 30
      },
      "seaport/contracts/lib/LowLevelHelpers.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/LowLevelHelpers.sol",
          "exportedSymbols": {
            "AccumulatorArmed": [
              3772
            ],
            "AccumulatorDisarmed": [
              3769
            ],
            "Accumulator_array_length_ptr": [
              3784
            ],
            "Accumulator_array_offset": [
              3790
            ],
            "Accumulator_array_offset_ptr": [
              3781
            ],
            "Accumulator_conduitKey_ptr": [
              3775
            ],
            "Accumulator_itemSizeOffsetDifference": [
              3787
            ],
            "Accumulator_selector_ptr": [
              3778
            ],
            "AdditionalRecipients_size": [
              3530
            ],
            "AdvancedOrder_numerator_offset": [
              3482
            ],
            "BasicOrder_additionalRecipients_data_cdPtr": [
              3621
            ],
            "BasicOrder_additionalRecipients_head_cdPtr": [
              3612
            ],
            "BasicOrder_additionalRecipients_head_ptr": [
              3678
            ],
            "BasicOrder_additionalRecipients_length_cdPtr": [
              3618
            ],
            "BasicOrder_basicOrderType_cdPtr": [
              3597
            ],
            "BasicOrder_considerationAmount_cdPtr": [
              3582
            ],
            "BasicOrder_considerationHashesArray_ptr": [
              3518
            ],
            "BasicOrder_considerationItem_endAmount_ptr": [
              3642
            ],
            "BasicOrder_considerationItem_identifier_ptr": [
              3636
            ],
            "BasicOrder_considerationItem_itemType_ptr": [
              3630
            ],
            "BasicOrder_considerationItem_startAmount_ptr": [
              3639
            ],
            "BasicOrder_considerationItem_token_ptr": [
              3633
            ],
            "BasicOrder_considerationItem_typeHash_ptr": [
              3627
            ],
            "BasicOrder_considerationToken_cdPtr": [
              3579
            ],
            "BasicOrder_endAmount_cdPtr": [
              3515
            ],
            "BasicOrder_fulfillerConduit_cdPtr": [
              3606
            ],
            "BasicOrder_offerAmount_cdPtr": [
              3594
            ],
            "BasicOrder_offerItem_endAmount_ptr": [
              3654
            ],
            "BasicOrder_offerItem_itemType_ptr": [
              3648
            ],
            "BasicOrder_offerItem_token_ptr": [
              3651
            ],
            "BasicOrder_offerItem_typeHash_ptr": [
              3645
            ],
            "BasicOrder_offerToken_cdPtr": [
              3591
            ],
            "BasicOrder_offererConduit_cdPtr": [
              3603
            ],
            "BasicOrder_offerer_cdPtr": [
              3585
            ],
            "BasicOrder_order_considerationHashes_ptr": [
              3666
            ],
            "BasicOrder_order_nonce_ptr": [
              3675
            ],
            "BasicOrder_order_offerHashes_ptr": [
              3663
            ],
            "BasicOrder_order_offerer_ptr": [
              3660
            ],
            "BasicOrder_order_orderType_ptr": [
              3669
            ],
            "BasicOrder_order_startTime_ptr": [
              3672
            ],
            "BasicOrder_order_typeHash_ptr": [
              3657
            ],
            "BasicOrder_parameters_cdPtr": [
              3576
            ],
            "BasicOrder_parameters_ptr": [
              3624
            ],
            "BasicOrder_signature_cdPtr": [
              3615
            ],
            "BasicOrder_signature_ptr": [
              3681
            ],
            "BasicOrder_startTime_cdPtr": [
              3600
            ],
            "BasicOrder_totalOriginalAdditionalRecipients_cdPtr": [
              3609
            ],
            "BasicOrder_zone_cdPtr": [
              3588
            ],
            "Common_amount_offset": [
              3413
            ],
            "Common_identifier_offset": [
              3410
            ],
            "Common_token_offset": [
              3407
            ],
            "Conduit_execute_ConduitTransfer_length": [
              3739
            ],
            "Conduit_execute_ConduitTransfer_length_ptr": [
              3745
            ],
            "Conduit_execute_ConduitTransfer_offset_ptr": [
              3742
            ],
            "Conduit_execute_ConduitTransfer_ptr": [
              3736
            ],
            "Conduit_execute_signature": [
              3733
            ],
            "Conduit_execute_transferAmount_ptr": [
              3763
            ],
            "Conduit_execute_transferFrom_ptr": [
              3754
            ],
            "Conduit_execute_transferIdentifier_ptr": [
              3760
            ],
            "Conduit_execute_transferItemType_ptr": [
              3748
            ],
            "Conduit_execute_transferTo_ptr": [
              3757
            ],
            "Conduit_execute_transferToken_ptr": [
              3751
            ],
            "Conduit_transferItem_amount_ptr": [
              3808
            ],
            "Conduit_transferItem_from_ptr": [
              3799
            ],
            "Conduit_transferItem_identifier_ptr": [
              3805
            ],
            "Conduit_transferItem_size": [
              3793
            ],
            "Conduit_transferItem_to_ptr": [
              3802
            ],
            "Conduit_transferItem_token_ptr": [
              3796
            ],
            "ConsiderItem_recipient_offset": [
              3431
            ],
            "ConsiderationItem_recipient_offset": [
              3428
            ],
            "CostPerWord": [
              3708
            ],
            "Create2AddressDerivation_length": [
              3717
            ],
            "Create2AddressDerivation_ptr": [
              3714
            ],
            "DefaultFreeMemoryPointer": [
              3506
            ],
            "EIP2098_allButHighestBitMask": [
              3685
            ],
            "EIP712_ConsiderationItem_size": [
              3527
            ],
            "EIP712_DigestPayload_size": [
              3539
            ],
            "EIP712_DomainSeparator_offset": [
              3533
            ],
            "EIP712_OfferItem_size": [
              3524
            ],
            "EIP712_OrderHash_offset": [
              3536
            ],
            "EIP712_Order_size": [
              3521
            ],
            "EIP_712_PREFIX": [
              3702
            ],
            "Execution_conduit_offset": [
              3437
            ],
            "Execution_offerer_offset": [
              3434
            ],
            "ExtraGasBuffer": [
              3705
            ],
            "FiveWords": [
              3497
            ],
            "FourWords": [
              3494
            ],
            "FreeMemoryPointerSlot": [
              3500
            ],
            "Fulfillment_itemIndex_offset": [
              3479
            ],
            "InvalidFulfillmentComponentData_error_len": [
              3444
            ],
            "InvalidFulfillmentComponentData_error_signature": [
              3441
            ],
            "LowLevelHelpers": [
              5505
            ],
            "MaskOverByteTwelve": [
              3721
            ],
            "MaskOverFirstFourBytes": [
              3729
            ],
            "MaskOverLastTwentyBytes": [
              3725
            ],
            "MemoryExpansionCoefficient": [
              3711
            ],
            "MissingItemAmount_error_len": [
              3464
            ],
            "MissingItemAmount_error_signature": [
              3461
            ],
            "NameLengthPtr": [
              3389
            ],
            "NameWithLength": [
              3392
            ],
            "NoContract_error_length": [
              3698
            ],
            "NoContract_error_sig_ptr": [
              3692
            ],
            "NoContract_error_signature": [
              3689
            ],
            "NoContract_error_token_ptr": [
              3695
            ],
            "OneConduitExecute_size": [
              3766
            ],
            "OneWord": [
              3485
            ],
            "OrderFulfilled_baseOffset": [
              3552
            ],
            "OrderFulfilled_baseSize": [
              3545
            ],
            "OrderFulfilled_consideration_body_offset": [
              3573
            ],
            "OrderFulfilled_consideration_head_offset": [
              3570
            ],
            "OrderFulfilled_consideration_length_baseOffset": [
              3555
            ],
            "OrderFulfilled_fulfiller_offset": [
              3561
            ],
            "OrderFulfilled_offer_body_offset": [
              3567
            ],
            "OrderFulfilled_offer_head_offset": [
              3564
            ],
            "OrderFulfilled_offer_length_baseOffset": [
              3558
            ],
            "OrderFulfilled_selector": [
              3549
            ],
            "OrderParameters_conduit_offset": [
              3473
            ],
            "OrderParameters_consideration_head_offset": [
              3470
            ],
            "OrderParameters_nonce_offset": [
              3476
            ],
            "OrderParameters_offer_head_offset": [
              3467
            ],
            "Panic_arithmetic": [
              3457
            ],
            "Panic_error_length": [
              3454
            ],
            "Panic_error_offset": [
              3451
            ],
            "Panic_error_signature": [
              3448
            ],
            "ReceivedItem_CommonParams_size": [
              3425
            ],
            "ReceivedItem_amount_offset": [
              3419
            ],
            "ReceivedItem_recipient_offset": [
              3422
            ],
            "ReceivedItem_size": [
              3416
            ],
            "Slot0x80": [
              3509
            ],
            "Slot0xA0": [
              3512
            ],
            "ThreeWords": [
              3491
            ],
            "TwoWords": [
              3488
            ],
            "Version": [
              3395
            ],
            "Version_length": [
              3398
            ],
            "ZeroSlot": [
              3503
            ],
            "_ENTERED": [
              3404
            ],
            "_NOT_ENTERED": [
              3401
            ],
            "receivedItemsHash_ptr": [
              3542
            ]
          },
          "id": 5506,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5467,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:31"
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationConstants.sol",
              "file": "./ConsiderationConstants.sol",
              "id": 5468,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5506,
              "sourceUnit": 3809,
              "src": "57:38:31",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "LowLevelHelpers",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 5469,
                "nodeType": "StructuredDocumentation",
                "src": "97:147:31",
                "text": " @title LowLevelHelpers\n @author 0age\n @notice LowLevelHelpers contains logic for performing various low-level\n         operations."
              },
              "fullyImplemented": true,
              "id": 5505,
              "linearizedBaseContracts": [
                5505
              ],
              "name": "LowLevelHelpers",
              "nameLocation": "254:15:31",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 5480,
                    "nodeType": "Block",
                    "src": "819:281:31",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "838:256:31",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "891:193:31",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "gas",
                                      "nodeType": "YulIdentifier",
                                      "src": "930:3:31"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "930:5:31"
                                  },
                                  {
                                    "name": "target",
                                    "nodeType": "YulIdentifier",
                                    "src": "953:6:31"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "callData",
                                        "nodeType": "YulIdentifier",
                                        "src": "981:8:31"
                                      },
                                      {
                                        "name": "OneWord",
                                        "nodeType": "YulIdentifier",
                                        "src": "991:7:31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "977:3:31"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "977:22:31"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "callData",
                                        "nodeType": "YulIdentifier",
                                        "src": "1023:8:31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nodeType": "YulIdentifier",
                                      "src": "1017:5:31"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1017:15:31"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1050:1:31",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1069:1:31",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "staticcall",
                                  "nodeType": "YulIdentifier",
                                  "src": "902:10:31"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "902:182:31"
                              },
                              "variableNames": [
                                {
                                  "name": "success",
                                  "nodeType": "YulIdentifier",
                                  "src": "891:7:31"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "991:7:31",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5474,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1023:8:31",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5474,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "981:8:31",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5477,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "891:7:31",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5472,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "953:6:31",
                            "valueSize": 1
                          }
                        ],
                        "id": 5479,
                        "nodeType": "InlineAssembly",
                        "src": "829:265:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5470,
                    "nodeType": "StructuredDocumentation",
                    "src": "276:413:31",
                    "text": " @dev Internal view function to staticcall an arbitrary target with given\n      calldata. Note that no data is written to memory and no contract\n      size check is performed.\n @param target   The account to staticcall.\n @param callData The calldata to supply when staticcalling the target.\n @return success The status of the staticcall to the target."
                  },
                  "id": 5481,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_staticcall",
                  "nameLocation": "703:11:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5475,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5472,
                        "mutability": "mutable",
                        "name": "target",
                        "nameLocation": "723:6:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 5481,
                        "src": "715:14:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5471,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "715:7:31",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5474,
                        "mutability": "mutable",
                        "name": "callData",
                        "nameLocation": "744:8:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 5481,
                        "src": "731:21:31",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 5473,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "731:5:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "714:39:31"
                  },
                  "returnParameters": {
                    "id": 5478,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5477,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "806:7:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 5481,
                        "src": "801:12:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5476,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "801:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "800:14:31"
                  },
                  "scope": 5505,
                  "src": "694:406:31",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5486,
                    "nodeType": "Block",
                    "src": "1404:2101:31",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1423:2076:31",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "1570:1919:31",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "1813:53:31",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [],
                                          "functionName": {
                                            "name": "returndatasize",
                                            "nodeType": "YulIdentifier",
                                            "src": "1840:14:31"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1840:16:31"
                                        },
                                        {
                                          "name": "OneWord",
                                          "nodeType": "YulIdentifier",
                                          "src": "1858:7:31"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "div",
                                        "nodeType": "YulIdentifier",
                                        "src": "1836:3:31"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1836:30:31"
                                    },
                                    "variables": [
                                      {
                                        "name": "returnDataWords",
                                        "nodeType": "YulTypedName",
                                        "src": "1817:15:31",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2098:60:31",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "FreeMemoryPointerSlot",
                                              "nodeType": "YulIdentifier",
                                              "src": "2126:21:31"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nodeType": "YulIdentifier",
                                            "src": "2120:5:31"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2120:28:31"
                                        },
                                        {
                                          "name": "OneWord",
                                          "nodeType": "YulIdentifier",
                                          "src": "2150:7:31"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "div",
                                        "nodeType": "YulIdentifier",
                                        "src": "2116:3:31"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2116:42:31"
                                    },
                                    "variables": [
                                      {
                                        "name": "msizeWords",
                                        "nodeType": "YulTypedName",
                                        "src": "2102:10:31",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "2241:45:31",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "CostPerWord",
                                          "nodeType": "YulIdentifier",
                                          "src": "2257:11:31"
                                        },
                                        {
                                          "name": "returnDataWords",
                                          "nodeType": "YulIdentifier",
                                          "src": "2270:15:31"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mul",
                                        "nodeType": "YulIdentifier",
                                        "src": "2253:3:31"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2253:33:31"
                                    },
                                    "variables": [
                                      {
                                        "name": "cost",
                                        "nodeType": "YulTypedName",
                                        "src": "2245:4:31",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "2403:572:31",
                                      "statements": [
                                        {
                                          "nodeType": "YulAssignment",
                                          "src": "2425:532:31",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "cost",
                                                "nodeType": "YulIdentifier",
                                                "src": "2462:4:31"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "returnDataWords",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2533:15:31"
                                                          },
                                                          {
                                                            "name": "msizeWords",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "2550:10:31"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "sub",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2529:3:31"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2529:32:31"
                                                      },
                                                      {
                                                        "name": "CostPerWord",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2563:11:31"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mul",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2525:3:31"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2525:50:31"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "returnDataWords",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2687:15:31"
                                                              },
                                                              {
                                                                "name": "returnDataWords",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2704:15:31"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "mul",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "2683:3:31"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2683:37:31"
                                                          },
                                                          {
                                                            "arguments": [
                                                              {
                                                                "name": "msizeWords",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2762:10:31"
                                                              },
                                                              {
                                                                "name": "msizeWords",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "2774:10:31"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "mul",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "2758:3:31"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "2758:27:31"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "sub",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2642:3:31"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "2642:177:31"
                                                      },
                                                      {
                                                        "name": "MemoryExpansionCoefficient",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2853:26:31"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "div",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "2605:3:31"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "2605:304:31"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2492:3:31"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2492:443:31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2433:3:31"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2433:524:31"
                                          },
                                          "variableNames": [
                                            {
                                              "name": "cost",
                                              "nodeType": "YulIdentifier",
                                              "src": "2425:4:31"
                                            }
                                          ]
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "returnDataWords",
                                          "nodeType": "YulIdentifier",
                                          "src": "2374:15:31"
                                        },
                                        {
                                          "name": "msizeWords",
                                          "nodeType": "YulIdentifier",
                                          "src": "2391:10:31"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "gt",
                                        "nodeType": "YulIdentifier",
                                        "src": "2371:2:31"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2371:31:31"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2368:607:31"
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "3191:284:31",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3305:1:31",
                                                "type": "",
                                                "value": "0"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3308:1:31",
                                                "type": "",
                                                "value": "0"
                                              },
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "returndatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3311:14:31"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3311:16:31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "returndatacopy",
                                              "nodeType": "YulIdentifier",
                                              "src": "3290:14:31"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3290:38:31"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "3290:38:31"
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "3437:1:31",
                                                "type": "",
                                                "value": "0"
                                              },
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "returndatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "3440:14:31"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "3440:16:31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "3430:6:31"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3430:27:31"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "3430:27:31"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "cost",
                                              "nodeType": "YulIdentifier",
                                              "src": "3161:4:31"
                                            },
                                            {
                                              "name": "ExtraGasBuffer",
                                              "nodeType": "YulIdentifier",
                                              "src": "3167:14:31"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "3157:3:31"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3157:25:31"
                                        },
                                        {
                                          "arguments": [],
                                          "functionName": {
                                            "name": "gas",
                                            "nodeType": "YulIdentifier",
                                            "src": "3184:3:31"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "3184:5:31"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "lt",
                                        "nodeType": "YulIdentifier",
                                        "src": "3154:2:31"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "3154:36:31"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "3151:324:31"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [],
                                "functionName": {
                                  "name": "returndatasize",
                                  "nodeType": "YulIdentifier",
                                  "src": "1553:14:31"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1553:16:31"
                              },
                              "nodeType": "YulIf",
                              "src": "1550:1939:31"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3708,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2257:11:31",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3708,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2563:11:31",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3705,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3167:14:31",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3500,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2126:21:31",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3711,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2853:26:31",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1858:7:31",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2150:7:31",
                            "valueSize": 1
                          }
                        ],
                        "id": 5485,
                        "nodeType": "InlineAssembly",
                        "src": "1414:2085:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5482,
                    "nodeType": "StructuredDocumentation",
                    "src": "1106:235:31",
                    "text": " @dev Internal view function to revert and pass along the revert reason if\n      data was returned by the last call and that the size of that data\n      does not exceed the currently allocated memory size."
                  },
                  "id": 5487,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_revertWithReasonIfOneIsReturned",
                  "nameLocation": "1355:32:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5483,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1387:2:31"
                  },
                  "returnParameters": {
                    "id": 5484,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1404:0:31"
                  },
                  "scope": 5505,
                  "src": "1346:2159:31",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5503,
                    "nodeType": "Block",
                    "src": "3924:705:31",
                    "statements": [
                      {
                        "assignments": [
                          5496
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5496,
                            "mutability": "mutable",
                            "name": "result",
                            "nameLocation": "4017:6:31",
                            "nodeType": "VariableDeclaration",
                            "scope": 5503,
                            "src": "4010:13:31",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 5495,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "4010:6:31",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5497,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4010:13:31"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "4121:385:31",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "4244:252:31",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4356:1:31",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4359:1:31",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "name": "OneWord",
                                          "nodeType": "YulIdentifier",
                                          "src": "4362:7:31"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "returndatacopy",
                                        "nodeType": "YulIdentifier",
                                        "src": "4341:14:31"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4341:29:31"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "4341:29:31"
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "4464:18:31",
                                    "value": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "4480:1:31",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "4474:5:31"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "4474:8:31"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "result",
                                        "nodeType": "YulIdentifier",
                                        "src": "4464:6:31"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "4217:14:31"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "4217:16:31"
                                  },
                                  {
                                    "name": "OneWord",
                                    "nodeType": "YulIdentifier",
                                    "src": "4235:7:31"
                                  }
                                ],
                                "functionName": {
                                  "name": "eq",
                                  "nodeType": "YulIdentifier",
                                  "src": "4214:2:31"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "4214:29:31"
                              },
                              "nodeType": "YulIf",
                              "src": "4211:285:31"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4235:7:31",
                            "valueSize": 1
                          },
                          {
                            "declaration": 3485,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4362:7:31",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5496,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4464:6:31",
                            "valueSize": 1
                          }
                        ],
                        "id": 5498,
                        "nodeType": "InlineAssembly",
                        "src": "4112:394:31"
                      },
                      {
                        "expression": {
                          "commonType": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          },
                          "id": 5501,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 5499,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5496,
                            "src": "4604:6:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 5500,
                            "name": "expected",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5490,
                            "src": "4614:8:31",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            }
                          },
                          "src": "4604:18:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "functionReturnParameters": 5494,
                        "id": 5502,
                        "nodeType": "Return",
                        "src": "4597:25:31"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5488,
                    "nodeType": "StructuredDocumentation",
                    "src": "3511:334:31",
                    "text": " @dev Internal pure function to determine if the first word of returndata\n      matches an expected magic value.\n @param expected The expected magic value.\n @return A boolean indicating whether the expected value matches the one\n         located in the first word of returndata."
                  },
                  "id": 5504,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_doesNotMatchMagic",
                  "nameLocation": "3859:18:31",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5491,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5490,
                        "mutability": "mutable",
                        "name": "expected",
                        "nameLocation": "3885:8:31",
                        "nodeType": "VariableDeclaration",
                        "scope": 5504,
                        "src": "3878:15:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        "typeName": {
                          "id": 5489,
                          "name": "bytes4",
                          "nodeType": "ElementaryTypeName",
                          "src": "3878:6:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3877:17:31"
                  },
                  "returnParameters": {
                    "id": 5494,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5493,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 5504,
                        "src": "3918:4:31",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5492,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3918:4:31",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3917:6:31"
                  },
                  "scope": 5505,
                  "src": "3850:779:31",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 5506,
              "src": "245:4386:31",
              "usedErrors": []
            }
          ],
          "src": "32:4600:31"
        },
        "id": 31
      },
      "seaport/contracts/lib/NonceManager.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/NonceManager.sol",
          "exportedSymbols": {
            "ConsiderationEventsAndErrors": [
              1924
            ],
            "NonceManager": [
              5561
            ],
            "ReentrancyGuard": [
              7768
            ]
          },
          "id": 5562,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5507,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:32"
            },
            {
              "absolutePath": "seaport/contracts/interfaces/ConsiderationEventsAndErrors.sol",
              "file": "../interfaces/ConsiderationEventsAndErrors.sol",
              "id": 5509,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5562,
              "sourceUnit": 1925,
              "src": "76:98:32",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5508,
                    "name": "ConsiderationEventsAndErrors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1924,
                    "src": "89:28:32",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ReentrancyGuard.sol",
              "file": "./ReentrancyGuard.sol",
              "id": 5511,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 5562,
              "sourceUnit": 7769,
              "src": "176:56:32",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5510,
                    "name": "ReentrancyGuard",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7768,
                    "src": "185:15:32",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5513,
                    "name": "ConsiderationEventsAndErrors",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 1924,
                    "src": "447:28:32"
                  },
                  "id": 5514,
                  "nodeType": "InheritanceSpecifier",
                  "src": "447:28:32"
                },
                {
                  "baseName": {
                    "id": 5515,
                    "name": "ReentrancyGuard",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7768,
                    "src": "477:15:32"
                  },
                  "id": 5516,
                  "nodeType": "InheritanceSpecifier",
                  "src": "477:15:32"
                }
              ],
              "canonicalName": "NonceManager",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 5512,
                "nodeType": "StructuredDocumentation",
                "src": "234:187:32",
                "text": " @title NonceManager\n @author 0age\n @notice NonceManager contains a storage mapping and related functionality\n         for retrieving and incrementing a per-offerer nonce."
              },
              "fullyImplemented": true,
              "id": 5561,
              "linearizedBaseContracts": [
                5561,
                7768,
                2209,
                1924
              ],
              "name": "NonceManager",
              "nameLocation": "431:12:32",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 5520,
                  "mutability": "mutable",
                  "name": "_nonces",
                  "nameLocation": "611:7:32",
                  "nodeType": "VariableDeclaration",
                  "scope": 5561,
                  "src": "575:43:32",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "typeName": {
                    "id": 5519,
                    "keyType": {
                      "id": 5517,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "583:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "575:27:32",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 5518,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "594:7:32",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 5544,
                    "nodeType": "Block",
                    "src": "949:431:32",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5526,
                            "name": "_assertNonReentrant",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7767,
                            "src": "1025:19:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 5527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1025:21:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5528,
                        "nodeType": "ExpressionStatement",
                        "src": "1025:21:32"
                      },
                      {
                        "id": 5537,
                        "nodeType": "UncheckedBlock",
                        "src": "1137:132:32",
                        "statements": [
                          {
                            "expression": {
                              "id": 5535,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 5529,
                                "name": "newNonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5524,
                                "src": "1226:8:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "id": 5534,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "1237:21:32",
                                "subExpression": {
                                  "baseExpression": {
                                    "id": 5530,
                                    "name": "_nonces",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5520,
                                    "src": "1239:7:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                      "typeString": "mapping(address => uint256)"
                                    }
                                  },
                                  "id": 5533,
                                  "indexExpression": {
                                    "expression": {
                                      "id": 5531,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "1247:3:32",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 5532,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "src": "1247:10:32",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "1239:19:32",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1226:32:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5536,
                            "nodeType": "ExpressionStatement",
                            "src": "1226:32:32"
                          }
                        ]
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 5539,
                              "name": "newNonce",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5524,
                              "src": "1352:8:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 5540,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1362:3:32",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 5541,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1362:10:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5538,
                            "name": "NonceIncremented",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1851,
                            "src": "1335:16:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$",
                              "typeString": "function (uint256,address)"
                            }
                          },
                          "id": 5542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1335:38:32",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5543,
                        "nodeType": "EmitStatement",
                        "src": "1330:43:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5521,
                    "nodeType": "StructuredDocumentation",
                    "src": "625:256:32",
                    "text": " @dev Internal function to cancel all orders from a given offerer with a\n      given zone in bulk by incrementing a nonce. Note that only the\n      offerer may increment the nonce.\n @return newNonce The new nonce."
                  },
                  "id": 5545,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_incrementNonce",
                  "nameLocation": "895:15:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5522,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "910:2:32"
                  },
                  "returnParameters": {
                    "id": 5525,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5524,
                        "mutability": "mutable",
                        "name": "newNonce",
                        "nameLocation": "939:8:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5545,
                        "src": "931:16:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5523,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "931:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "930:18:32"
                  },
                  "scope": 5561,
                  "src": "886:494:32",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 5559,
                    "nodeType": "Block",
                    "src": "1717:102:32",
                    "statements": [
                      {
                        "expression": {
                          "id": 5557,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 5553,
                            "name": "currentNonce",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5551,
                            "src": "1781:12:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 5554,
                              "name": "_nonces",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5520,
                              "src": "1796:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 5556,
                            "indexExpression": {
                              "id": 5555,
                              "name": "offerer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5548,
                              "src": "1804:7:32",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1796:16:32",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1781:31:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5558,
                        "nodeType": "ExpressionStatement",
                        "src": "1781:31:32"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5546,
                    "nodeType": "StructuredDocumentation",
                    "src": "1386:217:32",
                    "text": " @dev Internal view function to retrieve the current nonce for a given\n      offerer.\n @param offerer The offerer in question.\n @return currentNonce The current nonce."
                  },
                  "id": 5560,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getNonce",
                  "nameLocation": "1617:9:32",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5549,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5548,
                        "mutability": "mutable",
                        "name": "offerer",
                        "nameLocation": "1635:7:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5560,
                        "src": "1627:15:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5547,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1627:7:32",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1626:17:32"
                  },
                  "returnParameters": {
                    "id": 5552,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5551,
                        "mutability": "mutable",
                        "name": "currentNonce",
                        "nameLocation": "1699:12:32",
                        "nodeType": "VariableDeclaration",
                        "scope": 5560,
                        "src": "1691:20:32",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5550,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1691:7:32",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1690:22:32"
                  },
                  "scope": 5561,
                  "src": "1608:211:32",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 5562,
              "src": "422:1399:32",
              "usedErrors": [
                1856,
                1859,
                1866,
                1869,
                1874,
                1883,
                1886,
                1893,
                1896,
                1901,
                1906,
                1909,
                1912,
                1917,
                1920,
                1923,
                2208
              ]
            }
          ],
          "src": "32:1790:32"
        },
        "id": 32
      },
      "seaport/contracts/lib/OrderCombiner.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/OrderCombiner.sol",
          "exportedSymbols": {
            "AccumulatorArmed": [
              3772
            ],
            "AccumulatorDisarmed": [
              3769
            ],
            "Accumulator_array_length_ptr": [
              3784
            ],
            "Accumulator_array_offset": [
              3790
            ],
            "Accumulator_array_offset_ptr": [
              3781
            ],
            "Accumulator_conduitKey_ptr": [
              3775
            ],
            "Accumulator_itemSizeOffsetDifference": [
              3787
            ],
            "Accumulator_selector_ptr": [
              3778
            ],
            "AdditionalRecipient": [
              3985
            ],
            "AdditionalRecipients_size": [
              3530
            ],
            "AdvancedOrder": [
              4031
            ],
            "AdvancedOrder_numerator_offset": [
              3482
            ],
            "BasicOrder_additionalRecipients_data_cdPtr": [
              3621
            ],
            "BasicOrder_additionalRecipients_head_cdPtr": [
              3612
            ],
            "BasicOrder_additionalRecipients_head_ptr": [
              3678
            ],
            "BasicOrder_additionalRecipients_length_cdPtr": [
              3618
            ],
            "BasicOrder_basicOrderType_cdPtr": [
              3597
            ],
            "BasicOrder_considerationAmount_cdPtr": [
              3582
            ],
            "BasicOrder_considerationHashesArray_ptr": [
              3518
            ],
            "BasicOrder_considerationItem_endAmount_ptr": [
              3642
            ],
            "BasicOrder_considerationItem_identifier_ptr": [
              3636
            ],
            "BasicOrder_considerationItem_itemType_ptr": [
              3630
            ],
            "BasicOrder_considerationItem_startAmount_ptr": [
              3639
            ],
            "BasicOrder_considerationItem_token_ptr": [
              3633
            ],
            "BasicOrder_considerationItem_typeHash_ptr": [
              3627
            ],
            "BasicOrder_considerationToken_cdPtr": [
              3579
            ],
            "BasicOrder_endAmount_cdPtr": [
              3515
            ],
            "BasicOrder_fulfillerConduit_cdPtr": [
              3606
            ],
            "BasicOrder_offerAmount_cdPtr": [
              3594
            ],
            "BasicOrder_offerItem_endAmount_ptr": [
              3654
            ],
            "BasicOrder_offerItem_itemType_ptr": [
              3648
            ],
            "BasicOrder_offerItem_token_ptr": [
              3651
            ],
            "BasicOrder_offerItem_typeHash_ptr": [
              3645
            ],
            "BasicOrder_offerToken_cdPtr": [
              3591
            ],
            "BasicOrder_offererConduit_cdPtr": [
              3603
            ],
            "BasicOrder_offerer_cdPtr": [
              3585
            ],
            "BasicOrder_order_considerationHashes_ptr": [
              3666
            ],
            "BasicOrder_order_nonce_ptr": [
              3675
            ],
            "BasicOrder_order_offerHashes_ptr": [
              3663
            ],
            "BasicOrder_order_offerer_ptr": [
              3660
            ],
            "BasicOrder_order_orderType_ptr": [
              3669
            ],
            "BasicOrder_order_startTime_ptr": [
              3672
            ],
            "BasicOrder_order_typeHash_ptr": [
              3657
            ],
            "BasicOrder_parameters_cdPtr": [
              3576
            ],
            "BasicOrder_parameters_ptr": [
              3624
            ],
            "BasicOrder_signature_cdPtr": [
              3615
            ],
            "BasicOrder_signature_ptr": [
              3681
            ],
            "BasicOrder_startTime_cdPtr": [
              3600
            ],
            "BasicOrder_totalOriginalAdditionalRecipients_cdPtr": [
              3609
            ],
            "BasicOrder_zone_cdPtr": [
              3588
            ],
            "Common_amount_offset": [
              3413
            ],
            "Common_identifier_offset": [
              3410
            ],
            "Common_token_offset": [
              3407
            ],
            "Conduit_execute_ConduitTransfer_length": [
              3739
            ],
            "Conduit_execute_ConduitTransfer_length_ptr": [
              3745
            ],
            "Conduit_execute_ConduitTransfer_offset_ptr": [
              3742
            ],
            "Conduit_execute_ConduitTransfer_ptr": [
              3736
            ],
            "Conduit_execute_signature": [
              3733
            ],
            "Conduit_execute_transferAmount_ptr": [
              3763
            ],
            "Conduit_execute_transferFrom_ptr": [
              3754
            ],
            "Conduit_execute_transferIdentifier_ptr": [
              3760
            ],
            "Conduit_execute_transferItemType_ptr": [
              3748
            ],
            "Conduit_execute_transferTo_ptr": [
              3757
            ],
            "Conduit_execute_transferToken_ptr": [
              3751
            ],
            "Conduit_transferItem_amount_ptr": [
              3808
            ],
            "Conduit_transferItem_from_ptr": [
              3799
            ],
            "Conduit_transferItem_identifier_ptr": [
              3805
            ],
            "Conduit_transferItem_size": [
              3793
            ],
            "Conduit_transferItem_to_ptr": [
              3802
            ],
            "Conduit_transferItem_token_ptr": [
              3796
            ],
            "ConsiderItem_recipient_offset": [
              3431
            ],
            "ConsiderationItem": [
              3918
            ],
            "ConsiderationItem_recipient_offset": [
              3428
            ],
            "CostPerWord": [
              3708
            ],
            "Create2AddressDerivation_length": [
              3717
            ],
            "Create2AddressDerivation_ptr": [
              3714
            ],
            "CriteriaResolver": [
              4053
            ],
            "DefaultFreeMemoryPointer": [
              3506
            ],
            "EIP2098_allButHighestBitMask": [
              3685
            ],
            "EIP712_ConsiderationItem_size": [
              3527
            ],
            "EIP712_DigestPayload_size": [
              3539
            ],
            "EIP712_DomainSeparator_offset": [
              3533
            ],
            "EIP712_OfferItem_size": [
              3524
            ],
            "EIP712_OrderHash_offset": [
              3536
            ],
            "EIP712_Order_size": [
              3521
            ],
            "EIP_712_PREFIX": [
              3702
            ],
            "Execution": [
              4075
            ],
            "Execution_conduit_offset": [
              3437
            ],
            "Execution_offerer_offset": [
              3434
            ],
            "ExtraGasBuffer": [
              3705
            ],
            "FiveWords": [
              3497
            ],
            "FourWords": [
              3494
            ],
            "FreeMemoryPointerSlot": [
              3500
            ],
            "Fulfillment": [
              4062
            ],
            "FulfillmentApplier": [
              5325
            ],
            "FulfillmentComponent": [
              4067
            ],
            "Fulfillment_itemIndex_offset": [
              3479
            ],
            "InvalidFulfillmentComponentData_error_len": [
              3444
            ],
            "InvalidFulfillmentComponentData_error_signature": [
              3441
            ],
            "ItemType": [
              3854
            ],
            "MaskOverByteTwelve": [
              3721
            ],
            "MaskOverFirstFourBytes": [
              3729
            ],
            "MaskOverLastTwentyBytes": [
              3725
            ],
            "MemoryExpansionCoefficient": [
              3711
            ],
            "MissingItemAmount_error_len": [
              3464
            ],
            "MissingItemAmount_error_signature": [
              3461
            ],
            "NameLengthPtr": [
              3389
            ],
            "NameWithLength": [
              3392
            ],
            "NoContract_error_length": [
              3698
            ],
            "NoContract_error_sig_ptr": [
              3692
            ],
            "NoContract_error_signature": [
              3689
            ],
            "NoContract_error_token_ptr": [
              3695
            ],
            "OfferItem": [
              3904
            ],
            "OneConduitExecute_size": [
              3766
            ],
            "OneWord": [
              3485
            ],
            "Order": [
              4019
            ],
            "OrderCombiner": [
              6541
            ],
            "OrderFulfilled_baseOffset": [
              3552
            ],
            "OrderFulfilled_baseSize": [
              3545
            ],
            "OrderFulfilled_consideration_body_offset": [
              3573
            ],
            "OrderFulfilled_consideration_head_offset": [
              3570
            ],
            "OrderFulfilled_consideration_length_baseOffset": [
              3555
            ],
            "OrderFulfilled_fulfiller_offset": [
              3561
            ],
            "OrderFulfilled_offer_body_offset": [
              3567
            ],
            "OrderFulfilled_offer_head_offset": [
              3564
            ],
            "OrderFulfilled_offer_length_baseOffset": [
              3558
            ],
            "OrderFulfilled_selector": [
              3549
            ],
            "OrderFulfiller": [
              7063
            ],
            "OrderParameters": [
              4013
            ],
            "OrderParameters_conduit_offset": [
              3473
            ],
            "OrderParameters_consideration_head_offset": [
              3470
            ],
            "OrderParameters_nonce_offset": [
              3476
            ],
            "OrderParameters_offer_head_offset": [
              3467
            ],
            "Panic_arithmetic": [
              3457
            ],
            "Panic_error_length": [
              3454
            ],
            "Panic_error_offset": [
              3451
            ],
            "Panic_error_signature": [
              3448
            ],
            "ReceivedItem": [
              3940
            ],
            "ReceivedItem_CommonParams_size": [
              3425
            ],
            "ReceivedItem_amount_offset": [
              3419
            ],
            "ReceivedItem_recipient_offset": [
              3422
            ],
            "ReceivedItem_size": [
              3416
            ],
            "Side": [
              3857
            ],
            "Slot0x80": [
              3509
            ],
            "Slot0xA0": [
              3512
            ],
            "SpentItem": [
              3928
            ],
            "ThreeWords": [
              3491
            ],
            "TwoWords": [
              3488
            ],
            "Version": [
              3395
            ],
            "Version_length": [
              3398
            ],
            "ZeroSlot": [
              3503
            ],
            "_ENTERED": [
              3404
            ],
            "_NOT_ENTERED": [
              3401
            ],
            "receivedItemsHash_ptr": [
              3542
            ]
          },
          "id": 6542,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 5563,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:33"
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationEnums.sol",
              "file": "./ConsiderationEnums.sol",
              "id": 5566,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6542,
              "sourceUnit": 3858,
              "src": "57:58:33",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5564,
                    "name": "Side",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3857,
                    "src": "66:4:33",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5565,
                    "name": "ItemType",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3854,
                    "src": "72:8:33",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationStructs.sol",
              "file": "./ConsiderationStructs.sol",
              "id": 5579,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6542,
              "sourceUnit": 4076,
              "src": "136:271:33",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5567,
                    "name": "AdditionalRecipient",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3985,
                    "src": "149:19:33",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5568,
                    "name": "OfferItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3904,
                    "src": "174:9:33",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5569,
                    "name": "ConsiderationItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3918,
                    "src": "189:17:33",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5570,
                    "name": "SpentItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3928,
                    "src": "212:9:33",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5571,
                    "name": "ReceivedItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3940,
                    "src": "227:12:33",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5572,
                    "name": "OrderParameters",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4013,
                    "src": "245:15:33",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5573,
                    "name": "Fulfillment",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4062,
                    "src": "266:11:33",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5574,
                    "name": "FulfillmentComponent",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4067,
                    "src": "283:20:33",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5575,
                    "name": "Execution",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4075,
                    "src": "309:9:33",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5576,
                    "name": "Order",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4019,
                    "src": "324:5:33",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5577,
                    "name": "AdvancedOrder",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4031,
                    "src": "335:13:33",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 5578,
                    "name": "CriteriaResolver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4053,
                    "src": "354:16:33",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/OrderFulfiller.sol",
              "file": "./OrderFulfiller.sol",
              "id": 5581,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6542,
              "sourceUnit": 7064,
              "src": "409:54:33",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5580,
                    "name": "OrderFulfiller",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7063,
                    "src": "418:14:33",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/FulfillmentApplier.sol",
              "file": "./FulfillmentApplier.sol",
              "id": 5583,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6542,
              "sourceUnit": 5326,
              "src": "465:62:33",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 5582,
                    "name": "FulfillmentApplier",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5325,
                    "src": "474:18:33",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationConstants.sol",
              "file": "./ConsiderationConstants.sol",
              "id": 5584,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 6542,
              "sourceUnit": 3809,
              "src": "529:38:33",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 5586,
                    "name": "OrderFulfiller",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7063,
                    "src": "839:14:33"
                  },
                  "id": 5587,
                  "nodeType": "InheritanceSpecifier",
                  "src": "839:14:33"
                },
                {
                  "baseName": {
                    "id": 5588,
                    "name": "FulfillmentApplier",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5325,
                    "src": "855:18:33"
                  },
                  "id": 5589,
                  "nodeType": "InheritanceSpecifier",
                  "src": "855:18:33"
                }
              ],
              "canonicalName": "OrderCombiner",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 5585,
                "nodeType": "StructuredDocumentation",
                "src": "569:243:33",
                "text": " @title OrderCombiner\n @author 0age\n @notice OrderCombiner contains logic for fulfilling combinations of orders,\n         either by matching offer items to consideration items or by\n         fulfilling orders where available."
              },
              "fullyImplemented": true,
              "id": 6541,
              "linearizedBaseContracts": [
                6541,
                5325,
                2202,
                7063,
                2491,
                1542,
                4450,
                2169,
                3152,
                7714,
                8592,
                5018,
                7981,
                8379,
                7917,
                5505,
                2290,
                2227,
                2594,
                2281,
                5561,
                7768,
                2209,
                5465,
                3384,
                1924
              ],
              "name": "OrderCombiner",
              "nameLocation": "822:13:33",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 5598,
                    "nodeType": "Block",
                    "src": "1306:2:33",
                    "statements": []
                  },
                  "documentation": {
                    "id": 5590,
                    "nodeType": "StructuredDocumentation",
                    "src": "880:348:33",
                    "text": " @dev Derive and set hashes, reference chainId, and associated domain\n      separator during deployment.\n @param conduitController A contract that deploys conduits, or proxies\n                          that may optionally be used to transfer approved\n                          ERC20/721/1155 tokens."
                  },
                  "id": 5599,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 5595,
                          "name": "conduitController",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5592,
                          "src": "1287:17:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 5596,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 5594,
                        "name": "OrderFulfiller",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 7063,
                        "src": "1272:14:33"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1272:33:33"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5593,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5592,
                        "mutability": "mutable",
                        "name": "conduitController",
                        "nameLocation": "1253:17:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5599,
                        "src": "1245:25:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 5591,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1245:7:33",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1244:27:33"
                  },
                  "returnParameters": {
                    "id": 5597,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1306:0:33"
                  },
                  "scope": 6541,
                  "src": "1233:75:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 5654,
                    "nodeType": "Block",
                    "src": "6140:701:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5633,
                              "name": "advancedOrders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5604,
                              "src": "6279:14:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              }
                            },
                            {
                              "id": 5634,
                              "name": "criteriaResolvers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5608,
                              "src": "6307:17:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct CriteriaResolver memory[] memory"
                              }
                            },
                            {
                              "hexValue": "66616c7365",
                              "id": 5635,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6338:5:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            },
                            {
                              "id": 5636,
                              "name": "maximumFulfilled",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5622,
                              "src": "6409:16:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct CriteriaResolver memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5632,
                            "name": "_validateOrdersAndPrepareToFulfill",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6016,
                            "src": "6231:34:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr_$_t_bool_$_t_uint256_$returns$__$",
                              "typeString": "function (struct AdvancedOrder memory[] memory,struct CriteriaResolver memory[] memory,bool,uint256)"
                            }
                          },
                          "id": 5637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6231:204:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5638,
                        "nodeType": "ExpressionStatement",
                        "src": "6231:204:33"
                      },
                      {
                        "expression": {
                          "id": 5648,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "components": [
                              {
                                "id": 5639,
                                "name": "availableOrders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5626,
                                "src": "6526:15:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                  "typeString": "bool[] memory"
                                }
                              },
                              {
                                "id": 5640,
                                "name": "executions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5630,
                                "src": "6543:10:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct Execution memory[] memory"
                                }
                              }
                            ],
                            "id": 5641,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "TupleExpression",
                            "src": "6525:29:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_array$_t_bool_$dyn_memory_ptr_$_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "tuple(bool[] memory,struct Execution memory[] memory)"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 5643,
                                "name": "advancedOrders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5604,
                                "src": "6600:14:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct AdvancedOrder memory[] memory"
                                }
                              },
                              {
                                "id": 5644,
                                "name": "offerFulfillments",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5613,
                                "src": "6628:17:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "struct FulfillmentComponent calldata[] calldata[] calldata"
                                }
                              },
                              {
                                "id": 5645,
                                "name": "considerationFulfillments",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5618,
                                "src": "6659:25:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "struct FulfillmentComponent calldata[] calldata[] calldata"
                                }
                              },
                              {
                                "id": 5646,
                                "name": "fulfillerConduitKey",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5620,
                                "src": "6698:19:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct AdvancedOrder memory[] memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "struct FulfillmentComponent calldata[] calldata[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "struct FulfillmentComponent calldata[] calldata[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 5642,
                              "name": "_executeAvailableFulfillments",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6207,
                              "src": "6557:29:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr_$_t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr_$_t_bytes32_$returns$_t_array$_t_bool_$dyn_memory_ptr_$_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (struct AdvancedOrder memory[] memory,struct FulfillmentComponent memory[] memory[] memory,struct FulfillmentComponent memory[] memory[] memory,bytes32) returns (bool[] memory,struct Execution memory[] memory)"
                              }
                            },
                            "id": 5647,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6557:170:33",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_array$_t_bool_$dyn_memory_ptr_$_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "tuple(bool[] memory,struct Execution memory[] memory)"
                            }
                          },
                          "src": "6525:202:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5649,
                        "nodeType": "ExpressionStatement",
                        "src": "6525:202:33"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 5650,
                              "name": "availableOrders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5626,
                              "src": "6806:15:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                "typeString": "bool[] memory"
                              }
                            },
                            {
                              "id": 5651,
                              "name": "executions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5630,
                              "src": "6823:10:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct Execution memory[] memory"
                              }
                            }
                          ],
                          "id": 5652,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6805:29:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_bool_$dyn_memory_ptr_$_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr_$",
                            "typeString": "tuple(bool[] memory,struct Execution memory[] memory)"
                          }
                        },
                        "functionReturnParameters": 5631,
                        "id": 5653,
                        "nodeType": "Return",
                        "src": "6798:36:33"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5600,
                    "nodeType": "StructuredDocumentation",
                    "src": "1314:4373:33",
                    "text": " @notice Internal function to attempt to fill a group of orders, fully or\n         partially, with an arbitrary number of items for offer and\n         consideration per order alongside criteria resolvers containing\n         specific token identifiers and associated proofs. Any order that\n         is not currently active, has already been fully filled, or has\n         been cancelled will be omitted. Remaining offer and consideration\n         items will then be aggregated where possible as indicated by the\n         supplied offer and consideration component arrays and aggregated\n         items will be transferred to the fulfiller or to each intended\n         recipient, respectively. Note that a failing item transfer or an\n         issue with order formatting will cause the entire batch to fail.\n @param advancedOrders            The orders to fulfill along with the\n                                  fraction of those orders to attempt to\n                                  fill. Note that both the offerer and the\n                                  fulfiller must first approve this\n                                  contract (or a conduit if indicated by\n                                  the order) to transfer any relevant\n                                  tokens on their behalf and that\n                                  contracts must implement\n                                  `onERC1155Received` in order to receive\n                                  ERC1155 tokens as consideration. Also\n                                  note that all offer and consideration\n                                  components must have no remainder after\n                                  multiplication of the respective amount\n                                  with the supplied fraction for an\n                                  order's partial fill amount to be\n                                  considered valid.\n @param criteriaResolvers         An array where each element contains a\n                                  reference to a specific offer or\n                                  consideration, a token identifier, and a\n                                  proof that the supplied token identifier\n                                  is contained in the merkle root held by\n                                  the item in question's criteria element.\n                                  Note that an empty criteria indicates\n                                  that any (transferrable) token\n                                  identifier on the token in question is\n                                  valid and that no associated proof needs\n                                  to be supplied.\n @param offerFulfillments         An array of FulfillmentComponent arrays\n                                  indicating which offer items to attempt\n                                  to aggregate when preparing executions.\n @param considerationFulfillments An array of FulfillmentComponent arrays\n                                  indicating which consideration items to\n                                  attempt to aggregate when preparing\n                                  executions.\n @param fulfillerConduitKey       A bytes32 value indicating what conduit,\n                                  if any, to source the fulfiller's token\n                                  approvals from. The zero hash signifies\n                                  that no conduit should be used (and\n                                  direct approvals set on Consideration).\n @param maximumFulfilled          The maximum number of orders to fulfill.\n @return availableOrders An array of booleans indicating if each order\n                         with an index corresponding to the index of the\n                         returned boolean was fulfillable or not.\n @return executions      An array of elements indicating the sequence of\n                         transfers performed as part of matching the given\n                         orders."
                  },
                  "id": 5655,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_fulfillAvailableAdvancedOrders",
                  "nameLocation": "5701:31:33",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5623,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5604,
                        "mutability": "mutable",
                        "name": "advancedOrders",
                        "nameLocation": "5765:14:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5655,
                        "src": "5742:37:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct AdvancedOrder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5602,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5601,
                              "name": "AdvancedOrder",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4031,
                              "src": "5742:13:33"
                            },
                            "referencedDeclaration": 4031,
                            "src": "5742:13:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                              "typeString": "struct AdvancedOrder"
                            }
                          },
                          "id": 5603,
                          "nodeType": "ArrayTypeName",
                          "src": "5742:15:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                            "typeString": "struct AdvancedOrder[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5608,
                        "mutability": "mutable",
                        "name": "criteriaResolvers",
                        "nameLocation": "5815:17:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5655,
                        "src": "5789:43:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct CriteriaResolver[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5606,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5605,
                              "name": "CriteriaResolver",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4053,
                              "src": "5789:16:33"
                            },
                            "referencedDeclaration": 4053,
                            "src": "5789:16:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                              "typeString": "struct CriteriaResolver"
                            }
                          },
                          "id": 5607,
                          "nodeType": "ArrayTypeName",
                          "src": "5789:18:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_storage_$dyn_storage_ptr",
                            "typeString": "struct CriteriaResolver[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5613,
                        "mutability": "mutable",
                        "name": "offerFulfillments",
                        "nameLocation": "5876:17:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5655,
                        "src": "5842:51:33",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct FulfillmentComponent[][]"
                        },
                        "typeName": {
                          "baseType": {
                            "baseType": {
                              "id": 5610,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5609,
                                "name": "FulfillmentComponent",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4067,
                                "src": "5842:20:33"
                              },
                              "referencedDeclaration": 4067,
                              "src": "5842:20:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                                "typeString": "struct FulfillmentComponent"
                              }
                            },
                            "id": 5611,
                            "nodeType": "ArrayTypeName",
                            "src": "5842:22:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                              "typeString": "struct FulfillmentComponent[]"
                            }
                          },
                          "id": 5612,
                          "nodeType": "ArrayTypeName",
                          "src": "5842:24:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_$dyn_storage_ptr",
                            "typeString": "struct FulfillmentComponent[][]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5618,
                        "mutability": "mutable",
                        "name": "considerationFulfillments",
                        "nameLocation": "5937:25:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5655,
                        "src": "5903:59:33",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct FulfillmentComponent[][]"
                        },
                        "typeName": {
                          "baseType": {
                            "baseType": {
                              "id": 5615,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 5614,
                                "name": "FulfillmentComponent",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4067,
                                "src": "5903:20:33"
                              },
                              "referencedDeclaration": 4067,
                              "src": "5903:20:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                                "typeString": "struct FulfillmentComponent"
                              }
                            },
                            "id": 5616,
                            "nodeType": "ArrayTypeName",
                            "src": "5903:22:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                              "typeString": "struct FulfillmentComponent[]"
                            }
                          },
                          "id": 5617,
                          "nodeType": "ArrayTypeName",
                          "src": "5903:24:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_$dyn_storage_ptr",
                            "typeString": "struct FulfillmentComponent[][]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5620,
                        "mutability": "mutable",
                        "name": "fulfillerConduitKey",
                        "nameLocation": "5980:19:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5655,
                        "src": "5972:27:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 5619,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "5972:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5622,
                        "mutability": "mutable",
                        "name": "maximumFulfilled",
                        "nameLocation": "6017:16:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5655,
                        "src": "6009:24:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5621,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6009:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "5732:307:33"
                  },
                  "returnParameters": {
                    "id": 5631,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5626,
                        "mutability": "mutable",
                        "name": "availableOrders",
                        "nameLocation": "6088:15:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5655,
                        "src": "6074:29:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5624,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "6074:4:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 5625,
                          "nodeType": "ArrayTypeName",
                          "src": "6074:6:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5630,
                        "mutability": "mutable",
                        "name": "executions",
                        "nameLocation": "6124:10:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 5655,
                        "src": "6105:29:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Execution[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5628,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5627,
                              "name": "Execution",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4075,
                              "src": "6105:9:33"
                            },
                            "referencedDeclaration": 4075,
                            "src": "6105:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                              "typeString": "struct Execution"
                            }
                          },
                          "id": 5629,
                          "nodeType": "ArrayTypeName",
                          "src": "6105:11:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_storage_$dyn_storage_ptr",
                            "typeString": "struct Execution[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6073:62:33"
                  },
                  "scope": 6541,
                  "src": "5692:1149:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6015,
                    "nodeType": "Block",
                    "src": "8370:9628:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 5671,
                            "name": "_setReentrancyGuard",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7745,
                            "src": "8457:19:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 5672,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8457:21:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5673,
                        "nodeType": "ExpressionStatement",
                        "src": "8457:21:33"
                      },
                      {
                        "assignments": [
                          5675
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5675,
                            "mutability": "mutable",
                            "name": "totalOrders",
                            "nameLocation": "8560:11:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 6015,
                            "src": "8552:19:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5674,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "8552:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5678,
                        "initialValue": {
                          "expression": {
                            "id": 5676,
                            "name": "advancedOrders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5660,
                            "src": "8574:14:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct AdvancedOrder memory[] memory"
                            }
                          },
                          "id": 5677,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "8574:21:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8552:43:33"
                      },
                      {
                        "assignments": [
                          5683
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5683,
                            "mutability": "mutable",
                            "name": "orderHashes",
                            "nameLocation": "8687:11:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 6015,
                            "src": "8670:28:33",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 5681,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "8670:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 5682,
                              "nodeType": "ArrayTypeName",
                              "src": "8670:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                "typeString": "bytes32[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5689,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 5687,
                              "name": "totalOrders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5675,
                              "src": "8715:11:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5686,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "8701:13:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes32[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 5684,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "8705:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 5685,
                              "nodeType": "ArrayTypeName",
                              "src": "8705:9:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                "typeString": "bytes32[]"
                              }
                            }
                          },
                          "id": 5688,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8701:26:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                            "typeString": "bytes32[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "8670:57:33"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "8827:46:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "orderHashes",
                                    "nodeType": "YulIdentifier",
                                    "src": "8848:11:33"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "8861:1:33",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "8841:6:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "8841:22:33"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "8841:22:33"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 5683,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8848:11:33",
                            "valueSize": 1
                          }
                        ],
                        "id": 5690,
                        "nodeType": "InlineAssembly",
                        "src": "8818:55:33"
                      },
                      {
                        "id": 5957,
                        "nodeType": "UncheckedBlock",
                        "src": "8962:7519:33",
                        "statements": [
                          {
                            "body": {
                              "id": 5955,
                              "nodeType": "Block",
                              "src": "9068:7403:33",
                              "statements": [
                                {
                                  "assignments": [
                                    5703
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 5703,
                                      "mutability": "mutable",
                                      "name": "advancedOrder",
                                      "nameLocation": "9154:13:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 5955,
                                      "src": "9133:34:33",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                        "typeString": "struct AdvancedOrder"
                                      },
                                      "typeName": {
                                        "id": 5702,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 5701,
                                          "name": "AdvancedOrder",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 4031,
                                          "src": "9133:13:33"
                                        },
                                        "referencedDeclaration": 4031,
                                        "src": "9133:13:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                                          "typeString": "struct AdvancedOrder"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 5707,
                                  "initialValue": {
                                    "baseExpression": {
                                      "id": 5704,
                                      "name": "advancedOrders",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5660,
                                      "src": "9170:14:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct AdvancedOrder memory[] memory"
                                      }
                                    },
                                    "id": 5706,
                                    "indexExpression": {
                                      "id": 5705,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5692,
                                      "src": "9185:1:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9170:17:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                      "typeString": "struct AdvancedOrder memory"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "9133:54:33"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5710,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 5708,
                                      "name": "maximumFulfilled",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5668,
                                      "src": "9289:16:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 5709,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9309:1:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "9289:21:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 5720,
                                  "nodeType": "IfStatement",
                                  "src": "9285:455:33",
                                  "trueBody": {
                                    "id": 5719,
                                    "nodeType": "Block",
                                    "src": "9312:428:33",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 5715,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "expression": {
                                              "id": 5711,
                                              "name": "advancedOrder",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5703,
                                              "src": "9415:13:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                                "typeString": "struct AdvancedOrder memory"
                                              }
                                            },
                                            "id": 5713,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "numerator",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4024,
                                            "src": "9415:23:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint120",
                                              "typeString": "uint120"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "hexValue": "30",
                                            "id": 5714,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9441:1:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "9415:27:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint120",
                                            "typeString": "uint120"
                                          }
                                        },
                                        "id": 5716,
                                        "nodeType": "ExpressionStatement",
                                        "src": "9415:27:33"
                                      },
                                      {
                                        "AST": {
                                          "nodeType": "YulBlock",
                                          "src": "9541:78:33",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "name": "orderHashes",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "9574:11:33"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "i",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "9591:1:33"
                                                      },
                                                      {
                                                        "kind": "number",
                                                        "nodeType": "YulLiteral",
                                                        "src": "9594:1:33",
                                                        "type": "",
                                                        "value": "1"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "9587:3:33"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "9587:9:33"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "9567:6:33"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "9567:30:33"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "9567:30:33"
                                            }
                                          ]
                                        },
                                        "evmVersion": "london",
                                        "externalReferences": [
                                          {
                                            "declaration": 5692,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "9591:1:33",
                                            "valueSize": 1
                                          },
                                          {
                                            "declaration": 5683,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "9574:11:33",
                                            "valueSize": 1
                                          }
                                        ],
                                        "id": 5717,
                                        "nodeType": "InlineAssembly",
                                        "src": "9532:87:33"
                                      },
                                      {
                                        "id": 5718,
                                        "nodeType": "Continue",
                                        "src": "9713:8:33"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "assignments": [
                                    5722,
                                    5724,
                                    5726
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 5722,
                                      "mutability": "mutable",
                                      "name": "orderHash",
                                      "nameLocation": "9867:9:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 5955,
                                      "src": "9859:17:33",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      "typeName": {
                                        "id": 5721,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9859:7:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "visibility": "internal"
                                    },
                                    {
                                      "constant": false,
                                      "id": 5724,
                                      "mutability": "mutable",
                                      "name": "numerator",
                                      "nameLocation": "9906:9:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 5955,
                                      "src": "9898:17:33",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 5723,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9898:7:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    },
                                    {
                                      "constant": false,
                                      "id": 5726,
                                      "mutability": "mutable",
                                      "name": "denominator",
                                      "nameLocation": "9945:11:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 5955,
                                      "src": "9937:19:33",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 5725,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9937:7:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 5733,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "id": 5728,
                                        "name": "advancedOrder",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5703,
                                        "src": "10032:13:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory"
                                        }
                                      },
                                      {
                                        "id": 5729,
                                        "name": "criteriaResolvers",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5664,
                                        "src": "10071:17:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct CriteriaResolver memory[] memory"
                                        }
                                      },
                                      {
                                        "id": 5730,
                                        "name": "revertOnInvalid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5666,
                                        "src": "10114:15:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      {
                                        "id": 5731,
                                        "name": "orderHashes",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5683,
                                        "src": "10155:11:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                          "typeString": "bytes32[] memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory"
                                        },
                                        {
                                          "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct CriteriaResolver memory[] memory"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                          "typeString": "bytes32[] memory"
                                        }
                                      ],
                                      "id": 5727,
                                      "name": "_validateOrderAndUpdateStatus",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7441,
                                      "src": "9977:29:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AdvancedOrder_$4031_memory_ptr_$_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr_$_t_bool_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_bytes32_$_t_uint256_$_t_uint256_$",
                                        "typeString": "function (struct AdvancedOrder memory,struct CriteriaResolver memory[] memory,bool,bytes32[] memory) returns (bytes32,uint256,uint256)"
                                      }
                                    },
                                    "id": 5732,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9977:211:33",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$_t_uint256_$",
                                      "typeString": "tuple(bytes32,uint256,uint256)"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "9837:351:33"
                                },
                                {
                                  "AST": {
                                    "nodeType": "YulBlock",
                                    "src": "10279:70:33",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "orderHashes",
                                              "nodeType": "YulIdentifier",
                                              "src": "10308:11:33"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "name": "i",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10325:1:33"
                                                },
                                                {
                                                  "kind": "number",
                                                  "nodeType": "YulLiteral",
                                                  "src": "10328:1:33",
                                                  "type": "",
                                                  "value": "1"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "10321:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10321:9:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10301:6:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10301:30:33"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "10301:30:33"
                                      }
                                    ]
                                  },
                                  "evmVersion": "london",
                                  "externalReferences": [
                                    {
                                      "declaration": 5692,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "10325:1:33",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 5683,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "10308:11:33",
                                      "valueSize": 1
                                    }
                                  ],
                                  "id": 5734,
                                  "nodeType": "InlineAssembly",
                                  "src": "10270:79:33"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5737,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 5735,
                                      "name": "numerator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5724,
                                      "src": "10452:9:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 5736,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "10465:1:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "10452:14:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 5746,
                                  "nodeType": "IfStatement",
                                  "src": "10448:272:33",
                                  "trueBody": {
                                    "id": 5745,
                                    "nodeType": "Block",
                                    "src": "10468:252:33",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 5742,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "expression": {
                                              "id": 5738,
                                              "name": "advancedOrder",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5703,
                                              "src": "10571:13:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                                "typeString": "struct AdvancedOrder memory"
                                              }
                                            },
                                            "id": 5740,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "numerator",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4024,
                                            "src": "10571:23:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint120",
                                              "typeString": "uint120"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "hexValue": "30",
                                            "id": 5741,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "10597:1:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "10571:27:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint120",
                                            "typeString": "uint120"
                                          }
                                        },
                                        "id": 5743,
                                        "nodeType": "ExpressionStatement",
                                        "src": "10571:27:33"
                                      },
                                      {
                                        "id": 5744,
                                        "nodeType": "Continue",
                                        "src": "10693:8:33"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 5751,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "id": 5747,
                                        "name": "orderHashes",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5683,
                                        "src": "10802:11:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                          "typeString": "bytes32[] memory"
                                        }
                                      },
                                      "id": 5749,
                                      "indexExpression": {
                                        "id": 5748,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5692,
                                        "src": "10814:1:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "10802:14:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "id": 5750,
                                      "name": "orderHash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5722,
                                      "src": "10819:9:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "src": "10802:26:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "id": 5752,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10802:26:33"
                                },
                                {
                                  "expression": {
                                    "id": 5754,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "--",
                                    "prefix": false,
                                    "src": "10908:18:33",
                                    "subExpression": {
                                      "id": 5753,
                                      "name": "maximumFulfilled",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5668,
                                      "src": "10908:16:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5755,
                                  "nodeType": "ExpressionStatement",
                                  "src": "10908:18:33"
                                },
                                {
                                  "assignments": [
                                    5757
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 5757,
                                      "mutability": "mutable",
                                      "name": "startTime",
                                      "nameLocation": "11021:9:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 5955,
                                      "src": "11013:17:33",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 5756,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11013:7:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 5761,
                                  "initialValue": {
                                    "expression": {
                                      "expression": {
                                        "id": 5758,
                                        "name": "advancedOrder",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5703,
                                        "src": "11033:13:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory"
                                        }
                                      },
                                      "id": 5759,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "parameters",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4022,
                                      "src": "11033:24:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                        "typeString": "struct OrderParameters memory"
                                      }
                                    },
                                    "id": 5760,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "startTime",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4002,
                                    "src": "11033:34:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "11013:54:33"
                                },
                                {
                                  "assignments": [
                                    5763
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 5763,
                                      "mutability": "mutable",
                                      "name": "duration",
                                      "nameLocation": "11174:8:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 5955,
                                      "src": "11166:16:33",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 5762,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11166:7:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 5769,
                                  "initialValue": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5768,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "expression": {
                                          "id": 5764,
                                          "name": "advancedOrder",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5703,
                                          "src": "11185:13:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                            "typeString": "struct AdvancedOrder memory"
                                          }
                                        },
                                        "id": 5765,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "parameters",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4022,
                                        "src": "11185:24:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                          "typeString": "struct OrderParameters memory"
                                        }
                                      },
                                      "id": 5766,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "endTime",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4004,
                                      "src": "11185:32:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "id": 5767,
                                      "name": "startTime",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5757,
                                      "src": "11220:9:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11185:44:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "11166:63:33"
                                },
                                {
                                  "assignments": [
                                    5771
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 5771,
                                      "mutability": "mutable",
                                      "name": "elapsed",
                                      "nameLocation": "11337:7:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 5955,
                                      "src": "11329:15:33",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 5770,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11329:7:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 5776,
                                  "initialValue": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5775,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 5772,
                                        "name": "block",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -4,
                                        "src": "11347:5:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_block",
                                          "typeString": "block"
                                        }
                                      },
                                      "id": 5773,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "timestamp",
                                      "nodeType": "MemberAccess",
                                      "src": "11347:15:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "id": 5774,
                                      "name": "startTime",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5757,
                                      "src": "11365:9:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11347:27:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "11329:45:33"
                                },
                                {
                                  "assignments": [
                                    5778
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 5778,
                                      "mutability": "mutable",
                                      "name": "remaining",
                                      "nameLocation": "11482:9:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 5955,
                                      "src": "11474:17:33",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 5777,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11474:7:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 5782,
                                  "initialValue": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5781,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 5779,
                                      "name": "duration",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5763,
                                      "src": "11494:8:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "id": 5780,
                                      "name": "elapsed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5771,
                                      "src": "11505:7:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11494:18:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "11474:38:33"
                                },
                                {
                                  "assignments": [
                                    5787
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 5787,
                                      "mutability": "mutable",
                                      "name": "offer",
                                      "nameLocation": "11626:5:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 5955,
                                      "src": "11607:24:33",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct OfferItem[]"
                                      },
                                      "typeName": {
                                        "baseType": {
                                          "id": 5785,
                                          "nodeType": "UserDefinedTypeName",
                                          "pathNode": {
                                            "id": 5784,
                                            "name": "OfferItem",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 3904,
                                            "src": "11607:9:33"
                                          },
                                          "referencedDeclaration": 3904,
                                          "src": "11607:9:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_OfferItem_$3904_storage_ptr",
                                            "typeString": "struct OfferItem"
                                          }
                                        },
                                        "id": 5786,
                                        "nodeType": "ArrayTypeName",
                                        "src": "11607:11:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_storage_$dyn_storage_ptr",
                                          "typeString": "struct OfferItem[]"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 5791,
                                  "initialValue": {
                                    "expression": {
                                      "expression": {
                                        "id": 5788,
                                        "name": "advancedOrder",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5703,
                                        "src": "11634:13:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory"
                                        }
                                      },
                                      "id": 5789,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "parameters",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4022,
                                      "src": "11634:24:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                        "typeString": "struct OrderParameters memory"
                                      }
                                    },
                                    "id": 5790,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "offer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3993,
                                    "src": "11634:30:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct OfferItem memory[] memory"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "11607:57:33"
                                },
                                {
                                  "body": {
                                    "id": 5865,
                                    "nodeType": "Block",
                                    "src": "11788:1572:33",
                                    "statements": [
                                      {
                                        "assignments": [
                                          5805
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 5805,
                                            "mutability": "mutable",
                                            "name": "offerItem",
                                            "nameLocation": "11875:9:33",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 5865,
                                            "src": "11858:26:33",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                              "typeString": "struct OfferItem"
                                            },
                                            "typeName": {
                                              "id": 5804,
                                              "nodeType": "UserDefinedTypeName",
                                              "pathNode": {
                                                "id": 5803,
                                                "name": "OfferItem",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3904,
                                                "src": "11858:9:33"
                                              },
                                              "referencedDeclaration": 3904,
                                              "src": "11858:9:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OfferItem_$3904_storage_ptr",
                                                "typeString": "struct OfferItem"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 5809,
                                        "initialValue": {
                                          "baseExpression": {
                                            "id": 5806,
                                            "name": "offer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5787,
                                            "src": "11887:5:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                                              "typeString": "struct OfferItem memory[] memory"
                                            }
                                          },
                                          "id": 5808,
                                          "indexExpression": {
                                            "id": 5807,
                                            "name": "j",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5793,
                                            "src": "11893:1:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "11887:8:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                            "typeString": "struct OfferItem memory"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "11858:37:33"
                                      },
                                      {
                                        "assignments": [
                                          5811
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 5811,
                                            "mutability": "mutable",
                                            "name": "endAmount",
                                            "nameLocation": "12001:9:33",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 5865,
                                            "src": "11993:17:33",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "typeName": {
                                              "id": 5810,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "11993:7:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 5818,
                                        "initialValue": {
                                          "arguments": [
                                            {
                                              "id": 5813,
                                              "name": "numerator",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5724,
                                              "src": "12051:9:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "id": 5814,
                                              "name": "denominator",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5726,
                                              "src": "12086:11:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 5815,
                                                "name": "offerItem",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5805,
                                                "src": "12123:9:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                                  "typeString": "struct OfferItem memory"
                                                }
                                              },
                                              "id": 5816,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "endAmount",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3903,
                                              "src": "12123:19:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 5812,
                                            "name": "_getFraction",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2434,
                                            "src": "12013:12:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 5817,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "12013:151:33",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "11993:171:33"
                                      },
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 5823,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 5819,
                                              "name": "offerItem",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5805,
                                              "src": "12270:9:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                                "typeString": "struct OfferItem memory"
                                              }
                                            },
                                            "id": 5820,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "startAmount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3901,
                                            "src": "12270:21:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "expression": {
                                              "id": 5821,
                                              "name": "offerItem",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5805,
                                              "src": "12295:9:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                                "typeString": "struct OfferItem memory"
                                              }
                                            },
                                            "id": 5822,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "endAmount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3903,
                                            "src": "12295:19:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "12270:44:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": {
                                          "id": 5842,
                                          "nodeType": "Block",
                                          "src": "12482:323:33",
                                          "statements": [
                                            {
                                              "expression": {
                                                "id": 5840,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                  "expression": {
                                                    "id": 5831,
                                                    "name": "offerItem",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5805,
                                                    "src": "12589:9:33",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                                      "typeString": "struct OfferItem memory"
                                                    }
                                                  },
                                                  "id": 5833,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": true,
                                                  "memberName": "startAmount",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 3901,
                                                  "src": "12589:21:33",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                  "arguments": [
                                                    {
                                                      "id": 5835,
                                                      "name": "numerator",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 5724,
                                                      "src": "12655:9:33",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    {
                                                      "id": 5836,
                                                      "name": "denominator",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 5726,
                                                      "src": "12694:11:33",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    {
                                                      "expression": {
                                                        "id": 5837,
                                                        "name": "offerItem",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5805,
                                                        "src": "12735:9:33",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                                          "typeString": "struct OfferItem memory"
                                                        }
                                                      },
                                                      "id": 5838,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "startAmount",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 3901,
                                                      "src": "12735:21:33",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "id": 5834,
                                                    "name": "_getFraction",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2434,
                                                    "src": "12613:12:33",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                      "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                                    }
                                                  },
                                                  "id": 5839,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "12613:169:33",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "12589:193:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 5841,
                                              "nodeType": "ExpressionStatement",
                                              "src": "12589:193:33"
                                            }
                                          ]
                                        },
                                        "id": 5843,
                                        "nodeType": "IfStatement",
                                        "src": "12266:539:33",
                                        "trueBody": {
                                          "id": 5830,
                                          "nodeType": "Block",
                                          "src": "12316:160:33",
                                          "statements": [
                                            {
                                              "expression": {
                                                "id": 5828,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                  "expression": {
                                                    "id": 5824,
                                                    "name": "offerItem",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5805,
                                                    "src": "12420:9:33",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                                      "typeString": "struct OfferItem memory"
                                                    }
                                                  },
                                                  "id": 5826,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": true,
                                                  "memberName": "startAmount",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 3901,
                                                  "src": "12420:21:33",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                  "id": 5827,
                                                  "name": "endAmount",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5811,
                                                  "src": "12444:9:33",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "12420:33:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 5829,
                                              "nodeType": "ExpressionStatement",
                                              "src": "12420:33:33"
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 5848,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "expression": {
                                              "id": 5844,
                                              "name": "offerItem",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5805,
                                              "src": "12907:9:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                                "typeString": "struct OfferItem memory"
                                              }
                                            },
                                            "id": 5846,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "endAmount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3903,
                                            "src": "12907:19:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "id": 5847,
                                            "name": "endAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5811,
                                            "src": "12929:9:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "12907:31:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 5849,
                                        "nodeType": "ExpressionStatement",
                                        "src": "12907:31:33"
                                      },
                                      {
                                        "expression": {
                                          "id": 5863,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "expression": {
                                              "id": 5850,
                                              "name": "offerItem",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5805,
                                              "src": "13036:9:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                                "typeString": "struct OfferItem memory"
                                              }
                                            },
                                            "id": 5852,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "startAmount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3901,
                                            "src": "13036:21:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "arguments": [
                                              {
                                                "expression": {
                                                  "id": 5854,
                                                  "name": "offerItem",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5805,
                                                  "src": "13106:9:33",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                                    "typeString": "struct OfferItem memory"
                                                  }
                                                },
                                                "id": 5855,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "startAmount",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 3901,
                                                "src": "13106:21:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "expression": {
                                                  "id": 5856,
                                                  "name": "offerItem",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5805,
                                                  "src": "13153:9:33",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                                    "typeString": "struct OfferItem memory"
                                                  }
                                                },
                                                "id": 5857,
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "endAmount",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 3903,
                                                "src": "13153:19:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 5858,
                                                "name": "elapsed",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5771,
                                                "src": "13198:7:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 5859,
                                                "name": "remaining",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5778,
                                                "src": "13231:9:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "id": 5860,
                                                "name": "duration",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5763,
                                                "src": "13266:8:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              {
                                                "hexValue": "66616c7365",
                                                "id": 5861,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "bool",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "13300:5:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                },
                                                "value": "false"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              ],
                                              "id": 5853,
                                              "name": "_locateCurrentAmount",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 2396,
                                              "src": "13060:20:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                                "typeString": "function (uint256,uint256,uint256,uint256,uint256,bool) pure returns (uint256)"
                                              }
                                            },
                                            "id": 5862,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "13060:281:33",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "13036:305:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 5864,
                                        "nodeType": "ExpressionStatement",
                                        "src": "13036:305:33"
                                      }
                                    ]
                                  },
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5799,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 5796,
                                      "name": "j",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5793,
                                      "src": "11765:1:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 5797,
                                        "name": "offer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5787,
                                        "src": "11769:5:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct OfferItem memory[] memory"
                                        }
                                      },
                                      "id": 5798,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "11769:12:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "11765:16:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 5866,
                                  "initializationExpression": {
                                    "assignments": [
                                      5793
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 5793,
                                        "mutability": "mutable",
                                        "name": "j",
                                        "nameLocation": "11758:1:33",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 5866,
                                        "src": "11750:9:33",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 5792,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "11750:7:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 5795,
                                    "initialValue": {
                                      "hexValue": "30",
                                      "id": 5794,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11762:1:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "11750:13:33"
                                  },
                                  "loopExpression": {
                                    "expression": {
                                      "id": 5801,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": true,
                                      "src": "11783:3:33",
                                      "subExpression": {
                                        "id": 5800,
                                        "name": "j",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5793,
                                        "src": "11785:1:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 5802,
                                    "nodeType": "ExpressionStatement",
                                    "src": "11783:3:33"
                                  },
                                  "nodeType": "ForStatement",
                                  "src": "11745:1615:33"
                                },
                                {
                                  "assignments": [
                                    5871
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 5871,
                                      "mutability": "mutable",
                                      "name": "consideration",
                                      "nameLocation": "13485:13:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 5955,
                                      "src": "13458:40:33",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct ConsiderationItem[]"
                                      },
                                      "typeName": {
                                        "baseType": {
                                          "id": 5869,
                                          "nodeType": "UserDefinedTypeName",
                                          "pathNode": {
                                            "id": 5868,
                                            "name": "ConsiderationItem",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 3918,
                                            "src": "13458:17:33"
                                          },
                                          "referencedDeclaration": 3918,
                                          "src": "13458:17:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ConsiderationItem_$3918_storage_ptr",
                                            "typeString": "struct ConsiderationItem"
                                          }
                                        },
                                        "id": 5870,
                                        "nodeType": "ArrayTypeName",
                                        "src": "13458:19:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_storage_$dyn_storage_ptr",
                                          "typeString": "struct ConsiderationItem[]"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 5876,
                                  "initialValue": {
                                    "components": [
                                      {
                                        "expression": {
                                          "expression": {
                                            "id": 5872,
                                            "name": "advancedOrder",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5703,
                                            "src": "13523:13:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                              "typeString": "struct AdvancedOrder memory"
                                            }
                                          },
                                          "id": 5873,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "parameters",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4022,
                                          "src": "13523:24:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                            "typeString": "struct OrderParameters memory"
                                          }
                                        },
                                        "id": 5874,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "consideration",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3997,
                                        "src": "13523:38:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct ConsiderationItem memory[] memory"
                                        }
                                      }
                                    ],
                                    "id": 5875,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "13501:78:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct ConsiderationItem memory[] memory"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "13458:121:33"
                                },
                                {
                                  "body": {
                                    "id": 5953,
                                    "nodeType": "Block",
                                    "src": "13719:2738:33",
                                    "statements": [
                                      {
                                        "assignments": [
                                          5890
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 5890,
                                            "mutability": "mutable",
                                            "name": "considerationItem",
                                            "nameLocation": "13822:17:33",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 5953,
                                            "src": "13797:42:33",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                              "typeString": "struct ConsiderationItem"
                                            },
                                            "typeName": {
                                              "id": 5889,
                                              "nodeType": "UserDefinedTypeName",
                                              "pathNode": {
                                                "id": 5888,
                                                "name": "ConsiderationItem",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3918,
                                                "src": "13797:17:33"
                                              },
                                              "referencedDeclaration": 3918,
                                              "src": "13797:17:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ConsiderationItem_$3918_storage_ptr",
                                                "typeString": "struct ConsiderationItem"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 5895,
                                        "initialValue": {
                                          "components": [
                                            {
                                              "baseExpression": {
                                                "id": 5891,
                                                "name": "consideration",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5871,
                                                "src": "13868:13:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                                  "typeString": "struct ConsiderationItem memory[] memory"
                                                }
                                              },
                                              "id": 5893,
                                              "indexExpression": {
                                                "id": 5892,
                                                "name": "j",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5878,
                                                "src": "13882:1:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "13868:16:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                                "typeString": "struct ConsiderationItem memory"
                                              }
                                            }
                                          ],
                                          "id": 5894,
                                          "isConstant": false,
                                          "isInlineArray": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "TupleExpression",
                                          "src": "13842:64:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                            "typeString": "struct ConsiderationItem memory"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "13797:109:33"
                                      },
                                      {
                                        "assignments": [
                                          5897
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 5897,
                                            "mutability": "mutable",
                                            "name": "endAmount",
                                            "nameLocation": "14009:9:33",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 5953,
                                            "src": "14001:17:33",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "typeName": {
                                              "id": 5896,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "14001:7:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 5904,
                                        "initialValue": {
                                          "arguments": [
                                            {
                                              "id": 5899,
                                              "name": "numerator",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5724,
                                              "src": "14059:9:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "id": 5900,
                                              "name": "denominator",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5726,
                                              "src": "14094:11:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 5901,
                                                "name": "considerationItem",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5890,
                                                "src": "14131:17:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                                  "typeString": "struct ConsiderationItem memory"
                                                }
                                              },
                                              "id": 5902,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "endAmount",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3915,
                                              "src": "14131:27:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 5898,
                                            "name": "_getFraction",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2434,
                                            "src": "14021:12:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                              "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 5903,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "14021:159:33",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "14001:179:33"
                                      },
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 5909,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "expression": {
                                              "id": 5905,
                                              "name": "considerationItem",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5890,
                                              "src": "14311:17:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                                "typeString": "struct ConsiderationItem memory"
                                              }
                                            },
                                            "id": 5906,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "startAmount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3913,
                                            "src": "14311:29:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "expression": {
                                              "id": 5907,
                                              "name": "considerationItem",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5890,
                                              "src": "14368:17:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                                "typeString": "struct ConsiderationItem memory"
                                              }
                                            },
                                            "id": 5908,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "endAmount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3915,
                                            "src": "14368:27:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "14311:84:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": {
                                          "id": 5928,
                                          "nodeType": "Block",
                                          "src": "14592:336:33",
                                          "statements": [
                                            {
                                              "expression": {
                                                "id": 5926,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                  "expression": {
                                                    "id": 5917,
                                                    "name": "considerationItem",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5890,
                                                    "src": "14696:17:33",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                                      "typeString": "struct ConsiderationItem memory"
                                                    }
                                                  },
                                                  "id": 5919,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": true,
                                                  "memberName": "startAmount",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 3913,
                                                  "src": "14696:29:33",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                  "arguments": [
                                                    {
                                                      "id": 5921,
                                                      "name": "numerator",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 5724,
                                                      "src": "14770:9:33",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    {
                                                      "id": 5922,
                                                      "name": "denominator",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 5726,
                                                      "src": "14809:11:33",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    {
                                                      "expression": {
                                                        "id": 5923,
                                                        "name": "considerationItem",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5890,
                                                        "src": "14850:17:33",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                                          "typeString": "struct ConsiderationItem memory"
                                                        }
                                                      },
                                                      "id": 5924,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "memberName": "startAmount",
                                                      "nodeType": "MemberAccess",
                                                      "referencedDeclaration": 3913,
                                                      "src": "14850:29:33",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      },
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "id": 5920,
                                                    "name": "_getFraction",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 2434,
                                                    "src": "14728:12:33",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                                      "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                                    }
                                                  },
                                                  "id": 5925,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "14728:177:33",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "14696:209:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 5927,
                                              "nodeType": "ExpressionStatement",
                                              "src": "14696:209:33"
                                            }
                                          ]
                                        },
                                        "id": 5929,
                                        "nodeType": "IfStatement",
                                        "src": "14282:646:33",
                                        "trueBody": {
                                          "id": 5916,
                                          "nodeType": "Block",
                                          "src": "14418:168:33",
                                          "statements": [
                                            {
                                              "expression": {
                                                "id": 5914,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftHandSide": {
                                                  "expression": {
                                                    "id": 5910,
                                                    "name": "considerationItem",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5890,
                                                    "src": "14522:17:33",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                                      "typeString": "struct ConsiderationItem memory"
                                                    }
                                                  },
                                                  "id": 5912,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": true,
                                                  "memberName": "startAmount",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 3913,
                                                  "src": "14522:29:33",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "Assignment",
                                                "operator": "=",
                                                "rightHandSide": {
                                                  "id": 5913,
                                                  "name": "endAmount",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5897,
                                                  "src": "14554:9:33",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "14522:41:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "id": 5915,
                                              "nodeType": "ExpressionStatement",
                                              "src": "14522:41:33"
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 5934,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "expression": {
                                              "id": 5930,
                                              "name": "considerationItem",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5890,
                                              "src": "15030:17:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                                "typeString": "struct ConsiderationItem memory"
                                              }
                                            },
                                            "id": 5932,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "endAmount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3915,
                                            "src": "15030:27:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "id": 5933,
                                            "name": "endAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5897,
                                            "src": "15060:9:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "15030:39:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 5935,
                                        "nodeType": "ExpressionStatement",
                                        "src": "15030:39:33"
                                      },
                                      {
                                        "expression": {
                                          "id": 5950,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "expression": {
                                              "id": 5936,
                                              "name": "considerationItem",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5890,
                                              "src": "15173:17:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                                "typeString": "struct ConsiderationItem memory"
                                              }
                                            },
                                            "id": 5938,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "startAmount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3913,
                                            "src": "15173:29:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "components": [
                                              {
                                                "arguments": [
                                                  {
                                                    "expression": {
                                                      "id": 5940,
                                                      "name": "considerationItem",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 5890,
                                                      "src": "15281:17:33",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                                        "typeString": "struct ConsiderationItem memory"
                                                      }
                                                    },
                                                    "id": 5941,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "startAmount",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 3913,
                                                    "src": "15281:29:33",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "expression": {
                                                      "id": 5942,
                                                      "name": "considerationItem",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 5890,
                                                      "src": "15340:17:33",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                                        "typeString": "struct ConsiderationItem memory"
                                                      }
                                                    },
                                                    "id": 5943,
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "endAmount",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 3915,
                                                    "src": "15340:27:33",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "id": 5944,
                                                    "name": "elapsed",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5771,
                                                    "src": "15397:7:33",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "id": 5945,
                                                    "name": "remaining",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5778,
                                                    "src": "15434:9:33",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "id": 5946,
                                                    "name": "duration",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 5763,
                                                    "src": "15473:8:33",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "hexValue": "74727565",
                                                    "id": 5947,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "bool",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "15511:4:33",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    },
                                                    "value": "true"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    }
                                                  ],
                                                  "id": 5939,
                                                  "name": "_locateCurrentAmount",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2396,
                                                  "src": "15231:20:33",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256,uint256,uint256,uint256,bool) pure returns (uint256)"
                                                  }
                                                },
                                                "id": 5948,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "15231:322:33",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 5949,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "15205:370:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "15173:402:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 5951,
                                        "nodeType": "ExpressionStatement",
                                        "src": "15173:402:33"
                                      },
                                      {
                                        "AST": {
                                          "nodeType": "YulBlock",
                                          "src": "15688:751:33",
                                          "statements": [
                                            {
                                              "expression": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "considerationItem",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "16001:17:33"
                                                      },
                                                      {
                                                        "name": "ReceivedItem_recipient_offset",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "16052:29:33"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "add",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "15964:3:33"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "15964:164:33"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "arguments": [
                                                          {
                                                            "name": "considerationItem",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "16238:17:33"
                                                          },
                                                          {
                                                            "name": "ConsiderationItem_recipient_offset",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "16293:34:33"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "16197:3:33"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "16197:164:33"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "16158:5:33"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "16158:233:33"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mstore",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "15928:6:33"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "15928:489:33"
                                              },
                                              "nodeType": "YulExpressionStatement",
                                              "src": "15928:489:33"
                                            }
                                          ]
                                        },
                                        "evmVersion": "london",
                                        "externalReferences": [
                                          {
                                            "declaration": 3428,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "16293:34:33",
                                            "valueSize": 1
                                          },
                                          {
                                            "declaration": 3422,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "16052:29:33",
                                            "valueSize": 1
                                          },
                                          {
                                            "declaration": 5890,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "16001:17:33",
                                            "valueSize": 1
                                          },
                                          {
                                            "declaration": 5890,
                                            "isOffset": false,
                                            "isSlot": false,
                                            "src": "16238:17:33",
                                            "valueSize": 1
                                          }
                                        ],
                                        "id": 5952,
                                        "nodeType": "InlineAssembly",
                                        "src": "15679:760:33"
                                      }
                                    ]
                                  },
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5884,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 5881,
                                      "name": "j",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5878,
                                      "src": "13688:1:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 5882,
                                        "name": "consideration",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5871,
                                        "src": "13692:13:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct ConsiderationItem memory[] memory"
                                        }
                                      },
                                      "id": 5883,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "13692:20:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "13688:24:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 5954,
                                  "initializationExpression": {
                                    "assignments": [
                                      5878
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 5878,
                                        "mutability": "mutable",
                                        "name": "j",
                                        "nameLocation": "13681:1:33",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 5954,
                                        "src": "13673:9:33",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 5877,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "13673:7:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 5880,
                                    "initialValue": {
                                      "hexValue": "30",
                                      "id": 5879,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "13685:1:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "13673:13:33"
                                  },
                                  "loopExpression": {
                                    "expression": {
                                      "id": 5886,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": true,
                                      "src": "13714:3:33",
                                      "subExpression": {
                                        "id": 5885,
                                        "name": "j",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5878,
                                        "src": "13716:1:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 5887,
                                    "nodeType": "ExpressionStatement",
                                    "src": "13714:3:33"
                                  },
                                  "nodeType": "ForStatement",
                                  "src": "13668:2789:33"
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5697,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5695,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5692,
                                "src": "9046:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 5696,
                                "name": "totalOrders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5675,
                                "src": "9050:11:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9046:15:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 5956,
                            "initializationExpression": {
                              "assignments": [
                                5692
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5692,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "9039:1:33",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 5956,
                                  "src": "9031:9:33",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5691,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9031:7:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5694,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 5693,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9043:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9031:13:33"
                            },
                            "loopExpression": {
                              "expression": {
                                "id": 5699,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "9063:3:33",
                                "subExpression": {
                                  "id": 5698,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5692,
                                  "src": "9065:1:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5700,
                              "nodeType": "ExpressionStatement",
                              "src": "9063:3:33"
                            },
                            "nodeType": "ForStatement",
                            "src": "9026:7445:33"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 5959,
                              "name": "advancedOrders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5660,
                              "src": "16580:14:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              }
                            },
                            {
                              "id": 5960,
                              "name": "criteriaResolvers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5664,
                              "src": "16596:17:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct CriteriaResolver memory[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct CriteriaResolver memory[] memory"
                              }
                            ],
                            "id": 5958,
                            "name": "_applyCriteriaResolvers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4415,
                            "src": "16556:23:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (struct AdvancedOrder memory[] memory,struct CriteriaResolver memory[] memory) pure"
                            }
                          },
                          "id": 5961,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16556:58:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 5962,
                        "nodeType": "ExpressionStatement",
                        "src": "16556:58:33"
                      },
                      {
                        "assignments": [
                          5964
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5964,
                            "mutability": "mutable",
                            "name": "fulfiller",
                            "nameLocation": "16713:9:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 6015,
                            "src": "16705:17:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 5963,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "16705:7:33",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 5965,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16705:17:33"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "16823:149:33",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16911:51:33",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "revertOnInvalid",
                                        "nodeType": "YulIdentifier",
                                        "src": "16935:15:33"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "iszero",
                                      "nodeType": "YulIdentifier",
                                      "src": "16928:6:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16928:23:33"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "caller",
                                      "nodeType": "YulIdentifier",
                                      "src": "16953:6:33"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16953:8:33"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "16924:3:33"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16924:38:33"
                              },
                              "variableNames": [
                                {
                                  "name": "fulfiller",
                                  "nodeType": "YulIdentifier",
                                  "src": "16911:9:33"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 5964,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16911:9:33",
                            "valueSize": 1
                          },
                          {
                            "declaration": 5666,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16935:15:33",
                            "valueSize": 1
                          }
                        ],
                        "id": 5966,
                        "nodeType": "InlineAssembly",
                        "src": "16814:158:33"
                      },
                      {
                        "id": 6014,
                        "nodeType": "UncheckedBlock",
                        "src": "17140:852:33",
                        "statements": [
                          {
                            "body": {
                              "id": 6012,
                              "nodeType": "Block",
                              "src": "17246:736:33",
                              "statements": [
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    "id": 5984,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "baseExpression": {
                                        "id": 5977,
                                        "name": "orderHashes",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5683,
                                        "src": "17337:11:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                          "typeString": "bytes32[] memory"
                                        }
                                      },
                                      "id": 5979,
                                      "indexExpression": {
                                        "id": 5978,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5968,
                                        "src": "17349:1:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "17337:14:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "30",
                                          "id": 5982,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17363:1:33",
                                          "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": 5981,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "17355:7:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes32_$",
                                          "typeString": "type(bytes32)"
                                        },
                                        "typeName": {
                                          "id": 5980,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "17355:7:33",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 5983,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17355:10:33",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "src": "17337:28:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 5987,
                                  "nodeType": "IfStatement",
                                  "src": "17333:83:33",
                                  "trueBody": {
                                    "id": 5986,
                                    "nodeType": "Block",
                                    "src": "17367:49:33",
                                    "statements": [
                                      {
                                        "id": 5985,
                                        "nodeType": "Continue",
                                        "src": "17389:8:33"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "assignments": [
                                    5990
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 5990,
                                      "mutability": "mutable",
                                      "name": "orderParameters",
                                      "nameLocation": "17523:15:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6012,
                                      "src": "17500:38:33",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                        "typeString": "struct OrderParameters"
                                      },
                                      "typeName": {
                                        "id": 5989,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 5988,
                                          "name": "OrderParameters",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 4013,
                                          "src": "17500:15:33"
                                        },
                                        "referencedDeclaration": 4013,
                                        "src": "17500:15:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderParameters_$4013_storage_ptr",
                                          "typeString": "struct OrderParameters"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 5996,
                                  "initialValue": {
                                    "components": [
                                      {
                                        "expression": {
                                          "baseExpression": {
                                            "id": 5991,
                                            "name": "advancedOrders",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5660,
                                            "src": "17563:14:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                              "typeString": "struct AdvancedOrder memory[] memory"
                                            }
                                          },
                                          "id": 5993,
                                          "indexExpression": {
                                            "id": 5992,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 5968,
                                            "src": "17578:1:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "17563:17:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                            "typeString": "struct AdvancedOrder memory"
                                          }
                                        },
                                        "id": 5994,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "parameters",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4022,
                                        "src": "17563:28:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                          "typeString": "struct OrderParameters memory"
                                        }
                                      }
                                    ],
                                    "id": 5995,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "17541:68:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                      "typeString": "struct OrderParameters memory"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "17500:109:33"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "baseExpression": {
                                          "id": 5998,
                                          "name": "orderHashes",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5683,
                                          "src": "17723:11:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                            "typeString": "bytes32[] memory"
                                          }
                                        },
                                        "id": 6000,
                                        "indexExpression": {
                                          "id": 5999,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5968,
                                          "src": "17735:1:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "17723:14:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 6001,
                                          "name": "orderParameters",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5990,
                                          "src": "17759:15:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                            "typeString": "struct OrderParameters memory"
                                          }
                                        },
                                        "id": 6002,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "offerer",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3987,
                                        "src": "17759:23:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 6003,
                                          "name": "orderParameters",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5990,
                                          "src": "17804:15:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                            "typeString": "struct OrderParameters memory"
                                          }
                                        },
                                        "id": 6004,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "zone",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3989,
                                        "src": "17804:20:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 6005,
                                        "name": "fulfiller",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5964,
                                        "src": "17846:9:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 6006,
                                          "name": "orderParameters",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5990,
                                          "src": "17877:15:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                            "typeString": "struct OrderParameters memory"
                                          }
                                        },
                                        "id": 6007,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "offer",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3993,
                                        "src": "17877:21:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct OfferItem memory[] memory"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 6008,
                                          "name": "orderParameters",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5990,
                                          "src": "17920:15:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                            "typeString": "struct OrderParameters memory"
                                          }
                                        },
                                        "id": 6009,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "consideration",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3997,
                                        "src": "17920:29:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct ConsiderationItem memory[] memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct OfferItem memory[] memory"
                                        },
                                        {
                                          "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct ConsiderationItem memory[] memory"
                                        }
                                      ],
                                      "id": 5997,
                                      "name": "_emitOrderFulfilledEvent",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6987,
                                      "src": "17677:24:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr_$returns$__$",
                                        "typeString": "function (bytes32,address,address,address,struct OfferItem memory[] memory,struct ConsiderationItem memory[] memory)"
                                      }
                                    },
                                    "id": 6010,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17677:290:33",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6011,
                                  "nodeType": "ExpressionStatement",
                                  "src": "17677:290:33"
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5973,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 5971,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5968,
                                "src": "17224:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 5972,
                                "name": "totalOrders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5675,
                                "src": "17228:11:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "17224:15:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6013,
                            "initializationExpression": {
                              "assignments": [
                                5968
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 5968,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "17217:1:33",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6013,
                                  "src": "17209:9:33",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 5967,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "17209:7:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 5970,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 5969,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "17221:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "17209:13:33"
                            },
                            "loopExpression": {
                              "expression": {
                                "id": 5975,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "17241:3:33",
                                "subExpression": {
                                  "id": 5974,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5968,
                                  "src": "17243:1:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5976,
                              "nodeType": "ExpressionStatement",
                              "src": "17241:3:33"
                            },
                            "nodeType": "ForStatement",
                            "src": "17204:778:33"
                          }
                        ]
                      }
                    ]
                  },
                  "documentation": {
                    "id": 5656,
                    "nodeType": "StructuredDocumentation",
                    "src": "6847:1295:33",
                    "text": " @dev Internal function to validate a group of orders, update their\n      statuses, reduce amounts by their previously filled fractions, apply\n      criteria resolvers, and emit OrderFulfilled events.\n @param advancedOrders    The advanced orders to validate and reduce by\n                          their previously filled amounts.\n @param criteriaResolvers An array where each element contains a reference\n                          to a specific order as well as that order's\n                          offer or consideration, a token identifier, and\n                          a proof that the supplied token identifier is\n                          contained in the order's merkle root. Note that\n                          a root of zero indicates that any transferrable\n                          token identifier is valid and that no proof\n                          needs to be supplied.\n @param revertOnInvalid   A boolean indicating whether to revert on any\n                          order being invalid; setting this to false will\n                          instead cause the invalid order to be skipped.\n @param maximumFulfilled  The maximum number of orders to fulfill."
                  },
                  "id": 6016,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_validateOrdersAndPrepareToFulfill",
                  "nameLocation": "8156:34:33",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 5669,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 5660,
                        "mutability": "mutable",
                        "name": "advancedOrders",
                        "nameLocation": "8223:14:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6016,
                        "src": "8200:37:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct AdvancedOrder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5658,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5657,
                              "name": "AdvancedOrder",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4031,
                              "src": "8200:13:33"
                            },
                            "referencedDeclaration": 4031,
                            "src": "8200:13:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                              "typeString": "struct AdvancedOrder"
                            }
                          },
                          "id": 5659,
                          "nodeType": "ArrayTypeName",
                          "src": "8200:15:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                            "typeString": "struct AdvancedOrder[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5664,
                        "mutability": "mutable",
                        "name": "criteriaResolvers",
                        "nameLocation": "8273:17:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6016,
                        "src": "8247:43:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct CriteriaResolver[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 5662,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 5661,
                              "name": "CriteriaResolver",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4053,
                              "src": "8247:16:33"
                            },
                            "referencedDeclaration": 4053,
                            "src": "8247:16:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                              "typeString": "struct CriteriaResolver"
                            }
                          },
                          "id": 5663,
                          "nodeType": "ArrayTypeName",
                          "src": "8247:18:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_storage_$dyn_storage_ptr",
                            "typeString": "struct CriteriaResolver[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5666,
                        "mutability": "mutable",
                        "name": "revertOnInvalid",
                        "nameLocation": "8305:15:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6016,
                        "src": "8300:20:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 5665,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "8300:4:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5668,
                        "mutability": "mutable",
                        "name": "maximumFulfilled",
                        "nameLocation": "8338:16:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6016,
                        "src": "8330:24:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 5667,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8330:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "8190:170:33"
                  },
                  "returnParameters": {
                    "id": 5670,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "8370:0:33"
                  },
                  "scope": 6541,
                  "src": "8147:9851:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6206,
                    "nodeType": "Block",
                    "src": "21711:3794:33",
                    "statements": [
                      {
                        "assignments": [
                          6044
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6044,
                            "mutability": "mutable",
                            "name": "totalOfferFulfillments",
                            "nameLocation": "21808:22:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 6206,
                            "src": "21800:30:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6043,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21800:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6047,
                        "initialValue": {
                          "expression": {
                            "id": 6045,
                            "name": "offerFulfillments",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6026,
                            "src": "21833:17:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct FulfillmentComponent memory[] memory[] memory"
                            }
                          },
                          "id": 6046,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "21833:24:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21800:57:33"
                      },
                      {
                        "assignments": [
                          6049
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6049,
                            "mutability": "mutable",
                            "name": "totalConsiderationFulfillments",
                            "nameLocation": "21957:30:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 6206,
                            "src": "21949:38:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6048,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "21949:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6053,
                        "initialValue": {
                          "components": [
                            {
                              "expression": {
                                "id": 6050,
                                "name": "considerationFulfillments",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6031,
                                "src": "22004:25:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct FulfillmentComponent memory[] memory[] memory"
                                }
                              },
                              "id": 6051,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "22004:32:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 6052,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "21990:56:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "21949:97:33"
                      },
                      {
                        "expression": {
                          "id": 6063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6054,
                            "name": "executions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6041,
                            "src": "22136:10:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct Execution memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6061,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 6059,
                                  "name": "totalOfferFulfillments",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6044,
                                  "src": "22178:22:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "id": 6060,
                                  "name": "totalConsiderationFulfillments",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6049,
                                  "src": "22203:30:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "22178:55:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "22149:15:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (struct Execution memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 6056,
                                  "nodeType": "UserDefinedTypeName",
                                  "pathNode": {
                                    "id": 6055,
                                    "name": "Execution",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 4075,
                                    "src": "22153:9:33"
                                  },
                                  "referencedDeclaration": 4075,
                                  "src": "22153:9:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                                    "typeString": "struct Execution"
                                  }
                                },
                                "id": 6057,
                                "nodeType": "ArrayTypeName",
                                "src": "22153:11:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Execution_$4075_storage_$dyn_storage_ptr",
                                  "typeString": "struct Execution[]"
                                }
                              }
                            },
                            "id": 6062,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "22149:94:33",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct Execution memory[] memory"
                            }
                          },
                          "src": "22136:107:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct Execution memory[] memory"
                          }
                        },
                        "id": 6064,
                        "nodeType": "ExpressionStatement",
                        "src": "22136:107:33"
                      },
                      {
                        "id": 6185,
                        "nodeType": "UncheckedBlock",
                        "src": "22333:2805:33",
                        "statements": [
                          {
                            "assignments": [
                              6066
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6066,
                                "mutability": "mutable",
                                "name": "totalFilteredExecutions",
                                "nameLocation": "22417:23:33",
                                "nodeType": "VariableDeclaration",
                                "scope": 6185,
                                "src": "22409:31:33",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6065,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "22409:7:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6068,
                            "initialValue": {
                              "hexValue": "30",
                              "id": 6067,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "22443:1:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "22409:35:33"
                          },
                          {
                            "body": {
                              "id": 6121,
                              "nodeType": "Block",
                              "src": "22564:969:33",
                              "statements": [
                                {
                                  "assignments": [
                                    6083
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 6083,
                                      "mutability": "mutable",
                                      "name": "components",
                                      "nameLocation": "22687:10:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6121,
                                      "src": "22657:40:33",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct FulfillmentComponent[]"
                                      },
                                      "typeName": {
                                        "baseType": {
                                          "id": 6081,
                                          "nodeType": "UserDefinedTypeName",
                                          "pathNode": {
                                            "id": 6080,
                                            "name": "FulfillmentComponent",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 4067,
                                            "src": "22657:20:33"
                                          },
                                          "referencedDeclaration": 4067,
                                          "src": "22657:20:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                                            "typeString": "struct FulfillmentComponent"
                                          }
                                        },
                                        "id": 6082,
                                        "nodeType": "ArrayTypeName",
                                        "src": "22657:22:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                                          "typeString": "struct FulfillmentComponent[]"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "documentation": "Retrieve the offer fulfillment components in question.",
                                  "id": 6088,
                                  "initialValue": {
                                    "components": [
                                      {
                                        "baseExpression": {
                                          "id": 6084,
                                          "name": "offerFulfillments",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6026,
                                          "src": "22722:17:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct FulfillmentComponent memory[] memory[] memory"
                                          }
                                        },
                                        "id": 6086,
                                        "indexExpression": {
                                          "id": 6085,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6070,
                                          "src": "22740:1:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "22722:20:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct FulfillmentComponent memory[] memory"
                                        }
                                      }
                                    ],
                                    "id": 6087,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "22700:60:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct FulfillmentComponent memory[] memory"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "22657:103:33"
                                },
                                {
                                  "assignments": [
                                    6091
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 6091,
                                      "mutability": "mutable",
                                      "name": "execution",
                                      "nameLocation": "22875:9:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6121,
                                      "src": "22858:26:33",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                        "typeString": "struct Execution"
                                      },
                                      "typeName": {
                                        "id": 6090,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 6089,
                                          "name": "Execution",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 4075,
                                          "src": "22858:9:33"
                                        },
                                        "referencedDeclaration": 4075,
                                        "src": "22858:9:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                                          "typeString": "struct Execution"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 6099,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "id": 6093,
                                        "name": "advancedOrders",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6021,
                                        "src": "22928:14:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory[] memory"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 6094,
                                          "name": "Side",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3857,
                                          "src": "22964:4:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_Side_$3857_$",
                                            "typeString": "type(enum Side)"
                                          }
                                        },
                                        "id": 6095,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "OFFER",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3855,
                                        "src": "22964:10:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_Side_$3857",
                                          "typeString": "enum Side"
                                        }
                                      },
                                      {
                                        "id": 6096,
                                        "name": "components",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6083,
                                        "src": "22996:10:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct FulfillmentComponent memory[] memory"
                                        }
                                      },
                                      {
                                        "id": 6097,
                                        "name": "fulfillerConduitKey",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6033,
                                        "src": "23028:19:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory[] memory"
                                        },
                                        {
                                          "typeIdentifier": "t_enum$_Side_$3857",
                                          "typeString": "enum Side"
                                        },
                                        {
                                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct FulfillmentComponent memory[] memory"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 6092,
                                      "name": "_aggregateAvailable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5290,
                                      "src": "22887:19:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_enum$_Side_$3857_$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$_t_bytes32_$returns$_t_struct$_Execution_$4075_memory_ptr_$",
                                        "typeString": "function (struct AdvancedOrder memory[] memory,enum Side,struct FulfillmentComponent memory[] memory,bytes32) view returns (struct Execution memory)"
                                      }
                                    },
                                    "id": 6098,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "22887:178:33",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                      "typeString": "struct Execution memory"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "22858:207:33"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 6105,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "expression": {
                                          "id": 6100,
                                          "name": "execution",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6091,
                                          "src": "23165:9:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                            "typeString": "struct Execution memory"
                                          }
                                        },
                                        "id": 6101,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "item",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4070,
                                        "src": "23165:14:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                          "typeString": "struct ReceivedItem memory"
                                        }
                                      },
                                      "id": 6102,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "recipient",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3939,
                                      "src": "23165:24:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 6103,
                                        "name": "execution",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6091,
                                        "src": "23193:9:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                          "typeString": "struct Execution memory"
                                        }
                                      },
                                      "id": 6104,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "offerer",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4072,
                                      "src": "23193:17:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "23165:45:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 6119,
                                    "nodeType": "Block",
                                    "src": "23347:172:33",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 6117,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "baseExpression": {
                                              "id": 6111,
                                              "name": "executions",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6041,
                                              "src": "23449:10:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct Execution memory[] memory"
                                              }
                                            },
                                            "id": 6115,
                                            "indexExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6114,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6112,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6070,
                                                "src": "23460:1:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 6113,
                                                "name": "totalFilteredExecutions",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6066,
                                                "src": "23464:23:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "23460:27:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "23449:39:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                              "typeString": "struct Execution memory"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "id": 6116,
                                            "name": "execution",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6091,
                                            "src": "23491:9:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                              "typeString": "struct Execution memory"
                                            }
                                          },
                                          "src": "23449:51:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                            "typeString": "struct Execution memory"
                                          }
                                        },
                                        "id": 6118,
                                        "nodeType": "ExpressionStatement",
                                        "src": "23449:51:33"
                                      }
                                    ]
                                  },
                                  "id": 6120,
                                  "nodeType": "IfStatement",
                                  "src": "23161:358:33",
                                  "trueBody": {
                                    "id": 6110,
                                    "nodeType": "Block",
                                    "src": "23212:129:33",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 6108,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 6106,
                                            "name": "totalFilteredExecutions",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6066,
                                            "src": "23294:23:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "hexValue": "31",
                                            "id": 6107,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "23321:1:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "23294:28:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 6109,
                                        "nodeType": "ExpressionStatement",
                                        "src": "23294:28:33"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6075,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6073,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6070,
                                "src": "22531:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 6074,
                                "name": "totalOfferFulfillments",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6044,
                                "src": "22535:22:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "22531:26:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6122,
                            "initializationExpression": {
                              "assignments": [
                                6070
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6070,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "22524:1:33",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6122,
                                  "src": "22516:9:33",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6069,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "22516:7:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6072,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 6071,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "22528:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "22516:13:33"
                            },
                            "loopExpression": {
                              "expression": {
                                "id": 6077,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "22559:3:33",
                                "subExpression": {
                                  "id": 6076,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6070,
                                  "src": "22561:1:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6078,
                              "nodeType": "ExpressionStatement",
                              "src": "22559:3:33"
                            },
                            "nodeType": "ForStatement",
                            "src": "22511:1022:33"
                          },
                          {
                            "body": {
                              "id": 6177,
                              "nodeType": "Block",
                              "src": "23668:1060:33",
                              "statements": [
                                {
                                  "assignments": [
                                    6137
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 6137,
                                      "mutability": "mutable",
                                      "name": "components",
                                      "nameLocation": "23795:10:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6177,
                                      "src": "23765:40:33",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct FulfillmentComponent[]"
                                      },
                                      "typeName": {
                                        "baseType": {
                                          "id": 6135,
                                          "nodeType": "UserDefinedTypeName",
                                          "pathNode": {
                                            "id": 6134,
                                            "name": "FulfillmentComponent",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 4067,
                                            "src": "23765:20:33"
                                          },
                                          "referencedDeclaration": 4067,
                                          "src": "23765:20:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                                            "typeString": "struct FulfillmentComponent"
                                          }
                                        },
                                        "id": 6136,
                                        "nodeType": "ArrayTypeName",
                                        "src": "23765:22:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                                          "typeString": "struct FulfillmentComponent[]"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "documentation": "Retrieve consideration fulfillment components in question.",
                                  "id": 6142,
                                  "initialValue": {
                                    "components": [
                                      {
                                        "baseExpression": {
                                          "id": 6138,
                                          "name": "considerationFulfillments",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6031,
                                          "src": "23830:25:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct FulfillmentComponent memory[] memory[] memory"
                                          }
                                        },
                                        "id": 6140,
                                        "indexExpression": {
                                          "id": 6139,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6124,
                                          "src": "23856:1:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "23830:28:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct FulfillmentComponent memory[] memory"
                                        }
                                      }
                                    ],
                                    "id": 6141,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "23808:68:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct FulfillmentComponent memory[] memory"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "23765:111:33"
                                },
                                {
                                  "assignments": [
                                    6145
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 6145,
                                      "mutability": "mutable",
                                      "name": "execution",
                                      "nameLocation": "23991:9:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6177,
                                      "src": "23974:26:33",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                        "typeString": "struct Execution"
                                      },
                                      "typeName": {
                                        "id": 6144,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 6143,
                                          "name": "Execution",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 4075,
                                          "src": "23974:9:33"
                                        },
                                        "referencedDeclaration": 4075,
                                        "src": "23974:9:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                                          "typeString": "struct Execution"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 6153,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "id": 6147,
                                        "name": "advancedOrders",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6021,
                                        "src": "24044:14:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory[] memory"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 6148,
                                          "name": "Side",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3857,
                                          "src": "24080:4:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_enum$_Side_$3857_$",
                                            "typeString": "type(enum Side)"
                                          }
                                        },
                                        "id": 6149,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "CONSIDERATION",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3856,
                                        "src": "24080:18:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_enum$_Side_$3857",
                                          "typeString": "enum Side"
                                        }
                                      },
                                      {
                                        "id": 6150,
                                        "name": "components",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6137,
                                        "src": "24120:10:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct FulfillmentComponent memory[] memory"
                                        }
                                      },
                                      {
                                        "id": 6151,
                                        "name": "fulfillerConduitKey",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6033,
                                        "src": "24152:19:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory[] memory"
                                        },
                                        {
                                          "typeIdentifier": "t_enum$_Side_$3857",
                                          "typeString": "enum Side"
                                        },
                                        {
                                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct FulfillmentComponent memory[] memory"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "id": 6146,
                                      "name": "_aggregateAvailable",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5290,
                                      "src": "24003:19:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_enum$_Side_$3857_$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$_t_bytes32_$returns$_t_struct$_Execution_$4075_memory_ptr_$",
                                        "typeString": "function (struct AdvancedOrder memory[] memory,enum Side,struct FulfillmentComponent memory[] memory,bytes32) view returns (struct Execution memory)"
                                      }
                                    },
                                    "id": 6152,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "24003:186:33",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                      "typeString": "struct Execution memory"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "23974:215:33"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 6159,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "expression": {
                                          "id": 6154,
                                          "name": "execution",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6145,
                                          "src": "24289:9:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                            "typeString": "struct Execution memory"
                                          }
                                        },
                                        "id": 6155,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "item",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4070,
                                        "src": "24289:14:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                          "typeString": "struct ReceivedItem memory"
                                        }
                                      },
                                      "id": 6156,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "recipient",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3939,
                                      "src": "24289:24:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 6157,
                                        "name": "execution",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6145,
                                        "src": "24317:9:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                          "typeString": "struct Execution memory"
                                        }
                                      },
                                      "id": 6158,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "offerer",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4072,
                                      "src": "24317:17:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "24289:45:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 6175,
                                    "nodeType": "Block",
                                    "src": "24471:243:33",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 6173,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "baseExpression": {
                                              "id": 6165,
                                              "name": "executions",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6041,
                                              "src": "24573:10:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct Execution memory[] memory"
                                              }
                                            },
                                            "id": 6171,
                                            "indexExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6170,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 6168,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 6166,
                                                  "name": "i",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6124,
                                                  "src": "24609:1:33",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "+",
                                                "rightExpression": {
                                                  "id": 6167,
                                                  "name": "totalOfferFulfillments",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 6044,
                                                  "src": "24613:22:33",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "src": "24609:26:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 6169,
                                                "name": "totalFilteredExecutions",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6066,
                                                "src": "24638:23:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "24609:52:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "24573:110:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                              "typeString": "struct Execution memory"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "id": 6172,
                                            "name": "execution",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6145,
                                            "src": "24686:9:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                              "typeString": "struct Execution memory"
                                            }
                                          },
                                          "src": "24573:122:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                            "typeString": "struct Execution memory"
                                          }
                                        },
                                        "id": 6174,
                                        "nodeType": "ExpressionStatement",
                                        "src": "24573:122:33"
                                      }
                                    ]
                                  },
                                  "id": 6176,
                                  "nodeType": "IfStatement",
                                  "src": "24285:429:33",
                                  "trueBody": {
                                    "id": 6164,
                                    "nodeType": "Block",
                                    "src": "24336:129:33",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 6162,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 6160,
                                            "name": "totalFilteredExecutions",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6066,
                                            "src": "24418:23:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "hexValue": "31",
                                            "id": 6161,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "24445:1:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "24418:28:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 6163,
                                        "nodeType": "ExpressionStatement",
                                        "src": "24418:28:33"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6127,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6124,
                                "src": "23627:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 6128,
                                "name": "totalConsiderationFulfillments",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6049,
                                "src": "23631:30:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "23627:34:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6178,
                            "initializationExpression": {
                              "assignments": [
                                6124
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6124,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "23620:1:33",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6178,
                                  "src": "23612:9:33",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6123,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "23612:7:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6126,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 6125,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "23624:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "23612:13:33"
                            },
                            "loopExpression": {
                              "expression": {
                                "id": 6131,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "23663:3:33",
                                "subExpression": {
                                  "id": 6130,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6124,
                                  "src": "23665:1:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6132,
                              "nodeType": "ExpressionStatement",
                              "src": "23663:3:33"
                            },
                            "nodeType": "ForStatement",
                            "src": "23607:1121:33"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6181,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6179,
                                "name": "totalFilteredExecutions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6066,
                                "src": "24812:23:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 6180,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "24839:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "24812:28:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6184,
                            "nodeType": "IfStatement",
                            "src": "24808:320:33",
                            "trueBody": {
                              "id": 6183,
                              "nodeType": "Block",
                              "src": "24842:286:33",
                              "statements": [
                                {
                                  "AST": {
                                    "nodeType": "YulBlock",
                                    "src": "24937:177:33",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "executions",
                                              "nodeType": "YulIdentifier",
                                              "src": "24991:10:33"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "executions",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "25037:10:33"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "25031:5:33"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "25031:17:33"
                                                },
                                                {
                                                  "name": "totalFilteredExecutions",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "25050:23:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "25027:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "25027:47:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "24959:6:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24959:137:33"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "24959:137:33"
                                      }
                                    ]
                                  },
                                  "evmVersion": "london",
                                  "externalReferences": [
                                    {
                                      "declaration": 6041,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "24991:10:33",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 6041,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "25037:10:33",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 6066,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "25050:23:33",
                                      "valueSize": 1
                                    }
                                  ],
                                  "id": 6182,
                                  "nodeType": "InlineAssembly",
                                  "src": "24928:186:33"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6189,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 6186,
                              "name": "executions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6041,
                              "src": "25198:10:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct Execution memory[] memory"
                              }
                            },
                            "id": 6187,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "25198:17:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 6188,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "25219:1:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "25198:22:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6194,
                        "nodeType": "IfStatement",
                        "src": "25194:88:33",
                        "trueBody": {
                          "id": 6193,
                          "nodeType": "Block",
                          "src": "25222:60:33",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 6190,
                                  "name": "NoSpecifiedOrdersAvailable",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1923,
                                  "src": "25243:26:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 6191,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "25243:28:33",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6192,
                              "nodeType": "RevertStatement",
                              "src": "25236:35:33"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 6200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6195,
                            "name": "availableOrders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6037,
                            "src": "25336:15:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6197,
                                "name": "advancedOrders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6021,
                                "src": "25403:14:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct AdvancedOrder memory[] memory"
                                }
                              },
                              {
                                "id": 6198,
                                "name": "executions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6041,
                                "src": "25431:10:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct Execution memory[] memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct AdvancedOrder memory[] memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct Execution memory[] memory"
                                }
                              ],
                              "id": 6196,
                              "name": "_performFinalChecksAndExecuteOrders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6404,
                              "src": "25354:35:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_bool_$dyn_memory_ptr_$",
                                "typeString": "function (struct AdvancedOrder memory[] memory,struct Execution memory[] memory) returns (bool[] memory)"
                              }
                            },
                            "id": 6199,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "25354:97:33",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[] memory"
                            }
                          },
                          "src": "25336:115:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "id": 6201,
                        "nodeType": "ExpressionStatement",
                        "src": "25336:115:33"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 6202,
                              "name": "availableOrders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6037,
                              "src": "25470:15:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                "typeString": "bool[] memory"
                              }
                            },
                            {
                              "id": 6203,
                              "name": "executions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6041,
                              "src": "25487:10:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct Execution memory[] memory"
                              }
                            }
                          ],
                          "id": 6204,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "25469:29:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_array$_t_bool_$dyn_memory_ptr_$_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr_$",
                            "typeString": "tuple(bool[] memory,struct Execution memory[] memory)"
                          }
                        },
                        "functionReturnParameters": 6042,
                        "id": 6205,
                        "nodeType": "Return",
                        "src": "25462:36:33"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6017,
                    "nodeType": "StructuredDocumentation",
                    "src": "18004:3347:33",
                    "text": " @dev Internal function to fulfill a group of validated orders, fully or\n      partially, with an arbitrary number of items for offer and\n      consideration per order and to execute transfers. Any order that is\n      not currently active, has already been fully filled, or has been\n      cancelled will be omitted. Remaining offer and consideration items\n      will then be aggregated where possible as indicated by the supplied\n      offer and consideration component arrays and aggregated items will\n      be transferred to the fulfiller or to each intended recipient,\n      respectively. Note that a failing item transfer or an issue with\n      order formatting will cause the entire batch to fail.\n @param advancedOrders            The orders to fulfill along with the\n                                  fraction of those orders to attempt to\n                                  fill. Note that both the offerer and the\n                                  fulfiller must first approve this\n                                  contract (or the conduit if indicated by\n                                  the order) to transfer any relevant\n                                  tokens on their behalf and that\n                                  contracts must implement\n                                  `onERC1155Received` in order to receive\n                                  ERC1155 tokens as consideration. Also\n                                  note that all offer and consideration\n                                  components must have no remainder after\n                                  multiplication of the respective amount\n                                  with the supplied fraction for an\n                                  order's partial fill amount to be\n                                  considered valid.\n @param offerFulfillments         An array of FulfillmentComponent arrays\n                                  indicating which offer items to attempt\n                                  to aggregate when preparing executions.\n @param considerationFulfillments An array of FulfillmentComponent arrays\n                                  indicating which consideration items to\n                                  attempt to aggregate when preparing\n                                  executions.\n @param fulfillerConduitKey       A bytes32 value indicating what conduit,\n                                  if any, to source the fulfiller's token\n                                  approvals from. The zero hash signifies\n                                  that no conduit should be used, with\n                                  direct approvals set on Consideration.\n @return availableOrders An array of booleans indicating if each order\n                         with an index corresponding to the index of the\n                         returned boolean was fulfillable or not.\n @return executions      An array of elements indicating the sequence of\n                         transfers performed as part of matching the given\n                         orders."
                  },
                  "id": 6207,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_executeAvailableFulfillments",
                  "nameLocation": "21365:29:33",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6034,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6021,
                        "mutability": "mutable",
                        "name": "advancedOrders",
                        "nameLocation": "21427:14:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6207,
                        "src": "21404:37:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct AdvancedOrder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6019,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 6018,
                              "name": "AdvancedOrder",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4031,
                              "src": "21404:13:33"
                            },
                            "referencedDeclaration": 4031,
                            "src": "21404:13:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                              "typeString": "struct AdvancedOrder"
                            }
                          },
                          "id": 6020,
                          "nodeType": "ArrayTypeName",
                          "src": "21404:15:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                            "typeString": "struct AdvancedOrder[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6026,
                        "mutability": "mutable",
                        "name": "offerFulfillments",
                        "nameLocation": "21483:17:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6207,
                        "src": "21451:49:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct FulfillmentComponent[][]"
                        },
                        "typeName": {
                          "baseType": {
                            "baseType": {
                              "id": 6023,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 6022,
                                "name": "FulfillmentComponent",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4067,
                                "src": "21451:20:33"
                              },
                              "referencedDeclaration": 4067,
                              "src": "21451:20:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                                "typeString": "struct FulfillmentComponent"
                              }
                            },
                            "id": 6024,
                            "nodeType": "ArrayTypeName",
                            "src": "21451:22:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                              "typeString": "struct FulfillmentComponent[]"
                            }
                          },
                          "id": 6025,
                          "nodeType": "ArrayTypeName",
                          "src": "21451:24:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_$dyn_storage_ptr",
                            "typeString": "struct FulfillmentComponent[][]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6031,
                        "mutability": "mutable",
                        "name": "considerationFulfillments",
                        "nameLocation": "21542:25:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6207,
                        "src": "21510:57:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct FulfillmentComponent[][]"
                        },
                        "typeName": {
                          "baseType": {
                            "baseType": {
                              "id": 6028,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 6027,
                                "name": "FulfillmentComponent",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4067,
                                "src": "21510:20:33"
                              },
                              "referencedDeclaration": 4067,
                              "src": "21510:20:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FulfillmentComponent_$4067_storage_ptr",
                                "typeString": "struct FulfillmentComponent"
                              }
                            },
                            "id": 6029,
                            "nodeType": "ArrayTypeName",
                            "src": "21510:22:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_ptr",
                              "typeString": "struct FulfillmentComponent[]"
                            }
                          },
                          "id": 6030,
                          "nodeType": "ArrayTypeName",
                          "src": "21510:24:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_array$_t_struct$_FulfillmentComponent_$4067_storage_$dyn_storage_$dyn_storage_ptr",
                            "typeString": "struct FulfillmentComponent[][]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6033,
                        "mutability": "mutable",
                        "name": "fulfillerConduitKey",
                        "nameLocation": "21585:19:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6207,
                        "src": "21577:27:33",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6032,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "21577:7:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21394:216:33"
                  },
                  "returnParameters": {
                    "id": 6042,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6037,
                        "mutability": "mutable",
                        "name": "availableOrders",
                        "nameLocation": "21659:15:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6207,
                        "src": "21645:29:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6035,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "21645:4:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 6036,
                          "nodeType": "ArrayTypeName",
                          "src": "21645:6:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6041,
                        "mutability": "mutable",
                        "name": "executions",
                        "nameLocation": "21695:10:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6207,
                        "src": "21676:29:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Execution[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6039,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 6038,
                              "name": "Execution",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4075,
                              "src": "21676:9:33"
                            },
                            "referencedDeclaration": 4075,
                            "src": "21676:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                              "typeString": "struct Execution"
                            }
                          },
                          "id": 6040,
                          "nodeType": "ArrayTypeName",
                          "src": "21676:11:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_storage_$dyn_storage_ptr",
                            "typeString": "struct Execution[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21644:62:33"
                  },
                  "scope": 6541,
                  "src": "21356:4149:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6403,
                    "nodeType": "Block",
                    "src": "26476:4044:33",
                    "statements": [
                      {
                        "assignments": [
                          6223
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6223,
                            "mutability": "mutable",
                            "name": "totalOrders",
                            "nameLocation": "26574:11:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 6403,
                            "src": "26566:19:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6222,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "26566:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6226,
                        "initialValue": {
                          "expression": {
                            "id": 6224,
                            "name": "advancedOrders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6212,
                            "src": "26588:14:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct AdvancedOrder memory[] memory"
                            }
                          },
                          "id": 6225,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "26588:21:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "26566:43:33"
                      },
                      {
                        "expression": {
                          "id": 6233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6227,
                            "name": "availableOrders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6220,
                            "src": "26679:15:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6231,
                                "name": "totalOrders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6223,
                                "src": "26708:11:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6230,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "26697:10:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bool[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 6228,
                                  "name": "bool",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "26701:4:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 6229,
                                "nodeType": "ArrayTypeName",
                                "src": "26701:6:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                                  "typeString": "bool[]"
                                }
                              }
                            },
                            "id": 6232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "26697:23:33",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                              "typeString": "bool[] memory"
                            }
                          },
                          "src": "26679:41:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "id": 6234,
                        "nodeType": "ExpressionStatement",
                        "src": "26679:41:33"
                      },
                      {
                        "id": 6308,
                        "nodeType": "UncheckedBlock",
                        "src": "26810:1534:33",
                        "statements": [
                          {
                            "body": {
                              "id": 6306,
                              "nodeType": "Block",
                              "src": "26949:1385:33",
                              "statements": [
                                {
                                  "assignments": [
                                    6247
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 6247,
                                      "mutability": "mutable",
                                      "name": "advancedOrder",
                                      "nameLocation": "27039:13:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6306,
                                      "src": "27018:34:33",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                        "typeString": "struct AdvancedOrder"
                                      },
                                      "typeName": {
                                        "id": 6246,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 6245,
                                          "name": "AdvancedOrder",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 4031,
                                          "src": "27018:13:33"
                                        },
                                        "referencedDeclaration": 4031,
                                        "src": "27018:13:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                                          "typeString": "struct AdvancedOrder"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 6251,
                                  "initialValue": {
                                    "baseExpression": {
                                      "id": 6248,
                                      "name": "advancedOrders",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6212,
                                      "src": "27055:14:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct AdvancedOrder memory[] memory"
                                      }
                                    },
                                    "id": 6250,
                                    "indexExpression": {
                                      "id": 6249,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6236,
                                      "src": "27070:1:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "27055:17:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                      "typeString": "struct AdvancedOrder memory"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "27018:54:33"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    },
                                    "id": 6255,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 6252,
                                        "name": "advancedOrder",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6247,
                                        "src": "27173:13:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory"
                                        }
                                      },
                                      "id": 6253,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "numerator",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4024,
                                      "src": "27173:23:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "30",
                                      "id": 6254,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "27200:1:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "27173:28:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 6258,
                                  "nodeType": "IfStatement",
                                  "src": "27169:323:33",
                                  "trueBody": {
                                    "id": 6257,
                                    "nodeType": "Block",
                                    "src": "27203:289:33",
                                    "statements": [
                                      {
                                        "id": 6256,
                                        "nodeType": "Continue",
                                        "src": "27465:8:33"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 6263,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "id": 6259,
                                        "name": "availableOrders",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6220,
                                        "src": "27558:15:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                          "typeString": "bool[] memory"
                                        }
                                      },
                                      "id": 6261,
                                      "indexExpression": {
                                        "id": 6260,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6236,
                                        "src": "27574:1:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "27558:18:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "hexValue": "74727565",
                                      "id": 6262,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "27579:4:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    "src": "27558:25:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 6264,
                                  "nodeType": "ExpressionStatement",
                                  "src": "27558:25:33"
                                },
                                {
                                  "assignments": [
                                    6269
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 6269,
                                      "mutability": "mutable",
                                      "name": "consideration",
                                      "nameLocation": "27707:13:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6306,
                                      "src": "27680:40:33",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct ConsiderationItem[]"
                                      },
                                      "typeName": {
                                        "baseType": {
                                          "id": 6267,
                                          "nodeType": "UserDefinedTypeName",
                                          "pathNode": {
                                            "id": 6266,
                                            "name": "ConsiderationItem",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 3918,
                                            "src": "27680:17:33"
                                          },
                                          "referencedDeclaration": 3918,
                                          "src": "27680:17:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ConsiderationItem_$3918_storage_ptr",
                                            "typeString": "struct ConsiderationItem"
                                          }
                                        },
                                        "id": 6268,
                                        "nodeType": "ArrayTypeName",
                                        "src": "27680:19:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_storage_$dyn_storage_ptr",
                                          "typeString": "struct ConsiderationItem[]"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 6274,
                                  "initialValue": {
                                    "components": [
                                      {
                                        "expression": {
                                          "expression": {
                                            "id": 6270,
                                            "name": "advancedOrder",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6247,
                                            "src": "27745:13:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                              "typeString": "struct AdvancedOrder memory"
                                            }
                                          },
                                          "id": 6271,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "parameters",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4022,
                                          "src": "27745:24:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                            "typeString": "struct OrderParameters memory"
                                          }
                                        },
                                        "id": 6272,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "consideration",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3997,
                                        "src": "27745:38:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct ConsiderationItem memory[] memory"
                                        }
                                      }
                                    ],
                                    "id": 6273,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "27723:78:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct ConsiderationItem memory[] memory"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "27680:121:33"
                                },
                                {
                                  "body": {
                                    "id": 6304,
                                    "nodeType": "Block",
                                    "src": "27948:372:33",
                                    "statements": [
                                      {
                                        "assignments": [
                                          6287
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 6287,
                                            "mutability": "mutable",
                                            "name": "unmetAmount",
                                            "nameLocation": "28054:11:33",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6304,
                                            "src": "28046:19:33",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "typeName": {
                                              "id": 6286,
                                              "name": "uint256",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "28046:7:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 6292,
                                        "initialValue": {
                                          "expression": {
                                            "baseExpression": {
                                              "id": 6288,
                                              "name": "consideration",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6269,
                                              "src": "28068:13:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct ConsiderationItem memory[] memory"
                                              }
                                            },
                                            "id": 6290,
                                            "indexExpression": {
                                              "id": 6289,
                                              "name": "j",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6276,
                                              "src": "28082:1:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "IndexAccess",
                                            "src": "28068:16:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                              "typeString": "struct ConsiderationItem memory"
                                            }
                                          },
                                          "id": 6291,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "startAmount",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3913,
                                          "src": "28068:28:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "28046:50:33"
                                      },
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6295,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 6293,
                                            "name": "unmetAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6287,
                                            "src": "28190:11:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 6294,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "28205:1:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "28190:16:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 6303,
                                        "nodeType": "IfStatement",
                                        "src": "28186:116:33",
                                        "trueBody": {
                                          "id": 6302,
                                          "nodeType": "Block",
                                          "src": "28208:94:33",
                                          "statements": [
                                            {
                                              "errorCall": {
                                                "arguments": [
                                                  {
                                                    "id": 6297,
                                                    "name": "i",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6236,
                                                    "src": "28261:1:33",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "id": 6298,
                                                    "name": "j",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6276,
                                                    "src": "28264:1:33",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  {
                                                    "id": 6299,
                                                    "name": "unmetAmount",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6287,
                                                    "src": "28267:11:33",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "id": 6296,
                                                  "name": "ConsiderationNotMet",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1883,
                                                  "src": "28241:19:33",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                                    "typeString": "function (uint256,uint256,uint256) pure"
                                                  }
                                                },
                                                "id": 6300,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "28241:38:33",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 6301,
                                              "nodeType": "RevertStatement",
                                              "src": "28234:45:33"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6282,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 6279,
                                      "name": "j",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6276,
                                      "src": "27917:1:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 6280,
                                        "name": "consideration",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6269,
                                        "src": "27921:13:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct ConsiderationItem memory[] memory"
                                        }
                                      },
                                      "id": 6281,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "27921:20:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "27917:24:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 6305,
                                  "initializationExpression": {
                                    "assignments": [
                                      6276
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 6276,
                                        "mutability": "mutable",
                                        "name": "j",
                                        "nameLocation": "27910:1:33",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 6305,
                                        "src": "27902:9:33",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "typeName": {
                                          "id": 6275,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "27902:7:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 6278,
                                    "initialValue": {
                                      "hexValue": "30",
                                      "id": 6277,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "27914:1:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "27902:13:33"
                                  },
                                  "loopExpression": {
                                    "expression": {
                                      "id": 6284,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "++",
                                      "prefix": true,
                                      "src": "27943:3:33",
                                      "subExpression": {
                                        "id": 6283,
                                        "name": "j",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6276,
                                        "src": "27945:1:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 6285,
                                    "nodeType": "ExpressionStatement",
                                    "src": "27943:3:33"
                                  },
                                  "nodeType": "ForStatement",
                                  "src": "27897:423:33"
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6241,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6239,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6236,
                                "src": "26927:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 6240,
                                "name": "totalOrders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6223,
                                "src": "26931:11:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "26927:15:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6307,
                            "initializationExpression": {
                              "assignments": [
                                6236
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6236,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "26920:1:33",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6307,
                                  "src": "26912:9:33",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6235,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "26912:7:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6238,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 6237,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "26924:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "26912:13:33"
                            },
                            "loopExpression": {
                              "expression": {
                                "id": 6243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "26944:3:33",
                                "subExpression": {
                                  "id": 6242,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6236,
                                  "src": "26946:1:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6244,
                              "nodeType": "ExpressionStatement",
                              "src": "26944:3:33"
                            },
                            "nodeType": "ForStatement",
                            "src": "26907:1427:33"
                          }
                        ]
                      },
                      {
                        "assignments": [
                          6310
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6310,
                            "mutability": "mutable",
                            "name": "etherRemaining",
                            "nameLocation": "28426:14:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 6403,
                            "src": "28418:22:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6309,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "28418:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6313,
                        "initialValue": {
                          "expression": {
                            "id": 6311,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "28443:3:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 6312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "src": "28443:9:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28418:34:33"
                      },
                      {
                        "assignments": [
                          6315
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6315,
                            "mutability": "mutable",
                            "name": "accumulator",
                            "nameLocation": "28826:11:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 6403,
                            "src": "28813:24:33",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 6314,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "28813:5:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6320,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6318,
                              "name": "AccumulatorDisarmed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3769,
                              "src": "28850:19:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6317,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "28840:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 6316,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "28844:5:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 6319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "28840:30:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "28813:57:33"
                      },
                      {
                        "body": {
                          "id": 6377,
                          "nodeType": "Block",
                          "src": "28966:1078:33",
                          "statements": [
                            {
                              "assignments": [
                                6331
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6331,
                                  "mutability": "mutable",
                                  "name": "execution",
                                  "nameLocation": "29069:9:33",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6377,
                                  "src": "29052:26:33",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                    "typeString": "struct Execution"
                                  },
                                  "typeName": {
                                    "id": 6330,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 6329,
                                      "name": "Execution",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 4075,
                                      "src": "29052:9:33"
                                    },
                                    "referencedDeclaration": 4075,
                                    "src": "29052:9:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                                      "typeString": "struct Execution"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6335,
                              "initialValue": {
                                "baseExpression": {
                                  "id": 6332,
                                  "name": "executions",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6216,
                                  "src": "29081:10:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct Execution memory[] memory"
                                  }
                                },
                                "id": 6334,
                                "indexExpression": {
                                  "id": 6333,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6322,
                                  "src": "29092:1:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "29081:13:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                  "typeString": "struct Execution memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "29052:42:33"
                            },
                            {
                              "assignments": [
                                6338
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6338,
                                  "mutability": "mutable",
                                  "name": "item",
                                  "nameLocation": "29128:4:33",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6377,
                                  "src": "29108:24:33",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                    "typeString": "struct ReceivedItem"
                                  },
                                  "typeName": {
                                    "id": 6337,
                                    "nodeType": "UserDefinedTypeName",
                                    "pathNode": {
                                      "id": 6336,
                                      "name": "ReceivedItem",
                                      "nodeType": "IdentifierPath",
                                      "referencedDeclaration": 3940,
                                      "src": "29108:12:33"
                                    },
                                    "referencedDeclaration": 3940,
                                    "src": "29108:12:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReceivedItem_$3940_storage_ptr",
                                      "typeString": "struct ReceivedItem"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6341,
                              "initialValue": {
                                "expression": {
                                  "id": 6339,
                                  "name": "execution",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6331,
                                  "src": "29135:9:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                    "typeString": "struct Execution memory"
                                  }
                                },
                                "id": 6340,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "item",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4070,
                                "src": "29135:14:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                  "typeString": "struct ReceivedItem memory"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "29108:41:33"
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_enum$_ItemType_$3854",
                                  "typeString": "enum ItemType"
                                },
                                "id": 6346,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "expression": {
                                    "id": 6342,
                                    "name": "item",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6338,
                                    "src": "29245:4:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                      "typeString": "struct ReceivedItem memory"
                                    }
                                  },
                                  "id": 6343,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "itemType",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3931,
                                  "src": "29245:13:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ItemType_$3854",
                                    "typeString": "enum ItemType"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "expression": {
                                    "id": 6344,
                                    "name": "ItemType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3854,
                                    "src": "29262:8:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ItemType_$3854_$",
                                      "typeString": "type(enum ItemType)"
                                    }
                                  },
                                  "id": 6345,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "NATIVE",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3848,
                                  "src": "29262:15:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ItemType_$3854",
                                    "typeString": "enum ItemType"
                                  }
                                },
                                "src": "29245:32:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 6363,
                              "nodeType": "IfStatement",
                              "src": "29241:434:33",
                              "trueBody": {
                                "id": 6362,
                                "nodeType": "Block",
                                "src": "29279:396:33",
                                "statements": [
                                  {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6350,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 6347,
                                          "name": "item",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6338,
                                          "src": "29378:4:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                            "typeString": "struct ReceivedItem memory"
                                          }
                                        },
                                        "id": 6348,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "amount",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3937,
                                        "src": "29378:11:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": ">",
                                      "rightExpression": {
                                        "id": 6349,
                                        "name": "etherRemaining",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6310,
                                        "src": "29392:14:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "29378:28:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "id": 6355,
                                    "nodeType": "IfStatement",
                                    "src": "29374:109:33",
                                    "trueBody": {
                                      "id": 6354,
                                      "nodeType": "Block",
                                      "src": "29408:75:33",
                                      "statements": [
                                        {
                                          "errorCall": {
                                            "arguments": [],
                                            "expression": {
                                              "argumentTypes": [],
                                              "id": 6351,
                                              "name": "InsufficientEtherSupplied",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1886,
                                              "src": "29437:25:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                                "typeString": "function () pure"
                                              }
                                            },
                                            "id": 6352,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "29437:27:33",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_tuple$__$",
                                              "typeString": "tuple()"
                                            }
                                          },
                                          "id": 6353,
                                          "nodeType": "RevertStatement",
                                          "src": "29430:34:33"
                                        }
                                      ]
                                    }
                                  },
                                  {
                                    "id": 6361,
                                    "nodeType": "UncheckedBlock",
                                    "src": "29581:80:33",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 6359,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 6356,
                                            "name": "etherRemaining",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6310,
                                            "src": "29613:14:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "-=",
                                          "rightHandSide": {
                                            "expression": {
                                              "id": 6357,
                                              "name": "item",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6338,
                                              "src": "29631:4:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                                "typeString": "struct ReceivedItem memory"
                                              }
                                            },
                                            "id": 6358,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "amount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3937,
                                            "src": "29631:11:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "29613:29:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 6360,
                                        "nodeType": "ExpressionStatement",
                                        "src": "29613:29:33"
                                      }
                                    ]
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 6365,
                                    "name": "item",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6338,
                                    "src": "29777:4:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                      "typeString": "struct ReceivedItem memory"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 6366,
                                      "name": "execution",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6331,
                                      "src": "29799:9:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                        "typeString": "struct Execution memory"
                                      }
                                    },
                                    "id": 6367,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "offerer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4072,
                                    "src": "29799:17:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 6368,
                                      "name": "execution",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6331,
                                      "src": "29834:9:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                        "typeString": "struct Execution memory"
                                      }
                                    },
                                    "id": 6369,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "conduitKey",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4074,
                                    "src": "29834:20:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 6370,
                                    "name": "accumulator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6315,
                                    "src": "29872:11:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                      "typeString": "struct ReceivedItem memory"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 6364,
                                  "name": "_transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4565,
                                  "src": "29750:9:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReceivedItem_$3940_memory_ptr_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (struct ReceivedItem memory,address,bytes32,bytes memory)"
                                  }
                                },
                                "id": 6371,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "29750:147:33",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6372,
                              "nodeType": "ExpressionStatement",
                              "src": "29750:147:33"
                            },
                            {
                              "id": 6376,
                              "nodeType": "UncheckedBlock",
                              "src": "29988:46:33",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 6374,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": true,
                                    "src": "30016:3:33",
                                    "subExpression": {
                                      "id": 6373,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6322,
                                      "src": "30018:1:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6375,
                                  "nodeType": "ExpressionStatement",
                                  "src": "30016:3:33"
                                }
                              ]
                            }
                          ]
                        },
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6325,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6322,
                            "src": "28941:1:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "expression": {
                              "id": 6326,
                              "name": "executions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6216,
                              "src": "28945:10:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct Execution memory[] memory"
                              }
                            },
                            "id": 6327,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "28945:17:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "28941:21:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6378,
                        "initializationExpression": {
                          "assignments": [
                            6322
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 6322,
                              "mutability": "mutable",
                              "name": "i",
                              "nameLocation": "28934:1:33",
                              "nodeType": "VariableDeclaration",
                              "scope": 6378,
                              "src": "28926:9:33",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 6321,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "28926:7:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 6324,
                          "initialValue": {
                            "hexValue": "30",
                            "id": 6323,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "28938:1:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "28926:13:33"
                        },
                        "nodeType": "ForStatement",
                        "src": "28921:1123:33"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6380,
                              "name": "accumulator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6315,
                              "src": "30150:11:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 6379,
                            "name": "_triggerIfArmed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4892,
                            "src": "30134:15:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 6381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30134:28:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6382,
                        "nodeType": "ExpressionStatement",
                        "src": "30134:28:33"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6383,
                            "name": "etherRemaining",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6310,
                            "src": "30254:14:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 6384,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "30272:1:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "30254:19:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6396,
                        "nodeType": "IfStatement",
                        "src": "30250:99:33",
                        "trueBody": {
                          "id": 6395,
                          "nodeType": "Block",
                          "src": "30275:74:33",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 6389,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -15,
                                          "src": "30310:3:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 6390,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "30310:10:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 6388,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "30302:8:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_payable_$",
                                        "typeString": "type(address payable)"
                                      },
                                      "typeName": {
                                        "id": 6387,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "30302:8:33",
                                        "stateMutability": "payable",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 6391,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "30302:19:33",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 6392,
                                    "name": "etherRemaining",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6310,
                                    "src": "30323:14:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 6386,
                                  "name": "_transferEth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4663,
                                  "src": "30289:12:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                                    "typeString": "function (address payable,uint256)"
                                  }
                                },
                                "id": 6393,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "30289:49:33",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6394,
                              "nodeType": "ExpressionStatement",
                              "src": "30289:49:33"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6397,
                            "name": "_clearReentrancyGuard",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7754,
                            "src": "30398:21:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 6398,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "30398:23:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6399,
                        "nodeType": "ExpressionStatement",
                        "src": "30398:23:33"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 6400,
                              "name": "availableOrders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6220,
                              "src": "30497:15:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                                "typeString": "bool[] memory"
                              }
                            }
                          ],
                          "id": 6401,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "30496:17:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "functionReturnParameters": 6221,
                        "id": 6402,
                        "nodeType": "Return",
                        "src": "30489:24:33"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6208,
                    "nodeType": "StructuredDocumentation",
                    "src": "25511:774:33",
                    "text": " @dev Internal function to perform a final check that each consideration\n      item for an arbitrary number of fulfilled orders has been met and to\n      trigger associated executions, transferring the respective items.\n @param advancedOrders     The orders to check and perform executions for.\n @param executions         An array of elements indicating the sequence of\n                           transfers to perform when fulfilling the given\n                           orders.\n @return availableOrders An array of booleans indicating if each order\n                         with an index corresponding to the index of the\n                         returned boolean was fulfillable or not."
                  },
                  "id": 6404,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_performFinalChecksAndExecuteOrders",
                  "nameLocation": "26299:35:33",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6217,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6212,
                        "mutability": "mutable",
                        "name": "advancedOrders",
                        "nameLocation": "26367:14:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6404,
                        "src": "26344:37:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct AdvancedOrder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6210,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 6209,
                              "name": "AdvancedOrder",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4031,
                              "src": "26344:13:33"
                            },
                            "referencedDeclaration": 4031,
                            "src": "26344:13:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                              "typeString": "struct AdvancedOrder"
                            }
                          },
                          "id": 6211,
                          "nodeType": "ArrayTypeName",
                          "src": "26344:15:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                            "typeString": "struct AdvancedOrder[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6216,
                        "mutability": "mutable",
                        "name": "executions",
                        "nameLocation": "26410:10:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6404,
                        "src": "26391:29:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Execution[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6214,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 6213,
                              "name": "Execution",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4075,
                              "src": "26391:9:33"
                            },
                            "referencedDeclaration": 4075,
                            "src": "26391:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                              "typeString": "struct Execution"
                            }
                          },
                          "id": 6215,
                          "nodeType": "ArrayTypeName",
                          "src": "26391:11:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_storage_$dyn_storage_ptr",
                            "typeString": "struct Execution[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26334:92:33"
                  },
                  "returnParameters": {
                    "id": 6221,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6220,
                        "mutability": "mutable",
                        "name": "availableOrders",
                        "nameLocation": "26459:15:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6404,
                        "src": "26445:29:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                          "typeString": "bool[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6218,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "26445:4:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 6219,
                          "nodeType": "ArrayTypeName",
                          "src": "26445:6:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_storage_ptr",
                            "typeString": "bool[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "26444:31:33"
                  },
                  "scope": 6541,
                  "src": "26290:4230:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6437,
                    "nodeType": "Block",
                    "src": "33190:431:33",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6425,
                              "name": "advancedOrders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6409,
                              "src": "33325:14:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              }
                            },
                            {
                              "id": 6426,
                              "name": "criteriaResolvers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6413,
                              "src": "33353:17:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct CriteriaResolver memory[] memory"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 6427,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "33384:4:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "expression": {
                                "id": 6428,
                                "name": "advancedOrders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6409,
                                "src": "33450:14:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct AdvancedOrder memory[] memory"
                                }
                              },
                              "id": 6429,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "33450:21:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct CriteriaResolver memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6424,
                            "name": "_validateOrdersAndPrepareToFulfill",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6016,
                            "src": "33277:34:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr_$_t_bool_$_t_uint256_$returns$__$",
                              "typeString": "function (struct AdvancedOrder memory[] memory,struct CriteriaResolver memory[] memory,bool,uint256)"
                            }
                          },
                          "id": 6430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33277:204:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6431,
                        "nodeType": "ExpressionStatement",
                        "src": "33277:204:33"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6433,
                              "name": "advancedOrders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6409,
                              "src": "33585:14:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              }
                            },
                            {
                              "id": 6434,
                              "name": "fulfillments",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6417,
                              "src": "33601:12:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct Fulfillment calldata[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                                "typeString": "struct Fulfillment calldata[] calldata"
                              }
                            ],
                            "id": 6432,
                            "name": "_fulfillAdvancedOrders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6540,
                            "src": "33562:22:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr_$returns$_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (struct AdvancedOrder memory[] memory,struct Fulfillment calldata[] calldata) returns (struct Execution memory[] memory)"
                            }
                          },
                          "id": 6435,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "33562:52:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct Execution memory[] memory"
                          }
                        },
                        "functionReturnParameters": 6423,
                        "id": 6436,
                        "nodeType": "Return",
                        "src": "33555:59:33"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6405,
                    "nodeType": "StructuredDocumentation",
                    "src": "30526:2429:33",
                    "text": " @dev Internal function to match an arbitrary number of full or partial\n      orders, each with an arbitrary number of items for offer and\n      consideration, supplying criteria resolvers containing specific\n      token identifiers and associated proofs as well as fulfillments\n      allocating offer components to consideration components.\n @param advancedOrders    The advanced orders to match. Note that both the\n                          offerer and fulfiller on each order must first\n                          approve this contract (or their conduit if\n                          indicated by the order) to transfer any relevant\n                          tokens on their behalf and each consideration\n                          recipient must implement `onERC1155Received` in\n                          order to receive ERC1155 tokens. Also note that\n                          the offer and consideration components for each\n                          order must have no remainder after multiplying\n                          the respective amount with the supplied fraction\n                          in order for the group of partial fills to be\n                          considered valid.\n @param criteriaResolvers An array where each element contains a reference\n                          to a specific order as well as that order's\n                          offer or consideration, a token identifier, and\n                          a proof that the supplied token identifier is\n                          contained in the order's merkle root. Note that\n                          an empty root indicates that any (transferrable)\n                          token identifier is valid and that no associated\n                          proof needs to be supplied.\n @param fulfillments      An array of elements allocating offer components\n                          to consideration components. Note that each\n                          consideration component must be fully met in\n                          order for the match operation to be valid.\n @return executions An array of elements indicating the sequence of\n                    transfers performed as part of matching the given\n                    orders."
                  },
                  "id": 6438,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_matchAdvancedOrders",
                  "nameLocation": "32969:20:33",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6418,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6409,
                        "mutability": "mutable",
                        "name": "advancedOrders",
                        "nameLocation": "33022:14:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6438,
                        "src": "32999:37:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct AdvancedOrder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6407,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 6406,
                              "name": "AdvancedOrder",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4031,
                              "src": "32999:13:33"
                            },
                            "referencedDeclaration": 4031,
                            "src": "32999:13:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                              "typeString": "struct AdvancedOrder"
                            }
                          },
                          "id": 6408,
                          "nodeType": "ArrayTypeName",
                          "src": "32999:15:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                            "typeString": "struct AdvancedOrder[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6413,
                        "mutability": "mutable",
                        "name": "criteriaResolvers",
                        "nameLocation": "33072:17:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6438,
                        "src": "33046:43:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct CriteriaResolver[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6411,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 6410,
                              "name": "CriteriaResolver",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4053,
                              "src": "33046:16:33"
                            },
                            "referencedDeclaration": 4053,
                            "src": "33046:16:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                              "typeString": "struct CriteriaResolver"
                            }
                          },
                          "id": 6412,
                          "nodeType": "ArrayTypeName",
                          "src": "33046:18:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_storage_$dyn_storage_ptr",
                            "typeString": "struct CriteriaResolver[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6417,
                        "mutability": "mutable",
                        "name": "fulfillments",
                        "nameLocation": "33122:12:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6438,
                        "src": "33099:35:33",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct Fulfillment[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6415,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 6414,
                              "name": "Fulfillment",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4062,
                              "src": "33099:11:33"
                            },
                            "referencedDeclaration": 4062,
                            "src": "33099:11:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Fulfillment_$4062_storage_ptr",
                              "typeString": "struct Fulfillment"
                            }
                          },
                          "id": 6416,
                          "nodeType": "ArrayTypeName",
                          "src": "33099:13:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_storage_$dyn_storage_ptr",
                            "typeString": "struct Fulfillment[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "32989:151:33"
                  },
                  "returnParameters": {
                    "id": 6423,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6422,
                        "mutability": "mutable",
                        "name": "executions",
                        "nameLocation": "33178:10:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6438,
                        "src": "33159:29:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Execution[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6420,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 6419,
                              "name": "Execution",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4075,
                              "src": "33159:9:33"
                            },
                            "referencedDeclaration": 4075,
                            "src": "33159:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                              "typeString": "struct Execution"
                            }
                          },
                          "id": 6421,
                          "nodeType": "ArrayTypeName",
                          "src": "33159:11:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_storage_$dyn_storage_ptr",
                            "typeString": "struct Execution[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "33158:31:33"
                  },
                  "scope": 6541,
                  "src": "32960:661:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6539,
                    "nodeType": "Block",
                    "src": "34714:2082:33",
                    "statements": [
                      {
                        "assignments": [
                          6455
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6455,
                            "mutability": "mutable",
                            "name": "totalFulfillments",
                            "nameLocation": "34802:17:33",
                            "nodeType": "VariableDeclaration",
                            "scope": 6539,
                            "src": "34794:25:33",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6454,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "34794:7:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6458,
                        "initialValue": {
                          "expression": {
                            "id": 6456,
                            "name": "fulfillments",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6447,
                            "src": "34822:12:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "struct Fulfillment calldata[] calldata"
                            }
                          },
                          "id": 6457,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "34822:19:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "34794:47:33"
                      },
                      {
                        "expression": {
                          "id": 6466,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6459,
                            "name": "executions",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6452,
                            "src": "34932:10:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct Execution memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 6464,
                                "name": "totalFulfillments",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6455,
                                "src": "34961:17:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6463,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "34945:15:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (struct Execution memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 6461,
                                  "nodeType": "UserDefinedTypeName",
                                  "pathNode": {
                                    "id": 6460,
                                    "name": "Execution",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 4075,
                                    "src": "34949:9:33"
                                  },
                                  "referencedDeclaration": 4075,
                                  "src": "34949:9:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                                    "typeString": "struct Execution"
                                  }
                                },
                                "id": 6462,
                                "nodeType": "ArrayTypeName",
                                "src": "34949:11:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Execution_$4075_storage_$dyn_storage_ptr",
                                  "typeString": "struct Execution[]"
                                }
                              }
                            },
                            "id": 6465,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "34945:34:33",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct Execution memory[] memory"
                            }
                          },
                          "src": "34932:47:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct Execution memory[] memory"
                          }
                        },
                        "id": 6467,
                        "nodeType": "ExpressionStatement",
                        "src": "34932:47:33"
                      },
                      {
                        "id": 6530,
                        "nodeType": "UncheckedBlock",
                        "src": "35069:1525:33",
                        "statements": [
                          {
                            "assignments": [
                              6469
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6469,
                                "mutability": "mutable",
                                "name": "totalFilteredExecutions",
                                "nameLocation": "35153:23:33",
                                "nodeType": "VariableDeclaration",
                                "scope": 6530,
                                "src": "35145:31:33",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6468,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "35145:7:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6471,
                            "initialValue": {
                              "hexValue": "30",
                              "id": 6470,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "35179:1:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "35145:35:33"
                          },
                          {
                            "body": {
                              "id": 6522,
                              "nodeType": "Block",
                              "src": "35289:895:33",
                              "statements": [
                                {
                                  "assignments": [
                                    6485
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 6485,
                                      "mutability": "mutable",
                                      "name": "fulfillment",
                                      "nameLocation": "35386:11:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6522,
                                      "src": "35365:32:33",
                                      "stateVariable": false,
                                      "storageLocation": "calldata",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Fulfillment_$4062_calldata_ptr",
                                        "typeString": "struct Fulfillment"
                                      },
                                      "typeName": {
                                        "id": 6484,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 6483,
                                          "name": "Fulfillment",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 4062,
                                          "src": "35365:11:33"
                                        },
                                        "referencedDeclaration": 4062,
                                        "src": "35365:11:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Fulfillment_$4062_storage_ptr",
                                          "typeString": "struct Fulfillment"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "documentation": "Retrieve the fulfillment in question.",
                                  "id": 6489,
                                  "initialValue": {
                                    "baseExpression": {
                                      "id": 6486,
                                      "name": "fulfillments",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6447,
                                      "src": "35400:12:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "struct Fulfillment calldata[] calldata"
                                      }
                                    },
                                    "id": 6488,
                                    "indexExpression": {
                                      "id": 6487,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6473,
                                      "src": "35413:1:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "35400:15:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Fulfillment_$4062_calldata_ptr",
                                      "typeString": "struct Fulfillment calldata"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "35365:50:33"
                                },
                                {
                                  "assignments": [
                                    6492
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 6492,
                                      "mutability": "mutable",
                                      "name": "execution",
                                      "nameLocation": "35527:9:33",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6522,
                                      "src": "35510:26:33",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                        "typeString": "struct Execution"
                                      },
                                      "typeName": {
                                        "id": 6491,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 6490,
                                          "name": "Execution",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 4075,
                                          "src": "35510:9:33"
                                        },
                                        "referencedDeclaration": 4075,
                                        "src": "35510:9:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                                          "typeString": "struct Execution"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 6500,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "id": 6494,
                                        "name": "advancedOrders",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6443,
                                        "src": "35578:14:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory[] memory"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 6495,
                                          "name": "fulfillment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6485,
                                          "src": "35614:11:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Fulfillment_$4062_calldata_ptr",
                                            "typeString": "struct Fulfillment calldata"
                                          }
                                        },
                                        "id": 6496,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "offerComponents",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4057,
                                        "src": "35614:27:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct FulfillmentComponent calldata[] calldata"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 6497,
                                          "name": "fulfillment",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6485,
                                          "src": "35663:11:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Fulfillment_$4062_calldata_ptr",
                                            "typeString": "struct Fulfillment calldata"
                                          }
                                        },
                                        "id": 6498,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "considerationComponents",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4061,
                                        "src": "35663:35:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct FulfillmentComponent calldata[] calldata"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory[] memory"
                                        },
                                        {
                                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct FulfillmentComponent calldata[] calldata"
                                        },
                                        {
                                          "typeIdentifier": "t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr",
                                          "typeString": "struct FulfillmentComponent calldata[] calldata"
                                        }
                                      ],
                                      "id": 6493,
                                      "name": "_applyFulfillment",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5207,
                                      "src": "35539:17:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$_t_array$_t_struct$_FulfillmentComponent_$4067_calldata_ptr_$dyn_calldata_ptr_$returns$_t_struct$_Execution_$4075_memory_ptr_$",
                                        "typeString": "function (struct AdvancedOrder memory[] memory,struct FulfillmentComponent calldata[] calldata,struct FulfillmentComponent calldata[] calldata) view returns (struct Execution memory)"
                                      }
                                    },
                                    "id": 6499,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "35539:177:33",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                      "typeString": "struct Execution memory"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "35510:206:33"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    "id": 6506,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "expression": {
                                          "id": 6501,
                                          "name": "execution",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6492,
                                          "src": "35816:9:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                            "typeString": "struct Execution memory"
                                          }
                                        },
                                        "id": 6502,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "item",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 4070,
                                        "src": "35816:14:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                          "typeString": "struct ReceivedItem memory"
                                        }
                                      },
                                      "id": 6503,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "recipient",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3939,
                                      "src": "35816:24:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 6504,
                                        "name": "execution",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6492,
                                        "src": "35844:9:33",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                          "typeString": "struct Execution memory"
                                        }
                                      },
                                      "id": 6505,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "offerer",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4072,
                                      "src": "35844:17:33",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "35816:45:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 6520,
                                    "nodeType": "Block",
                                    "src": "35998:172:33",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 6518,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "baseExpression": {
                                              "id": 6512,
                                              "name": "executions",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6452,
                                              "src": "36100:10:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct Execution memory[] memory"
                                              }
                                            },
                                            "id": 6516,
                                            "indexExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6515,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 6513,
                                                "name": "i",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6473,
                                                "src": "36111:1:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "-",
                                              "rightExpression": {
                                                "id": 6514,
                                                "name": "totalFilteredExecutions",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6469,
                                                "src": "36115:23:33",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "36111:27:33",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "36100:39:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                              "typeString": "struct Execution memory"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "id": 6517,
                                            "name": "execution",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6492,
                                            "src": "36142:9:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                              "typeString": "struct Execution memory"
                                            }
                                          },
                                          "src": "36100:51:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Execution_$4075_memory_ptr",
                                            "typeString": "struct Execution memory"
                                          }
                                        },
                                        "id": 6519,
                                        "nodeType": "ExpressionStatement",
                                        "src": "36100:51:33"
                                      }
                                    ]
                                  },
                                  "id": 6521,
                                  "nodeType": "IfStatement",
                                  "src": "35812:358:33",
                                  "trueBody": {
                                    "id": 6511,
                                    "nodeType": "Block",
                                    "src": "35863:129:33",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 6509,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 6507,
                                            "name": "totalFilteredExecutions",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6469,
                                            "src": "35945:23:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "hexValue": "31",
                                            "id": 6508,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "35972:1:33",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "35945:28:33",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 6510,
                                        "nodeType": "ExpressionStatement",
                                        "src": "35945:28:33"
                                      }
                                    ]
                                  }
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6478,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6476,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6473,
                                "src": "35261:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 6477,
                                "name": "totalFulfillments",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6455,
                                "src": "35265:17:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "35261:21:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6523,
                            "initializationExpression": {
                              "assignments": [
                                6473
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6473,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "35254:1:33",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6523,
                                  "src": "35246:9:33",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6472,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "35246:7:33",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6475,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 6474,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "35258:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "35246:13:33"
                            },
                            "loopExpression": {
                              "expression": {
                                "id": 6480,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "35284:3:33",
                                "subExpression": {
                                  "id": 6479,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6473,
                                  "src": "35286:1:33",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6481,
                              "nodeType": "ExpressionStatement",
                              "src": "35284:3:33"
                            },
                            "nodeType": "ForStatement",
                            "src": "35241:943:33"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6526,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6524,
                                "name": "totalFilteredExecutions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6469,
                                "src": "36268:23:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 6525,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "36295:1:33",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "36268:28:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6529,
                            "nodeType": "IfStatement",
                            "src": "36264:320:33",
                            "trueBody": {
                              "id": 6528,
                              "nodeType": "Block",
                              "src": "36298:286:33",
                              "statements": [
                                {
                                  "AST": {
                                    "nodeType": "YulBlock",
                                    "src": "36393:177:33",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "name": "executions",
                                              "nodeType": "YulIdentifier",
                                              "src": "36447:10:33"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "executions",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "36493:10:33"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "36487:5:33"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "36487:17:33"
                                                },
                                                {
                                                  "name": "totalFilteredExecutions",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "36506:23:33"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "sub",
                                                "nodeType": "YulIdentifier",
                                                "src": "36483:3:33"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "36483:47:33"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "36415:6:33"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "36415:137:33"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "36415:137:33"
                                      }
                                    ]
                                  },
                                  "evmVersion": "london",
                                  "externalReferences": [
                                    {
                                      "declaration": 6452,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "36447:10:33",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 6452,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "36493:10:33",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 6469,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "36506:23:33",
                                      "valueSize": 1
                                    }
                                  ],
                                  "id": 6527,
                                  "nodeType": "InlineAssembly",
                                  "src": "36384:186:33"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6532,
                              "name": "advancedOrders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6443,
                              "src": "36692:14:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              }
                            },
                            {
                              "id": 6533,
                              "name": "executions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6452,
                              "src": "36708:10:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct Execution memory[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct Execution memory[] memory"
                              }
                            ],
                            "id": 6531,
                            "name": "_performFinalChecksAndExecuteOrders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6404,
                            "src": "36656:35:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_bool_$dyn_memory_ptr_$",
                              "typeString": "function (struct AdvancedOrder memory[] memory,struct Execution memory[] memory) returns (bool[] memory)"
                            }
                          },
                          "id": 6534,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "36656:63:33",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bool_$dyn_memory_ptr",
                            "typeString": "bool[] memory"
                          }
                        },
                        "id": 6535,
                        "nodeType": "ExpressionStatement",
                        "src": "36656:63:33"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 6536,
                              "name": "executions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6452,
                              "src": "36778:10:33",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct Execution memory[] memory"
                              }
                            }
                          ],
                          "id": 6537,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "36777:12:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct Execution memory[] memory"
                          }
                        },
                        "functionReturnParameters": 6453,
                        "id": 6538,
                        "nodeType": "Return",
                        "src": "36770:19:33"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6439,
                    "nodeType": "StructuredDocumentation",
                    "src": "33627:903:33",
                    "text": " @dev Internal function to fulfill an arbitrary number of orders, either\n      full or partial, after validating, adjusting amounts, and applying\n      criteria resolvers.\n @param advancedOrders     The orders to match, including a fraction to\n                           attempt to fill for each order.\n @param fulfillments       An array of elements allocating offer\n                           components to consideration components. Note\n                           that the final amount of each consideration\n                           component must be zero for a match operation to\n                           be considered valid.\n @return executions An array of elements indicating the sequence of\n                    transfers performed as part of matching the given\n                    orders."
                  },
                  "id": 6540,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_fulfillAdvancedOrders",
                  "nameLocation": "34544:22:33",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6448,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6443,
                        "mutability": "mutable",
                        "name": "advancedOrders",
                        "nameLocation": "34599:14:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6540,
                        "src": "34576:37:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct AdvancedOrder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6441,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 6440,
                              "name": "AdvancedOrder",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4031,
                              "src": "34576:13:33"
                            },
                            "referencedDeclaration": 4031,
                            "src": "34576:13:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                              "typeString": "struct AdvancedOrder"
                            }
                          },
                          "id": 6442,
                          "nodeType": "ArrayTypeName",
                          "src": "34576:15:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                            "typeString": "struct AdvancedOrder[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6447,
                        "mutability": "mutable",
                        "name": "fulfillments",
                        "nameLocation": "34646:12:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6540,
                        "src": "34623:35:33",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct Fulfillment[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6445,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 6444,
                              "name": "Fulfillment",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4062,
                              "src": "34623:11:33"
                            },
                            "referencedDeclaration": 4062,
                            "src": "34623:11:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Fulfillment_$4062_storage_ptr",
                              "typeString": "struct Fulfillment"
                            }
                          },
                          "id": 6446,
                          "nodeType": "ArrayTypeName",
                          "src": "34623:13:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Fulfillment_$4062_storage_$dyn_storage_ptr",
                            "typeString": "struct Fulfillment[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34566:98:33"
                  },
                  "returnParameters": {
                    "id": 6453,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6452,
                        "mutability": "mutable",
                        "name": "executions",
                        "nameLocation": "34702:10:33",
                        "nodeType": "VariableDeclaration",
                        "scope": 6540,
                        "src": "34683:29:33",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Execution_$4075_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Execution[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6450,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 6449,
                              "name": "Execution",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4075,
                              "src": "34683:9:33"
                            },
                            "referencedDeclaration": 4075,
                            "src": "34683:9:33",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Execution_$4075_storage_ptr",
                              "typeString": "struct Execution"
                            }
                          },
                          "id": 6451,
                          "nodeType": "ArrayTypeName",
                          "src": "34683:11:33",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Execution_$4075_storage_$dyn_storage_ptr",
                            "typeString": "struct Execution[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "34682:31:33"
                  },
                  "scope": 6541,
                  "src": "34535:2261:33",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 6542,
              "src": "813:35985:33",
              "usedErrors": [
                1541,
                1856,
                1859,
                1866,
                1869,
                1874,
                1883,
                1886,
                1893,
                1896,
                1901,
                1906,
                1909,
                1912,
                1917,
                1920,
                1923,
                2150,
                2153,
                2156,
                2159,
                2162,
                2165,
                2168,
                2192,
                2195,
                2198,
                2201,
                2208,
                2217,
                2220,
                2223,
                2226,
                2233,
                2236,
                2249,
                2264,
                2275,
                2280,
                2289
              ]
            }
          ],
          "src": "32:36767:33"
        },
        "id": 33
      },
      "seaport/contracts/lib/OrderFulfiller.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/OrderFulfiller.sol",
          "exportedSymbols": {
            "AccumulatorArmed": [
              3772
            ],
            "AccumulatorDisarmed": [
              3769
            ],
            "Accumulator_array_length_ptr": [
              3784
            ],
            "Accumulator_array_offset": [
              3790
            ],
            "Accumulator_array_offset_ptr": [
              3781
            ],
            "Accumulator_conduitKey_ptr": [
              3775
            ],
            "Accumulator_itemSizeOffsetDifference": [
              3787
            ],
            "Accumulator_selector_ptr": [
              3778
            ],
            "AdditionalRecipients_size": [
              3530
            ],
            "AdvancedOrder": [
              4031
            ],
            "AdvancedOrder_numerator_offset": [
              3482
            ],
            "AmountDeriver": [
              2491
            ],
            "BasicOrderFulfiller": [
              3152
            ],
            "BasicOrder_additionalRecipients_data_cdPtr": [
              3621
            ],
            "BasicOrder_additionalRecipients_head_cdPtr": [
              3612
            ],
            "BasicOrder_additionalRecipients_head_ptr": [
              3678
            ],
            "BasicOrder_additionalRecipients_length_cdPtr": [
              3618
            ],
            "BasicOrder_basicOrderType_cdPtr": [
              3597
            ],
            "BasicOrder_considerationAmount_cdPtr": [
              3582
            ],
            "BasicOrder_considerationHashesArray_ptr": [
              3518
            ],
            "BasicOrder_considerationItem_endAmount_ptr": [
              3642
            ],
            "BasicOrder_considerationItem_identifier_ptr": [
              3636
            ],
            "BasicOrder_considerationItem_itemType_ptr": [
              3630
            ],
            "BasicOrder_considerationItem_startAmount_ptr": [
              3639
            ],
            "BasicOrder_considerationItem_token_ptr": [
              3633
            ],
            "BasicOrder_considerationItem_typeHash_ptr": [
              3627
            ],
            "BasicOrder_considerationToken_cdPtr": [
              3579
            ],
            "BasicOrder_endAmount_cdPtr": [
              3515
            ],
            "BasicOrder_fulfillerConduit_cdPtr": [
              3606
            ],
            "BasicOrder_offerAmount_cdPtr": [
              3594
            ],
            "BasicOrder_offerItem_endAmount_ptr": [
              3654
            ],
            "BasicOrder_offerItem_itemType_ptr": [
              3648
            ],
            "BasicOrder_offerItem_token_ptr": [
              3651
            ],
            "BasicOrder_offerItem_typeHash_ptr": [
              3645
            ],
            "BasicOrder_offerToken_cdPtr": [
              3591
            ],
            "BasicOrder_offererConduit_cdPtr": [
              3603
            ],
            "BasicOrder_offerer_cdPtr": [
              3585
            ],
            "BasicOrder_order_considerationHashes_ptr": [
              3666
            ],
            "BasicOrder_order_nonce_ptr": [
              3675
            ],
            "BasicOrder_order_offerHashes_ptr": [
              3663
            ],
            "BasicOrder_order_offerer_ptr": [
              3660
            ],
            "BasicOrder_order_orderType_ptr": [
              3669
            ],
            "BasicOrder_order_startTime_ptr": [
              3672
            ],
            "BasicOrder_order_typeHash_ptr": [
              3657
            ],
            "BasicOrder_parameters_cdPtr": [
              3576
            ],
            "BasicOrder_parameters_ptr": [
              3624
            ],
            "BasicOrder_signature_cdPtr": [
              3615
            ],
            "BasicOrder_signature_ptr": [
              3681
            ],
            "BasicOrder_startTime_cdPtr": [
              3600
            ],
            "BasicOrder_totalOriginalAdditionalRecipients_cdPtr": [
              3609
            ],
            "BasicOrder_zone_cdPtr": [
              3588
            ],
            "Common_amount_offset": [
              3413
            ],
            "Common_identifier_offset": [
              3410
            ],
            "Common_token_offset": [
              3407
            ],
            "Conduit_execute_ConduitTransfer_length": [
              3739
            ],
            "Conduit_execute_ConduitTransfer_length_ptr": [
              3745
            ],
            "Conduit_execute_ConduitTransfer_offset_ptr": [
              3742
            ],
            "Conduit_execute_ConduitTransfer_ptr": [
              3736
            ],
            "Conduit_execute_signature": [
              3733
            ],
            "Conduit_execute_transferAmount_ptr": [
              3763
            ],
            "Conduit_execute_transferFrom_ptr": [
              3754
            ],
            "Conduit_execute_transferIdentifier_ptr": [
              3760
            ],
            "Conduit_execute_transferItemType_ptr": [
              3748
            ],
            "Conduit_execute_transferTo_ptr": [
              3757
            ],
            "Conduit_execute_transferToken_ptr": [
              3751
            ],
            "Conduit_transferItem_amount_ptr": [
              3808
            ],
            "Conduit_transferItem_from_ptr": [
              3799
            ],
            "Conduit_transferItem_identifier_ptr": [
              3805
            ],
            "Conduit_transferItem_size": [
              3793
            ],
            "Conduit_transferItem_to_ptr": [
              3802
            ],
            "Conduit_transferItem_token_ptr": [
              3796
            ],
            "ConsiderItem_recipient_offset": [
              3431
            ],
            "ConsiderationItem": [
              3918
            ],
            "ConsiderationItem_recipient_offset": [
              3428
            ],
            "CostPerWord": [
              3708
            ],
            "Create2AddressDerivation_length": [
              3717
            ],
            "Create2AddressDerivation_ptr": [
              3714
            ],
            "CriteriaResolution": [
              4450
            ],
            "CriteriaResolver": [
              4053
            ],
            "DefaultFreeMemoryPointer": [
              3506
            ],
            "EIP2098_allButHighestBitMask": [
              3685
            ],
            "EIP712_ConsiderationItem_size": [
              3527
            ],
            "EIP712_DigestPayload_size": [
              3539
            ],
            "EIP712_DomainSeparator_offset": [
              3533
            ],
            "EIP712_OfferItem_size": [
              3524
            ],
            "EIP712_OrderHash_offset": [
              3536
            ],
            "EIP712_Order_size": [
              3521
            ],
            "EIP_712_PREFIX": [
              3702
            ],
            "Execution_conduit_offset": [
              3437
            ],
            "Execution_offerer_offset": [
              3434
            ],
            "ExtraGasBuffer": [
              3705
            ],
            "FiveWords": [
              3497
            ],
            "FourWords": [
              3494
            ],
            "FreeMemoryPointerSlot": [
              3500
            ],
            "Fulfillment_itemIndex_offset": [
              3479
            ],
            "InvalidFulfillmentComponentData_error_len": [
              3444
            ],
            "InvalidFulfillmentComponentData_error_signature": [
              3441
            ],
            "ItemType": [
              3854
            ],
            "MaskOverByteTwelve": [
              3721
            ],
            "MaskOverFirstFourBytes": [
              3729
            ],
            "MaskOverLastTwentyBytes": [
              3725
            ],
            "MemoryExpansionCoefficient": [
              3711
            ],
            "MissingItemAmount_error_len": [
              3464
            ],
            "MissingItemAmount_error_signature": [
              3461
            ],
            "NameLengthPtr": [
              3389
            ],
            "NameWithLength": [
              3392
            ],
            "NoContract_error_length": [
              3698
            ],
            "NoContract_error_sig_ptr": [
              3692
            ],
            "NoContract_error_signature": [
              3689
            ],
            "NoContract_error_token_ptr": [
              3695
            ],
            "OfferItem": [
              3904
            ],
            "OneConduitExecute_size": [
              3766
            ],
            "OneWord": [
              3485
            ],
            "Order": [
              4019
            ],
            "OrderFulfilled_baseOffset": [
              3552
            ],
            "OrderFulfilled_baseSize": [
              3545
            ],
            "OrderFulfilled_consideration_body_offset": [
              3573
            ],
            "OrderFulfilled_consideration_head_offset": [
              3570
            ],
            "OrderFulfilled_consideration_length_baseOffset": [
              3555
            ],
            "OrderFulfilled_fulfiller_offset": [
              3561
            ],
            "OrderFulfilled_offer_body_offset": [
              3567
            ],
            "OrderFulfilled_offer_head_offset": [
              3564
            ],
            "OrderFulfilled_offer_length_baseOffset": [
              3558
            ],
            "OrderFulfilled_selector": [
              3549
            ],
            "OrderFulfiller": [
              7063
            ],
            "OrderParameters": [
              4013
            ],
            "OrderParameters_conduit_offset": [
              3473
            ],
            "OrderParameters_consideration_head_offset": [
              3470
            ],
            "OrderParameters_nonce_offset": [
              3476
            ],
            "OrderParameters_offer_head_offset": [
              3467
            ],
            "OrderType": [
              3815
            ],
            "Panic_arithmetic": [
              3457
            ],
            "Panic_error_length": [
              3454
            ],
            "Panic_error_offset": [
              3451
            ],
            "Panic_error_signature": [
              3448
            ],
            "ReceivedItem": [
              3940
            ],
            "ReceivedItem_CommonParams_size": [
              3425
            ],
            "ReceivedItem_amount_offset": [
              3419
            ],
            "ReceivedItem_recipient_offset": [
              3422
            ],
            "ReceivedItem_size": [
              3416
            ],
            "Slot0x80": [
              3509
            ],
            "Slot0xA0": [
              3512
            ],
            "SpentItem": [
              3928
            ],
            "ThreeWords": [
              3491
            ],
            "TwoWords": [
              3488
            ],
            "Version": [
              3395
            ],
            "Version_length": [
              3398
            ],
            "ZeroSlot": [
              3503
            ],
            "_ENTERED": [
              3404
            ],
            "_NOT_ENTERED": [
              3401
            ],
            "receivedItemsHash_ptr": [
              3542
            ]
          },
          "id": 7064,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 6543,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:34"
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationEnums.sol",
              "file": "./ConsiderationEnums.sol",
              "id": 6546,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7064,
              "sourceUnit": 3858,
              "src": "57:63:34",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6544,
                    "name": "OrderType",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3815,
                    "src": "66:9:34",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 6545,
                    "name": "ItemType",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3854,
                    "src": "77:8:34",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationStructs.sol",
              "file": "./ConsiderationStructs.sol",
              "id": 6555,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7064,
              "sourceUnit": 4076,
              "src": "141:188:34",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6547,
                    "name": "OfferItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3904,
                    "src": "154:9:34",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 6548,
                    "name": "ConsiderationItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3918,
                    "src": "169:17:34",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 6549,
                    "name": "SpentItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3928,
                    "src": "192:9:34",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 6550,
                    "name": "ReceivedItem",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3940,
                    "src": "207:12:34",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 6551,
                    "name": "OrderParameters",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4013,
                    "src": "225:15:34",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 6552,
                    "name": "Order",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4019,
                    "src": "246:5:34",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 6553,
                    "name": "AdvancedOrder",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4031,
                    "src": "257:13:34",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 6554,
                    "name": "CriteriaResolver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4053,
                    "src": "276:16:34",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/BasicOrderFulfiller.sol",
              "file": "./BasicOrderFulfiller.sol",
              "id": 6557,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7064,
              "sourceUnit": 3153,
              "src": "331:64:34",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6556,
                    "name": "BasicOrderFulfiller",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3152,
                    "src": "340:19:34",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/CriteriaResolution.sol",
              "file": "./CriteriaResolution.sol",
              "id": 6559,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7064,
              "sourceUnit": 4451,
              "src": "397:62:34",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6558,
                    "name": "CriteriaResolution",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4450,
                    "src": "406:18:34",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/AmountDeriver.sol",
              "file": "./AmountDeriver.sol",
              "id": 6561,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7064,
              "sourceUnit": 2492,
              "src": "461:52:34",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 6560,
                    "name": "AmountDeriver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2491,
                    "src": "470:13:34",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationConstants.sol",
              "file": "./ConsiderationConstants.sol",
              "id": 6562,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7064,
              "sourceUnit": 3809,
              "src": "515:38:34",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 6564,
                    "name": "BasicOrderFulfiller",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 3152,
                    "src": "832:19:34"
                  },
                  "id": 6565,
                  "nodeType": "InheritanceSpecifier",
                  "src": "832:19:34"
                },
                {
                  "baseName": {
                    "id": 6566,
                    "name": "CriteriaResolution",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 4450,
                    "src": "857:18:34"
                  },
                  "id": 6567,
                  "nodeType": "InheritanceSpecifier",
                  "src": "857:18:34"
                },
                {
                  "baseName": {
                    "id": 6568,
                    "name": "AmountDeriver",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2491,
                    "src": "881:13:34"
                  },
                  "id": 6569,
                  "nodeType": "InheritanceSpecifier",
                  "src": "881:13:34"
                }
              ],
              "canonicalName": "OrderFulfiller",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 6563,
                "nodeType": "StructuredDocumentation",
                "src": "555:245:34",
                "text": " @title OrderFulfiller\n @author 0age\n @notice OrderFulfiller contains logic related to order fulfillment where a\n         single order is being fulfilled and where basic order fulfillment is\n         not available as an option."
              },
              "fullyImplemented": true,
              "id": 7063,
              "linearizedBaseContracts": [
                7063,
                2491,
                1542,
                4450,
                2169,
                3152,
                7714,
                8592,
                5018,
                7981,
                8379,
                7917,
                5505,
                2290,
                2227,
                2594,
                2281,
                5561,
                7768,
                2209,
                5465,
                3384,
                1924
              ],
              "name": "OrderFulfiller",
              "nameLocation": "810:14:34",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 6578,
                    "nodeType": "Block",
                    "src": "1344:2:34",
                    "statements": []
                  },
                  "documentation": {
                    "id": 6570,
                    "nodeType": "StructuredDocumentation",
                    "src": "901:348:34",
                    "text": " @dev Derive and set hashes, reference chainId, and associated domain\n      separator during deployment.\n @param conduitController A contract that deploys conduits, or proxies\n                          that may optionally be used to transfer approved\n                          ERC20/721/1155 tokens."
                  },
                  "id": 6579,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 6575,
                          "name": "conduitController",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6572,
                          "src": "1321:17:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 6576,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 6574,
                        "name": "BasicOrderFulfiller",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 3152,
                        "src": "1301:19:34"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1301:38:34"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6573,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6572,
                        "mutability": "mutable",
                        "name": "conduitController",
                        "nameLocation": "1274:17:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 6579,
                        "src": "1266:25:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6571,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1266:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1265:27:34"
                  },
                  "returnParameters": {
                    "id": 6577,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1344:0:34"
                  },
                  "scope": 7063,
                  "src": "1254:92:34",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 6675,
                    "nodeType": "Block",
                    "src": "3152:1849:34",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6594,
                            "name": "_setReentrancyGuard",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7745,
                            "src": "3239:19:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 6595,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3239:21:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6596,
                        "nodeType": "ExpressionStatement",
                        "src": "3239:21:34"
                      },
                      {
                        "assignments": [
                          6601
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6601,
                            "mutability": "mutable",
                            "name": "priorOrderHashes",
                            "nameLocation": "3356:16:34",
                            "nodeType": "VariableDeclaration",
                            "scope": 6675,
                            "src": "3339:33:34",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                              "typeString": "bytes32[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 6599,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "3339:7:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "id": 6600,
                              "nodeType": "ArrayTypeName",
                              "src": "3339:9:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                                "typeString": "bytes32[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6602,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3339:33:34"
                      },
                      {
                        "assignments": [
                          6604,
                          6606,
                          6608
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6604,
                            "mutability": "mutable",
                            "name": "orderHash",
                            "nameLocation": "3479:9:34",
                            "nodeType": "VariableDeclaration",
                            "scope": 6675,
                            "src": "3471:17:34",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 6603,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "3471:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6606,
                            "mutability": "mutable",
                            "name": "fillNumerator",
                            "nameLocation": "3510:13:34",
                            "nodeType": "VariableDeclaration",
                            "scope": 6675,
                            "src": "3502:21:34",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6605,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3502:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          },
                          {
                            "constant": false,
                            "id": 6608,
                            "mutability": "mutable",
                            "name": "fillDenominator",
                            "nameLocation": "3545:15:34",
                            "nodeType": "VariableDeclaration",
                            "scope": 6675,
                            "src": "3537:23:34",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6607,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "3537:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6615,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6610,
                              "name": "advancedOrder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6583,
                              "src": "3620:13:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                "typeString": "struct AdvancedOrder memory"
                              }
                            },
                            {
                              "id": 6611,
                              "name": "criteriaResolvers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6587,
                              "src": "3651:17:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct CriteriaResolver memory[] memory"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 6612,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3686:4:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "id": 6613,
                              "name": "priorOrderHashes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6601,
                              "src": "3708:16:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                "typeString": "struct AdvancedOrder memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct CriteriaResolver memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            ],
                            "id": 6609,
                            "name": "_validateOrderAndUpdateStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7441,
                            "src": "3573:29:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AdvancedOrder_$4031_memory_ptr_$_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr_$_t_bool_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_bytes32_$_t_uint256_$_t_uint256_$",
                              "typeString": "function (struct AdvancedOrder memory,struct CriteriaResolver memory[] memory,bool,bytes32[] memory) returns (bytes32,uint256,uint256)"
                            }
                          },
                          "id": 6614,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3573:165:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(bytes32,uint256,uint256)"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3457:281:34"
                      },
                      {
                        "assignments": [
                          6620
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6620,
                            "mutability": "mutable",
                            "name": "advancedOrders",
                            "nameLocation": "3835:14:34",
                            "nodeType": "VariableDeclaration",
                            "scope": 6675,
                            "src": "3812:37:34",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct AdvancedOrder[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 6618,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 6617,
                                  "name": "AdvancedOrder",
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 4031,
                                  "src": "3812:13:34"
                                },
                                "referencedDeclaration": 4031,
                                "src": "3812:13:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                                  "typeString": "struct AdvancedOrder"
                                }
                              },
                              "id": 6619,
                              "nodeType": "ArrayTypeName",
                              "src": "3812:15:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                                "typeString": "struct AdvancedOrder[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6627,
                        "initialValue": {
                          "arguments": [
                            {
                              "hexValue": "31",
                              "id": 6625,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3872:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              }
                            ],
                            "id": 6624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "3852:19:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (struct AdvancedOrder memory[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 6622,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 6621,
                                  "name": "AdvancedOrder",
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 4031,
                                  "src": "3856:13:34"
                                },
                                "referencedDeclaration": 4031,
                                "src": "3856:13:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                                  "typeString": "struct AdvancedOrder"
                                }
                              },
                              "id": 6623,
                              "nodeType": "ArrayTypeName",
                              "src": "3856:15:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                                "typeString": "struct AdvancedOrder[]"
                              }
                            }
                          },
                          "id": 6626,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3852:22:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct AdvancedOrder memory[] memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3812:62:34"
                      },
                      {
                        "expression": {
                          "id": 6632,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 6628,
                              "name": "advancedOrders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6620,
                              "src": "3963:14:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              }
                            },
                            "id": 6630,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 6629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3978:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "3963:17:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                              "typeString": "struct AdvancedOrder memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 6631,
                            "name": "advancedOrder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6583,
                            "src": "3983:13:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                              "typeString": "struct AdvancedOrder memory"
                            }
                          },
                          "src": "3963:33:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                            "typeString": "struct AdvancedOrder memory"
                          }
                        },
                        "id": 6633,
                        "nodeType": "ExpressionStatement",
                        "src": "3963:33:34"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6635,
                              "name": "advancedOrders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6620,
                              "src": "4110:14:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              }
                            },
                            {
                              "id": 6636,
                              "name": "criteriaResolvers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6587,
                              "src": "4126:17:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct CriteriaResolver memory[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct CriteriaResolver memory[] memory"
                              }
                            ],
                            "id": 6634,
                            "name": "_applyCriteriaResolvers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4415,
                            "src": "4086:23:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (struct AdvancedOrder memory[] memory,struct CriteriaResolver memory[] memory) pure"
                            }
                          },
                          "id": 6637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4086:58:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6638,
                        "nodeType": "ExpressionStatement",
                        "src": "4086:58:34"
                      },
                      {
                        "assignments": [
                          6641
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6641,
                            "mutability": "mutable",
                            "name": "orderParameters",
                            "nameLocation": "4254:15:34",
                            "nodeType": "VariableDeclaration",
                            "scope": 6675,
                            "src": "4231:38:34",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                              "typeString": "struct OrderParameters"
                            },
                            "typeName": {
                              "id": 6640,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 6639,
                                "name": "OrderParameters",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4013,
                                "src": "4231:15:34"
                              },
                              "referencedDeclaration": 4013,
                              "src": "4231:15:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderParameters_$4013_storage_ptr",
                                "typeString": "struct OrderParameters"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6646,
                        "initialValue": {
                          "expression": {
                            "baseExpression": {
                              "id": 6642,
                              "name": "advancedOrders",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6620,
                              "src": "4272:14:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct AdvancedOrder memory[] memory"
                              }
                            },
                            "id": 6644,
                            "indexExpression": {
                              "hexValue": "30",
                              "id": 6643,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4287:1:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "4272:17:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                              "typeString": "struct AdvancedOrder memory"
                            }
                          },
                          "id": 6645,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "parameters",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4022,
                          "src": "4272:28:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                            "typeString": "struct OrderParameters memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4231:69:34"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6648,
                              "name": "orderParameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6641,
                              "src": "4433:15:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                "typeString": "struct OrderParameters memory"
                              }
                            },
                            {
                              "id": 6649,
                              "name": "fillNumerator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6606,
                              "src": "4462:13:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 6650,
                              "name": "fillDenominator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6608,
                              "src": "4489:15:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 6651,
                                "name": "orderParameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6641,
                                "src": "4518:15:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                  "typeString": "struct OrderParameters memory"
                                }
                              },
                              "id": 6652,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "conduitKey",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4010,
                              "src": "4518:26:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 6653,
                              "name": "fulfillerConduitKey",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6589,
                              "src": "4558:19:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                "typeString": "struct OrderParameters memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 6647,
                            "name": "_applyFractionsAndTransferEach",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6943,
                            "src": "4389:30:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OrderParameters_$4013_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (struct OrderParameters memory,uint256,uint256,bytes32,bytes32)"
                            }
                          },
                          "id": 6654,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4389:198:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6655,
                        "nodeType": "ExpressionStatement",
                        "src": "4389:198:34"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6657,
                              "name": "orderHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6604,
                              "src": "4707:9:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 6658,
                                "name": "orderParameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6641,
                                "src": "4730:15:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                  "typeString": "struct OrderParameters memory"
                                }
                              },
                              "id": 6659,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "offerer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3987,
                              "src": "4730:23:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 6660,
                                "name": "orderParameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6641,
                                "src": "4767:15:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                  "typeString": "struct OrderParameters memory"
                                }
                              },
                              "id": 6661,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "zone",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3989,
                              "src": "4767:20:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 6662,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4801:3:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6663,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4801:10:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 6664,
                                "name": "orderParameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6641,
                                "src": "4825:15:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                  "typeString": "struct OrderParameters memory"
                                }
                              },
                              "id": 6665,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "offer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3993,
                              "src": "4825:21:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct OfferItem memory[] memory"
                              }
                            },
                            {
                              "expression": {
                                "id": 6666,
                                "name": "orderParameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6641,
                                "src": "4860:15:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                  "typeString": "struct OrderParameters memory"
                                }
                              },
                              "id": 6667,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "consideration",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3997,
                              "src": "4860:29:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct ConsiderationItem memory[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct OfferItem memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct ConsiderationItem memory[] memory"
                              }
                            ],
                            "id": 6656,
                            "name": "_emitOrderFulfilledEvent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6987,
                            "src": "4669:24:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,address,address,address,struct OfferItem memory[] memory,struct ConsiderationItem memory[] memory)"
                            }
                          },
                          "id": 6668,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4669:230:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6669,
                        "nodeType": "ExpressionStatement",
                        "src": "4669:230:34"
                      },
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6670,
                            "name": "_clearReentrancyGuard",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7754,
                            "src": "4949:21:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                              "typeString": "function ()"
                            }
                          },
                          "id": 6671,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4949:23:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6672,
                        "nodeType": "ExpressionStatement",
                        "src": "4949:23:34"
                      },
                      {
                        "expression": {
                          "hexValue": "74727565",
                          "id": 6673,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4990:4:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "functionReturnParameters": 6593,
                        "id": 6674,
                        "nodeType": "Return",
                        "src": "4983:11:34"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6580,
                    "nodeType": "StructuredDocumentation",
                    "src": "1352:1589:34",
                    "text": " @dev Internal function to validate an order and update its status, adjust\n      prices based on current time, apply criteria resolvers, determine\n      what portion to fill, and transfer relevant tokens.\n @param advancedOrder       The order to fulfill as well as the fraction\n                            to fill. Note that all offer and consideration\n                            components must divide with no remainder for\n                            the partial fill to be valid.\n @param criteriaResolvers   An array where each element contains a\n                            reference to a specific offer or\n                            consideration, a token identifier, and a proof\n                            that the supplied token identifier is\n                            contained in the order's merkle root. Note\n                            that a criteria of zero indicates that any\n                            (transferrable) token identifier is valid and\n                            that no proof needs to be supplied.\n @param fulfillerConduitKey A bytes32 value indicating what conduit, if\n                            any, to source the fulfiller's token approvals\n                            from. The zero hash signifies that no conduit\n                            should be used, with direct approvals set on\n                            Consideration.\n @return A boolean indicating whether the order has been fulfilled."
                  },
                  "id": 6676,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_validateAndFulfillAdvancedOrder",
                  "nameLocation": "2955:32:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6590,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6583,
                        "mutability": "mutable",
                        "name": "advancedOrder",
                        "nameLocation": "3018:13:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 6676,
                        "src": "2997:34:34",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                          "typeString": "struct AdvancedOrder"
                        },
                        "typeName": {
                          "id": 6582,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6581,
                            "name": "AdvancedOrder",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4031,
                            "src": "2997:13:34"
                          },
                          "referencedDeclaration": 4031,
                          "src": "2997:13:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                            "typeString": "struct AdvancedOrder"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6587,
                        "mutability": "mutable",
                        "name": "criteriaResolvers",
                        "nameLocation": "3067:17:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 6676,
                        "src": "3041:43:34",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct CriteriaResolver[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6585,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 6584,
                              "name": "CriteriaResolver",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4053,
                              "src": "3041:16:34"
                            },
                            "referencedDeclaration": 4053,
                            "src": "3041:16:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                              "typeString": "struct CriteriaResolver"
                            }
                          },
                          "id": 6586,
                          "nodeType": "ArrayTypeName",
                          "src": "3041:18:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_storage_$dyn_storage_ptr",
                            "typeString": "struct CriteriaResolver[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6589,
                        "mutability": "mutable",
                        "name": "fulfillerConduitKey",
                        "nameLocation": "3102:19:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 6676,
                        "src": "3094:27:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6588,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "3094:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2987:140:34"
                  },
                  "returnParameters": {
                    "id": 6593,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6592,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 6676,
                        "src": "3146:4:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 6591,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "3146:4:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "3145:6:34"
                  },
                  "scope": 7063,
                  "src": "2946:2055:34",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6942,
                    "nodeType": "Block",
                    "src": "6464:9472:34",
                    "statements": [
                      {
                        "assignments": [
                          6692
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6692,
                            "mutability": "mutable",
                            "name": "duration",
                            "nameLocation": "6550:8:34",
                            "nodeType": "VariableDeclaration",
                            "scope": 6942,
                            "src": "6542:16:34",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6691,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6542:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6698,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 6693,
                              "name": "orderParameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6680,
                              "src": "6561:15:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                "typeString": "struct OrderParameters memory"
                              }
                            },
                            "id": 6694,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "endTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4004,
                            "src": "6561:23:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "expression": {
                              "id": 6695,
                              "name": "orderParameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6680,
                              "src": "6587:15:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                "typeString": "struct OrderParameters memory"
                              }
                            },
                            "id": 6696,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "startTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4002,
                            "src": "6587:25:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6561:51:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6542:70:34"
                      },
                      {
                        "assignments": [
                          6700
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6700,
                            "mutability": "mutable",
                            "name": "elapsed",
                            "nameLocation": "6630:7:34",
                            "nodeType": "VariableDeclaration",
                            "scope": 6942,
                            "src": "6622:15:34",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6699,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6622:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6706,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6705,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 6701,
                              "name": "block",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -4,
                              "src": "6640:5:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_block",
                                "typeString": "block"
                              }
                            },
                            "id": 6702,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "timestamp",
                            "nodeType": "MemberAccess",
                            "src": "6640:15:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "expression": {
                              "id": 6703,
                              "name": "orderParameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6680,
                              "src": "6658:15:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                "typeString": "struct OrderParameters memory"
                              }
                            },
                            "id": 6704,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "startTime",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4002,
                            "src": "6658:25:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6640:43:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6622:61:34"
                      },
                      {
                        "assignments": [
                          6708
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6708,
                            "mutability": "mutable",
                            "name": "remaining",
                            "nameLocation": "6701:9:34",
                            "nodeType": "VariableDeclaration",
                            "scope": 6942,
                            "src": "6693:17:34",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6707,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6693:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6712,
                        "initialValue": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6709,
                            "name": "duration",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6692,
                            "src": "6713:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 6710,
                            "name": "elapsed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6700,
                            "src": "6724:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6713:18:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6693:38:34"
                      },
                      {
                        "assignments": [
                          6714
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6714,
                            "mutability": "mutable",
                            "name": "etherRemaining",
                            "nameLocation": "6814:14:34",
                            "nodeType": "VariableDeclaration",
                            "scope": 6942,
                            "src": "6806:22:34",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6713,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "6806:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6717,
                        "initialValue": {
                          "expression": {
                            "id": 6715,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "6831:3:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 6716,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "src": "6831:9:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6806:34:34"
                      },
                      {
                        "assignments": [
                          6719
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6719,
                            "mutability": "mutable",
                            "name": "accumulator",
                            "nameLocation": "7214:11:34",
                            "nodeType": "VariableDeclaration",
                            "scope": 6942,
                            "src": "7201:24:34",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 6718,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "7201:5:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6724,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 6722,
                              "name": "AccumulatorDisarmed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3769,
                              "src": "7238:19:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6721,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "7228:9:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (bytes memory)"
                            },
                            "typeName": {
                              "id": 6720,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "7232:5:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            }
                          },
                          "id": 6723,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7228:30:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7201:57:34"
                      },
                      {
                        "documentation": " Repurpose existing OfferItem memory regions on the offer array for\n the order by overriding the _transfer function pointer to accept a\n modified OfferItem argument in place of the usual ReceivedItem:\n   ========= OfferItem ==========   ====== ReceivedItem ======\n   ItemType itemType; ------------> ItemType itemType;\n   address token; ----------------> address token;\n   uint256 identifierOrCriteria; -> uint256 identifier;\n   uint256 startAmount; ----------> uint256 amount;\n   uint256 endAmount; ------------> address recipient;",
                        "id": 6823,
                        "nodeType": "Block",
                        "src": "8464:2946:34",
                        "statements": [
                          {
                            "assignments": [
                              6737
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6737,
                                "mutability": "mutable",
                                "name": "_transferOfferItem",
                                "nameLocation": "8642:18:34",
                                "nodeType": "VariableDeclaration",
                                "scope": 6823,
                                "src": "8558:102:34",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OfferItem_$3904_memory_ptr_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                  "typeString": "function (struct OfferItem,address,bytes32,bytes)"
                                },
                                "typeName": {
                                  "id": 6736,
                                  "nodeType": "FunctionTypeName",
                                  "parameterTypes": {
                                    "id": 6734,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 6727,
                                        "mutability": "mutable",
                                        "name": "",
                                        "nameLocation": "-1:-1:-1",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 6736,
                                        "src": "8567:16:34",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                          "typeString": "struct OfferItem"
                                        },
                                        "typeName": {
                                          "id": 6726,
                                          "nodeType": "UserDefinedTypeName",
                                          "pathNode": {
                                            "id": 6725,
                                            "name": "OfferItem",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 3904,
                                            "src": "8567:9:34"
                                          },
                                          "referencedDeclaration": 3904,
                                          "src": "8567:9:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_OfferItem_$3904_storage_ptr",
                                            "typeString": "struct OfferItem"
                                          }
                                        },
                                        "visibility": "internal"
                                      },
                                      {
                                        "constant": false,
                                        "id": 6729,
                                        "mutability": "mutable",
                                        "name": "",
                                        "nameLocation": "-1:-1:-1",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 6736,
                                        "src": "8585:7:34",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        "typeName": {
                                          "id": 6728,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8585:7:34",
                                          "stateMutability": "nonpayable",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "visibility": "internal"
                                      },
                                      {
                                        "constant": false,
                                        "id": 6731,
                                        "mutability": "mutable",
                                        "name": "",
                                        "nameLocation": "-1:-1:-1",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 6736,
                                        "src": "8594:7:34",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        "typeName": {
                                          "id": 6730,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8594:7:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "visibility": "internal"
                                      },
                                      {
                                        "constant": false,
                                        "id": 6733,
                                        "mutability": "mutable",
                                        "name": "",
                                        "nameLocation": "-1:-1:-1",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 6736,
                                        "src": "8603:12:34",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes"
                                        },
                                        "typeName": {
                                          "id": 6732,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "8603:5:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "8566:50:34"
                                  },
                                  "returnParameterTypes": {
                                    "id": 6735,
                                    "nodeType": "ParameterList",
                                    "parameters": [],
                                    "src": "8642:0:34"
                                  },
                                  "src": "8558:102:34",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OfferItem_$3904_memory_ptr_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (struct OfferItem,address,bytes32,bytes)"
                                  },
                                  "visibility": "internal"
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6738,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "8558:102:34"
                          },
                          {
                            "id": 6755,
                            "nodeType": "Block",
                            "src": "8675:561:34",
                            "statements": [
                              {
                                "assignments": [
                                  6751
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 6751,
                                    "mutability": "mutable",
                                    "name": "_transferReceivedItem",
                                    "nameLocation": "8924:21:34",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6755,
                                    "src": "8833:112:34",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReceivedItem_$3940_memory_ptr_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                      "typeString": "function (struct ReceivedItem,address,bytes32,bytes)"
                                    },
                                    "typeName": {
                                      "id": 6750,
                                      "nodeType": "FunctionTypeName",
                                      "parameterTypes": {
                                        "id": 6748,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                          {
                                            "constant": false,
                                            "id": 6741,
                                            "mutability": "mutable",
                                            "name": "",
                                            "nameLocation": "-1:-1:-1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6750,
                                            "src": "8842:19:34",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                              "typeString": "struct ReceivedItem"
                                            },
                                            "typeName": {
                                              "id": 6740,
                                              "nodeType": "UserDefinedTypeName",
                                              "pathNode": {
                                                "id": 6739,
                                                "name": "ReceivedItem",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3940,
                                                "src": "8842:12:34"
                                              },
                                              "referencedDeclaration": 3940,
                                              "src": "8842:12:34",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ReceivedItem_$3940_storage_ptr",
                                                "typeString": "struct ReceivedItem"
                                              }
                                            },
                                            "visibility": "internal"
                                          },
                                          {
                                            "constant": false,
                                            "id": 6743,
                                            "mutability": "mutable",
                                            "name": "",
                                            "nameLocation": "-1:-1:-1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6750,
                                            "src": "8863:7:34",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            "typeName": {
                                              "id": 6742,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "8863:7:34",
                                              "stateMutability": "nonpayable",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            "visibility": "internal"
                                          },
                                          {
                                            "constant": false,
                                            "id": 6745,
                                            "mutability": "mutable",
                                            "name": "",
                                            "nameLocation": "-1:-1:-1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6750,
                                            "src": "8872:7:34",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            "typeName": {
                                              "id": 6744,
                                              "name": "bytes32",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "8872:7:34",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "visibility": "internal"
                                          },
                                          {
                                            "constant": false,
                                            "id": 6747,
                                            "mutability": "mutable",
                                            "name": "",
                                            "nameLocation": "-1:-1:-1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6750,
                                            "src": "8881:12:34",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes"
                                            },
                                            "typeName": {
                                              "id": 6746,
                                              "name": "bytes",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "8881:5:34",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                "typeString": "bytes"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "src": "8841:53:34"
                                      },
                                      "returnParameterTypes": {
                                        "id": 6749,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "8924:0:34"
                                      },
                                      "src": "8833:112:34",
                                      "stateMutability": "nonpayable",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReceivedItem_$3940_memory_ptr_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                        "typeString": "function (struct ReceivedItem,address,bytes32,bytes)"
                                      },
                                      "visibility": "internal"
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 6753,
                                "initialValue": {
                                  "id": 6752,
                                  "name": "_transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4565,
                                  "src": "8948:9:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReceivedItem_$3940_memory_ptr_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (struct ReceivedItem memory,address,bytes32,bytes memory)"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "8833:124:34"
                              },
                              {
                                "AST": {
                                  "nodeType": "YulBlock",
                                  "src": "9063:159:34",
                                  "statements": [
                                    {
                                      "nodeType": "YulAssignment",
                                      "src": "9161:43:34",
                                      "value": {
                                        "name": "_transferReceivedItem",
                                        "nodeType": "YulIdentifier",
                                        "src": "9183:21:34"
                                      },
                                      "variableNames": [
                                        {
                                          "name": "_transferOfferItem",
                                          "nodeType": "YulIdentifier",
                                          "src": "9161:18:34"
                                        }
                                      ]
                                    }
                                  ]
                                },
                                "evmVersion": "london",
                                "externalReferences": [
                                  {
                                    "declaration": 6737,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "9161:18:34",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 6751,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "9183:21:34",
                                    "valueSize": 1
                                  }
                                ],
                                "id": 6754,
                                "nodeType": "InlineAssembly",
                                "src": "9054:168:34"
                              }
                            ]
                          },
                          {
                            "body": {
                              "id": 6821,
                              "nodeType": "Block",
                              "src": "9359:2041:34",
                              "statements": [
                                {
                                  "assignments": [
                                    6767
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 6767,
                                      "mutability": "mutable",
                                      "name": "offerItem",
                                      "nameLocation": "9438:9:34",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6821,
                                      "src": "9421:26:34",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                        "typeString": "struct OfferItem"
                                      },
                                      "typeName": {
                                        "id": 6766,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 6765,
                                          "name": "OfferItem",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 3904,
                                          "src": "9421:9:34"
                                        },
                                        "referencedDeclaration": 3904,
                                        "src": "9421:9:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OfferItem_$3904_storage_ptr",
                                          "typeString": "struct OfferItem"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 6772,
                                  "initialValue": {
                                    "baseExpression": {
                                      "expression": {
                                        "id": 6768,
                                        "name": "orderParameters",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6680,
                                        "src": "9450:15:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                          "typeString": "struct OrderParameters memory"
                                        }
                                      },
                                      "id": 6769,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "offer",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3993,
                                      "src": "9450:21:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct OfferItem memory[] memory"
                                      }
                                    },
                                    "id": 6771,
                                    "indexExpression": {
                                      "id": 6770,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6757,
                                      "src": "9472:1:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9450:24:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                      "typeString": "struct OfferItem memory"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "9421:53:34"
                                },
                                {
                                  "assignments": [
                                    6774
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 6774,
                                      "mutability": "mutable",
                                      "name": "amount",
                                      "nameLocation": "9581:6:34",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6821,
                                      "src": "9573:14:34",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 6773,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9573:7:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 6787,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 6776,
                                          "name": "offerItem",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6767,
                                          "src": "9626:9:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                            "typeString": "struct OfferItem memory"
                                          }
                                        },
                                        "id": 6777,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "startAmount",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3901,
                                        "src": "9626:21:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 6778,
                                          "name": "offerItem",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6767,
                                          "src": "9669:9:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                            "typeString": "struct OfferItem memory"
                                          }
                                        },
                                        "id": 6779,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "endAmount",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3903,
                                        "src": "9669:19:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6780,
                                        "name": "numerator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6682,
                                        "src": "9710:9:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6781,
                                        "name": "denominator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6684,
                                        "src": "9741:11:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6782,
                                        "name": "elapsed",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6700,
                                        "src": "9774:7:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6783,
                                        "name": "remaining",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6708,
                                        "src": "9803:9:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6784,
                                        "name": "duration",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6692,
                                        "src": "9834:8:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "hexValue": "66616c7365",
                                        "id": 6785,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9864:5:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 6775,
                                      "name": "_applyFraction",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2490,
                                      "src": "9590:14:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool) pure returns (uint256)"
                                      }
                                    },
                                    "id": 6786,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9590:297:34",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "9573:314:34"
                                },
                                {
                                  "AST": {
                                    "nodeType": "YulBlock",
                                    "src": "9990:413:34",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "offerItem",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10104:9:34"
                                                },
                                                {
                                                  "name": "ReceivedItem_amount_offset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10115:26:34"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "10100:3:34"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10100:42:34"
                                            },
                                            {
                                              "name": "amount",
                                              "nodeType": "YulIdentifier",
                                              "src": "10144:6:34"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10093:6:34"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10093:58:34"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "10093:58:34"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "offerItem",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10288:9:34"
                                                },
                                                {
                                                  "name": "ReceivedItem_recipient_offset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "10299:29:34"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "10284:3:34"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10284:45:34"
                                            },
                                            {
                                              "arguments": [],
                                              "functionName": {
                                                "name": "caller",
                                                "nodeType": "YulIdentifier",
                                                "src": "10355:6:34"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "10355:8:34"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "10252:6:34"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "10252:133:34"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "10252:133:34"
                                      }
                                    ]
                                  },
                                  "evmVersion": "london",
                                  "externalReferences": [
                                    {
                                      "declaration": 3419,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "10115:26:34",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 3422,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "10299:29:34",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 6774,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "10144:6:34",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 6767,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "10104:9:34",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 6767,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "10288:9:34",
                                      "valueSize": 1
                                    }
                                  ],
                                  "id": 6788,
                                  "nodeType": "InlineAssembly",
                                  "src": "9981:422:34"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_ItemType_$3854",
                                      "typeString": "enum ItemType"
                                    },
                                    "id": 6793,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 6789,
                                        "name": "offerItem",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6767,
                                        "src": "10505:9:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                          "typeString": "struct OfferItem memory"
                                        }
                                      },
                                      "id": 6790,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "itemType",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3895,
                                      "src": "10505:18:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ItemType_$3854",
                                        "typeString": "enum ItemType"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 6791,
                                        "name": "ItemType",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3854,
                                        "src": "10527:8:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ItemType_$3854_$",
                                          "typeString": "type(enum ItemType)"
                                        }
                                      },
                                      "id": 6792,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "NATIVE",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3848,
                                      "src": "10527:15:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ItemType_$3854",
                                        "typeString": "enum ItemType"
                                      }
                                    },
                                    "src": "10505:37:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 6808,
                                  "nodeType": "IfStatement",
                                  "src": "10501:461:34",
                                  "trueBody": {
                                    "id": 6807,
                                    "nodeType": "Block",
                                    "src": "10544:418:34",
                                    "statements": [
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6796,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 6794,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6774,
                                            "src": "10651:6:34",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "id": 6795,
                                            "name": "etherRemaining",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6714,
                                            "src": "10660:14:34",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "10651:23:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 6801,
                                        "nodeType": "IfStatement",
                                        "src": "10647:112:34",
                                        "trueBody": {
                                          "id": 6800,
                                          "nodeType": "Block",
                                          "src": "10676:83:34",
                                          "statements": [
                                            {
                                              "errorCall": {
                                                "arguments": [],
                                                "expression": {
                                                  "argumentTypes": [],
                                                  "id": 6797,
                                                  "name": "InsufficientEtherSupplied",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1886,
                                                  "src": "10709:25:34",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                                    "typeString": "function () pure"
                                                  }
                                                },
                                                "id": 6798,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "10709:27:34",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 6799,
                                              "nodeType": "RevertStatement",
                                              "src": "10702:34:34"
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "id": 6806,
                                        "nodeType": "UncheckedBlock",
                                        "src": "10861:83:34",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 6804,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 6802,
                                                "name": "etherRemaining",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6714,
                                                "src": "10897:14:34",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "-=",
                                              "rightHandSide": {
                                                "id": 6803,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6774,
                                                "src": "10915:6:34",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "10897:24:34",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 6805,
                                            "nodeType": "ExpressionStatement",
                                            "src": "10897:24:34"
                                          }
                                        ]
                                      }
                                    ]
                                  }
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 6810,
                                        "name": "offerItem",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6767,
                                        "src": "11089:9:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                          "typeString": "struct OfferItem memory"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 6811,
                                          "name": "orderParameters",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6680,
                                          "src": "11120:15:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                            "typeString": "struct OrderParameters memory"
                                          }
                                        },
                                        "id": 6812,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "offerer",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3987,
                                        "src": "11120:23:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 6813,
                                        "name": "offererConduitKey",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6686,
                                        "src": "11165:17:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "id": 6814,
                                        "name": "accumulator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6719,
                                        "src": "11204:11:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_struct$_OfferItem_$3904_memory_ptr",
                                          "typeString": "struct OfferItem memory"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 6809,
                                      "name": "_transferOfferItem",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6737,
                                      "src": "11049:18:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_OfferItem_$3904_memory_ptr_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                        "typeString": "function (struct OfferItem memory,address,bytes32,bytes memory)"
                                      }
                                    },
                                    "id": 6815,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11049:184:34",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6816,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11049:184:34"
                                },
                                {
                                  "id": 6820,
                                  "nodeType": "UncheckedBlock",
                                  "src": "11332:54:34",
                                  "statements": [
                                    {
                                      "expression": {
                                        "id": 6818,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "++",
                                        "prefix": true,
                                        "src": "11364:3:34",
                                        "subExpression": {
                                          "id": 6817,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6757,
                                          "src": "11366:1:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 6819,
                                      "nodeType": "ExpressionStatement",
                                      "src": "11364:3:34"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6764,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6760,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6757,
                                "src": "9323:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "expression": {
                                  "expression": {
                                    "id": 6761,
                                    "name": "orderParameters",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6680,
                                    "src": "9327:15:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                      "typeString": "struct OrderParameters memory"
                                    }
                                  },
                                  "id": 6762,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "offer",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3993,
                                  "src": "9327:21:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct OfferItem memory[] memory"
                                  }
                                },
                                "id": 6763,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "9327:28:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9323:32:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6822,
                            "initializationExpression": {
                              "assignments": [
                                6757
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6757,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "9316:1:34",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6822,
                                  "src": "9308:9:34",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6756,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9308:7:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6759,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 6758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9320:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9308:13:34"
                            },
                            "nodeType": "ForStatement",
                            "src": "9303:2097:34"
                          }
                        ]
                      },
                      {
                        "documentation": " Repurpose existing ConsiderationItem memory regions on the\n consideration array for the order by overriding the _transfer\n function pointer to accept a modified ConsiderationItem argument in\n place of the usual ReceivedItem:\n   ====== ConsiderationItem =====   ====== ReceivedItem ======\n   ItemType itemType; ------------> ItemType itemType;\n   address token; ----------------> address token;\n   uint256 identifierOrCriteria;--> uint256 identifier;\n   uint256 startAmount; ----------> uint256 amount;\n   uint256 endAmount;        /----> address recipient;\n   address recipient; ------/",
                        "id": 6923,
                        "nodeType": "Block",
                        "src": "12213:3395:34",
                        "statements": [
                          {
                            "assignments": [
                              6836
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6836,
                                "mutability": "mutable",
                                "name": "_transferConsiderationItem",
                                "nameLocation": "12400:26:34",
                                "nodeType": "VariableDeclaration",
                                "scope": 6923,
                                "src": "12308:118:34",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ConsiderationItem_$3918_memory_ptr_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                  "typeString": "function (struct ConsiderationItem,address,bytes32,bytes)"
                                },
                                "typeName": {
                                  "id": 6835,
                                  "nodeType": "FunctionTypeName",
                                  "parameterTypes": {
                                    "id": 6833,
                                    "nodeType": "ParameterList",
                                    "parameters": [
                                      {
                                        "constant": false,
                                        "id": 6826,
                                        "mutability": "mutable",
                                        "name": "",
                                        "nameLocation": "-1:-1:-1",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 6835,
                                        "src": "12317:24:34",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                          "typeString": "struct ConsiderationItem"
                                        },
                                        "typeName": {
                                          "id": 6825,
                                          "nodeType": "UserDefinedTypeName",
                                          "pathNode": {
                                            "id": 6824,
                                            "name": "ConsiderationItem",
                                            "nodeType": "IdentifierPath",
                                            "referencedDeclaration": 3918,
                                            "src": "12317:17:34"
                                          },
                                          "referencedDeclaration": 3918,
                                          "src": "12317:17:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ConsiderationItem_$3918_storage_ptr",
                                            "typeString": "struct ConsiderationItem"
                                          }
                                        },
                                        "visibility": "internal"
                                      },
                                      {
                                        "constant": false,
                                        "id": 6828,
                                        "mutability": "mutable",
                                        "name": "",
                                        "nameLocation": "-1:-1:-1",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 6835,
                                        "src": "12343:7:34",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        "typeName": {
                                          "id": 6827,
                                          "name": "address",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "12343:7:34",
                                          "stateMutability": "nonpayable",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        "visibility": "internal"
                                      },
                                      {
                                        "constant": false,
                                        "id": 6830,
                                        "mutability": "mutable",
                                        "name": "",
                                        "nameLocation": "-1:-1:-1",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 6835,
                                        "src": "12352:7:34",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        "typeName": {
                                          "id": 6829,
                                          "name": "bytes32",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "12352:7:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "visibility": "internal"
                                      },
                                      {
                                        "constant": false,
                                        "id": 6832,
                                        "mutability": "mutable",
                                        "name": "",
                                        "nameLocation": "-1:-1:-1",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 6835,
                                        "src": "12361:12:34",
                                        "stateVariable": false,
                                        "storageLocation": "memory",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes"
                                        },
                                        "typeName": {
                                          "id": 6831,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "12361:5:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "src": "12316:58:34"
                                  },
                                  "returnParameterTypes": {
                                    "id": 6834,
                                    "nodeType": "ParameterList",
                                    "parameters": [],
                                    "src": "12400:0:34"
                                  },
                                  "src": "12308:118:34",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ConsiderationItem_$3918_memory_ptr_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (struct ConsiderationItem,address,bytes32,bytes)"
                                  },
                                  "visibility": "internal"
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 6837,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "12308:118:34"
                          },
                          {
                            "id": 6854,
                            "nodeType": "Block",
                            "src": "12440:569:34",
                            "statements": [
                              {
                                "assignments": [
                                  6850
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 6850,
                                    "mutability": "mutable",
                                    "name": "_transferReceivedItem",
                                    "nameLocation": "12692:21:34",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 6854,
                                    "src": "12601:112:34",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReceivedItem_$3940_memory_ptr_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                      "typeString": "function (struct ReceivedItem,address,bytes32,bytes)"
                                    },
                                    "typeName": {
                                      "id": 6849,
                                      "nodeType": "FunctionTypeName",
                                      "parameterTypes": {
                                        "id": 6847,
                                        "nodeType": "ParameterList",
                                        "parameters": [
                                          {
                                            "constant": false,
                                            "id": 6840,
                                            "mutability": "mutable",
                                            "name": "",
                                            "nameLocation": "-1:-1:-1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6849,
                                            "src": "12610:19:34",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_ReceivedItem_$3940_memory_ptr",
                                              "typeString": "struct ReceivedItem"
                                            },
                                            "typeName": {
                                              "id": 6839,
                                              "nodeType": "UserDefinedTypeName",
                                              "pathNode": {
                                                "id": 6838,
                                                "name": "ReceivedItem",
                                                "nodeType": "IdentifierPath",
                                                "referencedDeclaration": 3940,
                                                "src": "12610:12:34"
                                              },
                                              "referencedDeclaration": 3940,
                                              "src": "12610:12:34",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_ReceivedItem_$3940_storage_ptr",
                                                "typeString": "struct ReceivedItem"
                                              }
                                            },
                                            "visibility": "internal"
                                          },
                                          {
                                            "constant": false,
                                            "id": 6842,
                                            "mutability": "mutable",
                                            "name": "",
                                            "nameLocation": "-1:-1:-1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6849,
                                            "src": "12631:7:34",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            "typeName": {
                                              "id": 6841,
                                              "name": "address",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "12631:7:34",
                                              "stateMutability": "nonpayable",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            "visibility": "internal"
                                          },
                                          {
                                            "constant": false,
                                            "id": 6844,
                                            "mutability": "mutable",
                                            "name": "",
                                            "nameLocation": "-1:-1:-1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6849,
                                            "src": "12640:7:34",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            "typeName": {
                                              "id": 6843,
                                              "name": "bytes32",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "12640:7:34",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            "visibility": "internal"
                                          },
                                          {
                                            "constant": false,
                                            "id": 6846,
                                            "mutability": "mutable",
                                            "name": "",
                                            "nameLocation": "-1:-1:-1",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 6849,
                                            "src": "12649:12:34",
                                            "stateVariable": false,
                                            "storageLocation": "memory",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes"
                                            },
                                            "typeName": {
                                              "id": 6845,
                                              "name": "bytes",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "12649:5:34",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_storage_ptr",
                                                "typeString": "bytes"
                                              }
                                            },
                                            "visibility": "internal"
                                          }
                                        ],
                                        "src": "12609:53:34"
                                      },
                                      "returnParameterTypes": {
                                        "id": 6848,
                                        "nodeType": "ParameterList",
                                        "parameters": [],
                                        "src": "12692:0:34"
                                      },
                                      "src": "12601:112:34",
                                      "stateMutability": "nonpayable",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReceivedItem_$3940_memory_ptr_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                        "typeString": "function (struct ReceivedItem,address,bytes32,bytes)"
                                      },
                                      "visibility": "internal"
                                    },
                                    "visibility": "internal"
                                  }
                                ],
                                "id": 6852,
                                "initialValue": {
                                  "id": 6851,
                                  "name": "_transfer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4565,
                                  "src": "12716:9:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ReceivedItem_$3940_memory_ptr_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (struct ReceivedItem memory,address,bytes32,bytes memory)"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "12601:124:34"
                              },
                              {
                                "AST": {
                                  "nodeType": "YulBlock",
                                  "src": "12831:164:34",
                                  "statements": [
                                    {
                                      "nodeType": "YulAssignment",
                                      "src": "12926:51:34",
                                      "value": {
                                        "name": "_transferReceivedItem",
                                        "nodeType": "YulIdentifier",
                                        "src": "12956:21:34"
                                      },
                                      "variableNames": [
                                        {
                                          "name": "_transferConsiderationItem",
                                          "nodeType": "YulIdentifier",
                                          "src": "12926:26:34"
                                        }
                                      ]
                                    }
                                  ]
                                },
                                "evmVersion": "london",
                                "externalReferences": [
                                  {
                                    "declaration": 6836,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "12926:26:34",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 6850,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "12956:21:34",
                                    "valueSize": 1
                                  }
                                ],
                                "id": 6853,
                                "nodeType": "InlineAssembly",
                                "src": "12822:173:34"
                              }
                            ]
                          },
                          {
                            "body": {
                              "id": 6921,
                              "nodeType": "Block",
                              "src": "13153:2445:34",
                              "statements": [
                                {
                                  "assignments": [
                                    6866
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 6866,
                                      "mutability": "mutable",
                                      "name": "considerationItem",
                                      "nameLocation": "13248:17:34",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6921,
                                      "src": "13223:42:34",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                        "typeString": "struct ConsiderationItem"
                                      },
                                      "typeName": {
                                        "id": 6865,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 6864,
                                          "name": "ConsiderationItem",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 3918,
                                          "src": "13223:17:34"
                                        },
                                        "referencedDeclaration": 3918,
                                        "src": "13223:17:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ConsiderationItem_$3918_storage_ptr",
                                          "typeString": "struct ConsiderationItem"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 6872,
                                  "initialValue": {
                                    "components": [
                                      {
                                        "baseExpression": {
                                          "expression": {
                                            "id": 6867,
                                            "name": "orderParameters",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6680,
                                            "src": "13290:15:34",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                              "typeString": "struct OrderParameters memory"
                                            }
                                          },
                                          "id": 6868,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "consideration",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3997,
                                          "src": "13290:29:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct ConsiderationItem memory[] memory"
                                          }
                                        },
                                        "id": 6870,
                                        "indexExpression": {
                                          "id": 6869,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6856,
                                          "src": "13320:1:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "13290:32:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                          "typeString": "struct ConsiderationItem memory"
                                        }
                                      }
                                    ],
                                    "id": 6871,
                                    "isConstant": false,
                                    "isInlineArray": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "TupleExpression",
                                    "src": "13268:72:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                      "typeString": "struct ConsiderationItem memory"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "13223:117:34"
                                },
                                {
                                  "assignments": [
                                    6874
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 6874,
                                      "mutability": "mutable",
                                      "name": "amount",
                                      "nameLocation": "13448:6:34",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 6921,
                                      "src": "13440:14:34",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 6873,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "13440:7:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 6887,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 6876,
                                          "name": "considerationItem",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6866,
                                          "src": "13493:17:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                            "typeString": "struct ConsiderationItem memory"
                                          }
                                        },
                                        "id": 6877,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "startAmount",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3913,
                                        "src": "13493:29:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 6878,
                                          "name": "considerationItem",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6866,
                                          "src": "13544:17:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                            "typeString": "struct ConsiderationItem memory"
                                          }
                                        },
                                        "id": 6879,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "endAmount",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3915,
                                        "src": "13544:27:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6880,
                                        "name": "numerator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6682,
                                        "src": "13593:9:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6881,
                                        "name": "denominator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6684,
                                        "src": "13624:11:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6882,
                                        "name": "elapsed",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6700,
                                        "src": "13657:7:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6883,
                                        "name": "remaining",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6708,
                                        "src": "13686:9:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 6884,
                                        "name": "duration",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6692,
                                        "src": "13717:8:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "hexValue": "74727565",
                                        "id": 6885,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "13747:4:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "true"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 6875,
                                      "name": "_applyFraction",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2490,
                                      "src": "13457:14:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool) pure returns (uint256)"
                                      }
                                    },
                                    "id": 6886,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "13457:312:34",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "13440:329:34"
                                },
                                {
                                  "AST": {
                                    "nodeType": "YulBlock",
                                    "src": "13876:700:34",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "considerationItem",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14015:17:34"
                                                },
                                                {
                                                  "name": "ReceivedItem_amount_offset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14034:26:34"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "14011:3:34"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "14011:50:34"
                                            },
                                            {
                                              "name": "amount",
                                              "nodeType": "YulIdentifier",
                                              "src": "14087:6:34"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "13979:6:34"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "13979:136:34"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "13979:136:34"
                                      },
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "considerationItem",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14248:17:34"
                                                },
                                                {
                                                  "name": "ReceivedItem_recipient_offset",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "14267:29:34"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nodeType": "YulIdentifier",
                                                "src": "14244:3:34"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "14244:53:34"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "name": "considerationItem",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "14395:17:34"
                                                    },
                                                    {
                                                      "name": "ConsiderationItem_recipient_offset",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "14446:34:34"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "14358:3:34"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "14358:152:34"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "mload",
                                                "nodeType": "YulIdentifier",
                                                "src": "14323:5:34"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "14323:213:34"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mstore",
                                            "nodeType": "YulIdentifier",
                                            "src": "14212:6:34"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "14212:346:34"
                                        },
                                        "nodeType": "YulExpressionStatement",
                                        "src": "14212:346:34"
                                      }
                                    ]
                                  },
                                  "evmVersion": "london",
                                  "externalReferences": [
                                    {
                                      "declaration": 3428,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "14446:34:34",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 3419,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "14034:26:34",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 3422,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "14267:29:34",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 6874,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "14087:6:34",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 6866,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "14015:17:34",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 6866,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "14248:17:34",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 6866,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "14395:17:34",
                                      "valueSize": 1
                                    }
                                  ],
                                  "id": 6888,
                                  "nodeType": "InlineAssembly",
                                  "src": "13867:709:34"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_enum$_ItemType_$3854",
                                      "typeString": "enum ItemType"
                                    },
                                    "id": 6893,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "expression": {
                                        "id": 6889,
                                        "name": "considerationItem",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6866,
                                        "src": "14678:17:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                          "typeString": "struct ConsiderationItem memory"
                                        }
                                      },
                                      "id": 6890,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "itemType",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3907,
                                      "src": "14678:26:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ItemType_$3854",
                                        "typeString": "enum ItemType"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 6891,
                                        "name": "ItemType",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3854,
                                        "src": "14708:8:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ItemType_$3854_$",
                                          "typeString": "type(enum ItemType)"
                                        }
                                      },
                                      "id": 6892,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "NATIVE",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3848,
                                      "src": "14708:15:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ItemType_$3854",
                                        "typeString": "enum ItemType"
                                      }
                                    },
                                    "src": "14678:45:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 6908,
                                  "nodeType": "IfStatement",
                                  "src": "14674:469:34",
                                  "trueBody": {
                                    "id": 6907,
                                    "nodeType": "Block",
                                    "src": "14725:418:34",
                                    "statements": [
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 6896,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 6894,
                                            "name": "amount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6874,
                                            "src": "14832:6:34",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": ">",
                                          "rightExpression": {
                                            "id": 6895,
                                            "name": "etherRemaining",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6714,
                                            "src": "14841:14:34",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "14832:23:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 6901,
                                        "nodeType": "IfStatement",
                                        "src": "14828:112:34",
                                        "trueBody": {
                                          "id": 6900,
                                          "nodeType": "Block",
                                          "src": "14857:83:34",
                                          "statements": [
                                            {
                                              "errorCall": {
                                                "arguments": [],
                                                "expression": {
                                                  "argumentTypes": [],
                                                  "id": 6897,
                                                  "name": "InsufficientEtherSupplied",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1886,
                                                  "src": "14890:25:34",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                                    "typeString": "function () pure"
                                                  }
                                                },
                                                "id": 6898,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "14890:27:34",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 6899,
                                              "nodeType": "RevertStatement",
                                              "src": "14883:34:34"
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "id": 6906,
                                        "nodeType": "UncheckedBlock",
                                        "src": "15042:83:34",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 6904,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftHandSide": {
                                                "id": 6902,
                                                "name": "etherRemaining",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6714,
                                                "src": "15078:14:34",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "Assignment",
                                              "operator": "-=",
                                              "rightHandSide": {
                                                "id": 6903,
                                                "name": "amount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6874,
                                                "src": "15096:6:34",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "15078:24:34",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 6905,
                                            "nodeType": "ExpressionStatement",
                                            "src": "15078:24:34"
                                          }
                                        ]
                                      }
                                    ]
                                  }
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 6910,
                                        "name": "considerationItem",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6866,
                                        "src": "15290:17:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                          "typeString": "struct ConsiderationItem memory"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 6911,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -15,
                                          "src": "15329:3:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 6912,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "15329:10:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 6913,
                                        "name": "fulfillerConduitKey",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6688,
                                        "src": "15361:19:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "id": 6914,
                                        "name": "accumulator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6719,
                                        "src": "15402:11:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_struct$_ConsiderationItem_$3918_memory_ptr",
                                          "typeString": "struct ConsiderationItem memory"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 6909,
                                      "name": "_transferConsiderationItem",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6836,
                                      "src": "15242:26:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_ConsiderationItem_$3918_memory_ptr_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                        "typeString": "function (struct ConsiderationItem memory,address,bytes32,bytes memory)"
                                      }
                                    },
                                    "id": 6915,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15242:189:34",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 6916,
                                  "nodeType": "ExpressionStatement",
                                  "src": "15242:189:34"
                                },
                                {
                                  "id": 6920,
                                  "nodeType": "UncheckedBlock",
                                  "src": "15530:54:34",
                                  "statements": [
                                    {
                                      "expression": {
                                        "id": 6918,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "++",
                                        "prefix": true,
                                        "src": "15562:3:34",
                                        "subExpression": {
                                          "id": 6917,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6856,
                                          "src": "15564:1:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 6919,
                                      "nodeType": "ExpressionStatement",
                                      "src": "15562:3:34"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6863,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 6859,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6856,
                                "src": "13109:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "expression": {
                                  "expression": {
                                    "id": 6860,
                                    "name": "orderParameters",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6680,
                                    "src": "13113:15:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                      "typeString": "struct OrderParameters memory"
                                    }
                                  },
                                  "id": 6861,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "consideration",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 3997,
                                  "src": "13113:29:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                                    "typeString": "struct ConsiderationItem memory[] memory"
                                  }
                                },
                                "id": 6862,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "src": "13113:36:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "13109:40:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6922,
                            "initializationExpression": {
                              "assignments": [
                                6856
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 6856,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "13102:1:34",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 6922,
                                  "src": "13094:9:34",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 6855,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13094:7:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 6858,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 6857,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13106:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "13094:13:34"
                            },
                            "nodeType": "ForStatement",
                            "src": "13089:2509:34"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 6925,
                              "name": "accumulator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6719,
                              "src": "15714:11:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 6924,
                            "name": "_triggerIfArmed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4892,
                            "src": "15698:15:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes memory)"
                            }
                          },
                          "id": 6926,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15698:28:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6927,
                        "nodeType": "ExpressionStatement",
                        "src": "15698:28:34"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 6928,
                            "name": "etherRemaining",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6714,
                            "src": "15795:14:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 6929,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15813:1:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "15795:19:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6941,
                        "nodeType": "IfStatement",
                        "src": "15791:139:34",
                        "trueBody": {
                          "id": 6940,
                          "nodeType": "Block",
                          "src": "15816:114:34",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "expression": {
                                          "id": 6934,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -15,
                                          "src": "15891:3:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 6935,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "15891:10:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 6933,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "15883:8:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_payable_$",
                                        "typeString": "type(address payable)"
                                      },
                                      "typeName": {
                                        "id": 6932,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "15883:8:34",
                                        "stateMutability": "payable",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 6936,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "15883:19:34",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  {
                                    "id": 6937,
                                    "name": "etherRemaining",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6714,
                                    "src": "15904:14:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 6931,
                                  "name": "_transferEth",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4663,
                                  "src": "15870:12:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$",
                                    "typeString": "function (address payable,uint256)"
                                  }
                                },
                                "id": 6938,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15870:49:34",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 6939,
                              "nodeType": "ExpressionStatement",
                              "src": "15870:49:34"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6677,
                    "nodeType": "StructuredDocumentation",
                    "src": "5007:1221:34",
                    "text": " @dev Internal function to transfer each item contained in a given single\n      order fulfillment after applying a respective fraction to the amount\n      being transferred.\n @param orderParameters     The parameters for the fulfilled order.\n @param numerator           A value indicating the portion of the order\n                            that should be filled.\n @param denominator         A value indicating the total order size.\n @param offererConduitKey   An address indicating what conduit, if any, to\n                            source the offerer's token approvals from. The\n                            zero hash signifies that no conduit should be\n                            used, with direct approvals set on\n                            Consideration.\n @param fulfillerConduitKey A bytes32 value indicating what conduit, if\n                            any, to source the fulfiller's token approvals\n                            from. The zero hash signifies that no conduit\n                            should be used, with direct approvals set on\n                            Consideration."
                  },
                  "id": 6943,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_applyFractionsAndTransferEach",
                  "nameLocation": "6242:30:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6689,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6680,
                        "mutability": "mutable",
                        "name": "orderParameters",
                        "nameLocation": "6305:15:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 6943,
                        "src": "6282:38:34",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                          "typeString": "struct OrderParameters"
                        },
                        "typeName": {
                          "id": 6679,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6678,
                            "name": "OrderParameters",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4013,
                            "src": "6282:15:34"
                          },
                          "referencedDeclaration": 4013,
                          "src": "6282:15:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_OrderParameters_$4013_storage_ptr",
                            "typeString": "struct OrderParameters"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6682,
                        "mutability": "mutable",
                        "name": "numerator",
                        "nameLocation": "6338:9:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 6943,
                        "src": "6330:17:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6681,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6330:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6684,
                        "mutability": "mutable",
                        "name": "denominator",
                        "nameLocation": "6365:11:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 6943,
                        "src": "6357:19:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6683,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6357:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6686,
                        "mutability": "mutable",
                        "name": "offererConduitKey",
                        "nameLocation": "6394:17:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 6943,
                        "src": "6386:25:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6685,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6386:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6688,
                        "mutability": "mutable",
                        "name": "fulfillerConduitKey",
                        "nameLocation": "6429:19:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 6943,
                        "src": "6421:27:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6687,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6421:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6272:182:34"
                  },
                  "returnParameters": {
                    "id": 6690,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6464:0:34"
                  },
                  "scope": 7063,
                  "src": "6233:9703:34",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 6986,
                    "nodeType": "Block",
                    "src": "16814:621:34",
                    "statements": [
                      {
                        "assignments": [
                          6967
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6967,
                            "mutability": "mutable",
                            "name": "spentItems",
                            "nameLocation": "16912:10:34",
                            "nodeType": "VariableDeclaration",
                            "scope": 6986,
                            "src": "16893:29:34",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_SpentItem_$3928_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct SpentItem[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 6965,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 6964,
                                  "name": "SpentItem",
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 3928,
                                  "src": "16893:9:34"
                                },
                                "referencedDeclaration": 3928,
                                "src": "16893:9:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_SpentItem_$3928_storage_ptr",
                                  "typeString": "struct SpentItem"
                                }
                              },
                              "id": 6966,
                              "nodeType": "ArrayTypeName",
                              "src": "16893:11:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_SpentItem_$3928_storage_$dyn_storage_ptr",
                                "typeString": "struct SpentItem[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6968,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16893:29:34"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "16941:43:34",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "16955:19:34",
                              "value": {
                                "name": "offer",
                                "nodeType": "YulIdentifier",
                                "src": "16969:5:34"
                              },
                              "variableNames": [
                                {
                                  "name": "spentItems",
                                  "nodeType": "YulIdentifier",
                                  "src": "16955:10:34"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 6956,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16969:5:34",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6967,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16955:10:34",
                            "valueSize": 1
                          }
                        ],
                        "id": 6969,
                        "nodeType": "InlineAssembly",
                        "src": "16932:52:34"
                      },
                      {
                        "assignments": [
                          6974
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6974,
                            "mutability": "mutable",
                            "name": "receivedItems",
                            "nameLocation": "17096:13:34",
                            "nodeType": "VariableDeclaration",
                            "scope": 6986,
                            "src": "17074:35:34",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_ReceivedItem_$3940_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct ReceivedItem[]"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 6972,
                                "nodeType": "UserDefinedTypeName",
                                "pathNode": {
                                  "id": 6971,
                                  "name": "ReceivedItem",
                                  "nodeType": "IdentifierPath",
                                  "referencedDeclaration": 3940,
                                  "src": "17074:12:34"
                                },
                                "referencedDeclaration": 3940,
                                "src": "17074:12:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ReceivedItem_$3940_storage_ptr",
                                  "typeString": "struct ReceivedItem"
                                }
                              },
                              "id": 6973,
                              "nodeType": "ArrayTypeName",
                              "src": "17074:14:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_ReceivedItem_$3940_storage_$dyn_storage_ptr",
                                "typeString": "struct ReceivedItem[]"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 6975,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17074:35:34"
                      },
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "17128:54:34",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "17142:30:34",
                              "value": {
                                "name": "consideration",
                                "nodeType": "YulIdentifier",
                                "src": "17159:13:34"
                              },
                              "variableNames": [
                                {
                                  "name": "receivedItems",
                                  "nodeType": "YulIdentifier",
                                  "src": "17142:13:34"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 6960,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "17159:13:34",
                            "valueSize": 1
                          },
                          {
                            "declaration": 6974,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "17142:13:34",
                            "valueSize": 1
                          }
                        ],
                        "id": 6976,
                        "nodeType": "InlineAssembly",
                        "src": "17119:63:34"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 6978,
                              "name": "orderHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6946,
                              "src": "17296:9:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 6979,
                              "name": "offerer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6948,
                              "src": "17319:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6980,
                              "name": "zone",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6950,
                              "src": "17340:4:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6981,
                              "name": "fulfiller",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6952,
                              "src": "17358:9:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 6982,
                              "name": "spentItems",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6967,
                              "src": "17381:10:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_SpentItem_$3928_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct SpentItem memory[] memory"
                              }
                            },
                            {
                              "id": 6983,
                              "name": "receivedItems",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6974,
                              "src": "17405:13:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_ReceivedItem_$3940_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct ReceivedItem memory[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_SpentItem_$3928_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct SpentItem memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_ReceivedItem_$3940_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct ReceivedItem memory[] memory"
                              }
                            ],
                            "id": 6977,
                            "name": "OrderFulfilled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1826,
                            "src": "17268:14:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_address_$_t_array$_t_struct$_SpentItem_$3928_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_ReceivedItem_$3940_memory_ptr_$dyn_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,address,address,address,struct SpentItem memory[] memory,struct ReceivedItem memory[] memory)"
                            }
                          },
                          "id": 6984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17268:160:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6985,
                        "nodeType": "EmitStatement",
                        "src": "17263:165:34"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6944,
                    "nodeType": "StructuredDocumentation",
                    "src": "15942:633:34",
                    "text": " @dev Internal function to emit an OrderFulfilled event. OfferItems are\n      translated into SpentItems and ConsiderationItems are translated\n      into ReceivedItems.\n @param orderHash     The order hash.\n @param offerer       The offerer for the order.\n @param zone          The zone for the order.\n @param fulfiller     The fulfiller of the order, or the null address if\n                      the order was fulfilled via order matching.\n @param offer         The offer items for the order.\n @param consideration The consideration items for the order."
                  },
                  "id": 6987,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_emitOrderFulfilledEvent",
                  "nameLocation": "16589:24:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6961,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6946,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "16631:9:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 6987,
                        "src": "16623:17:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 6945,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "16623:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6948,
                        "mutability": "mutable",
                        "name": "offerer",
                        "nameLocation": "16658:7:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 6987,
                        "src": "16650:15:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6947,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16650:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6950,
                        "mutability": "mutable",
                        "name": "zone",
                        "nameLocation": "16683:4:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 6987,
                        "src": "16675:12:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6949,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16675:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6952,
                        "mutability": "mutable",
                        "name": "fulfiller",
                        "nameLocation": "16705:9:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 6987,
                        "src": "16697:17:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6951,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16697:7:34",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6956,
                        "mutability": "mutable",
                        "name": "offer",
                        "nameLocation": "16743:5:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 6987,
                        "src": "16724:24:34",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct OfferItem[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6954,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 6953,
                              "name": "OfferItem",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 3904,
                              "src": "16724:9:34"
                            },
                            "referencedDeclaration": 3904,
                            "src": "16724:9:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OfferItem_$3904_storage_ptr",
                              "typeString": "struct OfferItem"
                            }
                          },
                          "id": 6955,
                          "nodeType": "ArrayTypeName",
                          "src": "16724:11:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_storage_$dyn_storage_ptr",
                            "typeString": "struct OfferItem[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 6960,
                        "mutability": "mutable",
                        "name": "consideration",
                        "nameLocation": "16785:13:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 6987,
                        "src": "16758:40:34",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct ConsiderationItem[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 6958,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 6957,
                              "name": "ConsiderationItem",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 3918,
                              "src": "16758:17:34"
                            },
                            "referencedDeclaration": 3918,
                            "src": "16758:17:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ConsiderationItem_$3918_storage_ptr",
                              "typeString": "struct ConsiderationItem"
                            }
                          },
                          "id": 6959,
                          "nodeType": "ArrayTypeName",
                          "src": "16758:19:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_storage_$dyn_storage_ptr",
                            "typeString": "struct ConsiderationItem[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16613:191:34"
                  },
                  "returnParameters": {
                    "id": 6962,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "16814:0:34"
                  },
                  "scope": 7063,
                  "src": "16580:855:34",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7009,
                    "nodeType": "Block",
                    "src": "17853:238:34",
                    "statements": [
                      {
                        "expression": {
                          "id": 7007,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 6997,
                            "name": "advancedOrder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6995,
                            "src": "17940:13:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                              "typeString": "struct AdvancedOrder memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 6999,
                                  "name": "order",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6991,
                                  "src": "17983:5:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Order_$4019_calldata_ptr",
                                    "typeString": "struct Order calldata"
                                  }
                                },
                                "id": 7000,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "parameters",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4016,
                                "src": "17983:16:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_calldata_ptr",
                                  "typeString": "struct OrderParameters calldata"
                                }
                              },
                              {
                                "hexValue": "31",
                                "id": 7001,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18013:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              {
                                "hexValue": "31",
                                "id": 7002,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18028:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              {
                                "expression": {
                                  "id": 7003,
                                  "name": "order",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6991,
                                  "src": "18043:5:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Order_$4019_calldata_ptr",
                                    "typeString": "struct Order calldata"
                                  }
                                },
                                "id": 7004,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "signature",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4018,
                                "src": "18043:15:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              {
                                "hexValue": "",
                                "id": 7005,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18072:2:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                },
                                "value": ""
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_calldata_ptr",
                                  "typeString": "struct OrderParameters calldata"
                                },
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                  "typeString": "literal_string \"\""
                                }
                              ],
                              "id": 6998,
                              "name": "AdvancedOrder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4031,
                              "src": "17956:13:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_AdvancedOrder_$4031_storage_ptr_$",
                                "typeString": "type(struct AdvancedOrder storage pointer)"
                              }
                            },
                            "id": 7006,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17956:128:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                              "typeString": "struct AdvancedOrder memory"
                            }
                          },
                          "src": "17940:144:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                            "typeString": "struct AdvancedOrder memory"
                          }
                        },
                        "id": 7008,
                        "nodeType": "ExpressionStatement",
                        "src": "17940:144:34"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 6988,
                    "nodeType": "StructuredDocumentation",
                    "src": "17441:265:34",
                    "text": " @dev Internal pure function to convert an order to an advanced order with\n      numerator and denominator of 1 and empty extraData.\n @param order The order to convert.\n @return advancedOrder The new advanced order."
                  },
                  "id": 7010,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_convertOrderToAdvanced",
                  "nameLocation": "17720:23:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6992,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6991,
                        "mutability": "mutable",
                        "name": "order",
                        "nameLocation": "17759:5:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 7010,
                        "src": "17744:20:34",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Order_$4019_calldata_ptr",
                          "typeString": "struct Order"
                        },
                        "typeName": {
                          "id": 6990,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6989,
                            "name": "Order",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4019,
                            "src": "17744:5:34"
                          },
                          "referencedDeclaration": 4019,
                          "src": "17744:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Order_$4019_storage_ptr",
                            "typeString": "struct Order"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17743:22:34"
                  },
                  "returnParameters": {
                    "id": 6996,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 6995,
                        "mutability": "mutable",
                        "name": "advancedOrder",
                        "nameLocation": "17834:13:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 7010,
                        "src": "17813:34:34",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                          "typeString": "struct AdvancedOrder"
                        },
                        "typeName": {
                          "id": 6994,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6993,
                            "name": "AdvancedOrder",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4031,
                            "src": "17813:13:34"
                          },
                          "referencedDeclaration": 4031,
                          "src": "17813:13:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                            "typeString": "struct AdvancedOrder"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17812:36:34"
                  },
                  "scope": 7063,
                  "src": "17711:380:34",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7061,
                    "nodeType": "Block",
                    "src": "18528:710:34",
                    "statements": [
                      {
                        "assignments": [
                          7023
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7023,
                            "mutability": "mutable",
                            "name": "totalOrders",
                            "nameLocation": "18621:11:34",
                            "nodeType": "VariableDeclaration",
                            "scope": 7061,
                            "src": "18613:19:34",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7022,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "18613:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7026,
                        "initialValue": {
                          "expression": {
                            "id": 7024,
                            "name": "orders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7015,
                            "src": "18635:6:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                              "typeString": "struct Order calldata[] calldata"
                            }
                          },
                          "id": 7025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "18635:13:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "18613:35:34"
                      },
                      {
                        "expression": {
                          "id": 7034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7027,
                            "name": "advancedOrders",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7020,
                            "src": "18729:14:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct AdvancedOrder memory[] memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7032,
                                "name": "totalOrders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7023,
                                "src": "18766:11:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 7031,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "18746:19:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (struct AdvancedOrder memory[] memory)"
                              },
                              "typeName": {
                                "baseType": {
                                  "id": 7029,
                                  "nodeType": "UserDefinedTypeName",
                                  "pathNode": {
                                    "id": 7028,
                                    "name": "AdvancedOrder",
                                    "nodeType": "IdentifierPath",
                                    "referencedDeclaration": 4031,
                                    "src": "18750:13:34"
                                  },
                                  "referencedDeclaration": 4031,
                                  "src": "18750:13:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                                    "typeString": "struct AdvancedOrder"
                                  }
                                },
                                "id": 7030,
                                "nodeType": "ArrayTypeName",
                                "src": "18750:15:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                                  "typeString": "struct AdvancedOrder[]"
                                }
                              }
                            },
                            "id": 7033,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18746:32:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct AdvancedOrder memory[] memory"
                            }
                          },
                          "src": "18729:49:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct AdvancedOrder memory[] memory"
                          }
                        },
                        "id": 7035,
                        "nodeType": "ExpressionStatement",
                        "src": "18729:49:34"
                      },
                      {
                        "id": 7058,
                        "nodeType": "UncheckedBlock",
                        "src": "18862:290:34",
                        "statements": [
                          {
                            "body": {
                              "id": 7056,
                              "nodeType": "Block",
                              "src": "18974:168:34",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7054,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "baseExpression": {
                                        "id": 7046,
                                        "name": "advancedOrders",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7020,
                                        "src": "19073:14:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory[] memory"
                                        }
                                      },
                                      "id": 7048,
                                      "indexExpression": {
                                        "id": 7047,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7037,
                                        "src": "19088:1:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "IndexAccess",
                                      "src": "19073:17:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                        "typeString": "struct AdvancedOrder memory"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "baseExpression": {
                                            "id": 7050,
                                            "name": "orders",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7015,
                                            "src": "19117:6:34",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                                              "typeString": "struct Order calldata[] calldata"
                                            }
                                          },
                                          "id": 7052,
                                          "indexExpression": {
                                            "id": 7051,
                                            "name": "i",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7037,
                                            "src": "19124:1:34",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "19117:9:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Order_$4019_calldata_ptr",
                                            "typeString": "struct Order calldata"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_struct$_Order_$4019_calldata_ptr",
                                            "typeString": "struct Order calldata"
                                          }
                                        ],
                                        "id": 7049,
                                        "name": "_convertOrderToAdvanced",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7010,
                                        "src": "19093:23:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Order_$4019_calldata_ptr_$returns$_t_struct$_AdvancedOrder_$4031_memory_ptr_$",
                                          "typeString": "function (struct Order calldata) pure returns (struct AdvancedOrder memory)"
                                        }
                                      },
                                      "id": 7053,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "19093:34:34",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                        "typeString": "struct AdvancedOrder memory"
                                      }
                                    },
                                    "src": "19073:54:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                      "typeString": "struct AdvancedOrder memory"
                                    }
                                  },
                                  "id": 7055,
                                  "nodeType": "ExpressionStatement",
                                  "src": "19073:54:34"
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7042,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7040,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7037,
                                "src": "18952:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 7041,
                                "name": "totalOrders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7023,
                                "src": "18956:11:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "18952:15:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7057,
                            "initializationExpression": {
                              "assignments": [
                                7037
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 7037,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "18945:1:34",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 7057,
                                  "src": "18937:9:34",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 7036,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "18937:7:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 7039,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 7038,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18949:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "18937:13:34"
                            },
                            "loopExpression": {
                              "expression": {
                                "id": 7044,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": true,
                                "src": "18969:3:34",
                                "subExpression": {
                                  "id": 7043,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7037,
                                  "src": "18971:1:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7045,
                              "nodeType": "ExpressionStatement",
                              "src": "18969:3:34"
                            },
                            "nodeType": "ForStatement",
                            "src": "18932:210:34"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 7059,
                          "name": "advancedOrders",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7020,
                          "src": "19217:14:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct AdvancedOrder memory[] memory"
                          }
                        },
                        "functionReturnParameters": 7021,
                        "id": 7060,
                        "nodeType": "Return",
                        "src": "19210:21:34"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7011,
                    "nodeType": "StructuredDocumentation",
                    "src": "18097:277:34",
                    "text": " @dev Internal pure function to convert an array of orders to an array of\n      advanced orders with numerator and denominator of 1.\n @param orders The orders to convert.\n @return advancedOrders The new array of partial orders."
                  },
                  "id": 7062,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_convertOrdersToAdvanced",
                  "nameLocation": "18388:24:34",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7016,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7015,
                        "mutability": "mutable",
                        "name": "orders",
                        "nameLocation": "18430:6:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 7062,
                        "src": "18413:23:34",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct Order[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7013,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 7012,
                              "name": "Order",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4019,
                              "src": "18413:5:34"
                            },
                            "referencedDeclaration": 4019,
                            "src": "18413:5:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Order_$4019_storage_ptr",
                              "typeString": "struct Order"
                            }
                          },
                          "id": 7014,
                          "nodeType": "ArrayTypeName",
                          "src": "18413:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Order_$4019_storage_$dyn_storage_ptr",
                            "typeString": "struct Order[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18412:25:34"
                  },
                  "returnParameters": {
                    "id": 7021,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7020,
                        "mutability": "mutable",
                        "name": "advancedOrders",
                        "nameLocation": "18508:14:34",
                        "nodeType": "VariableDeclaration",
                        "scope": 7062,
                        "src": "18485:37:34",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct AdvancedOrder[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7018,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 7017,
                              "name": "AdvancedOrder",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4031,
                              "src": "18485:13:34"
                            },
                            "referencedDeclaration": 4031,
                            "src": "18485:13:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                              "typeString": "struct AdvancedOrder"
                            }
                          },
                          "id": 7019,
                          "nodeType": "ArrayTypeName",
                          "src": "18485:15:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_AdvancedOrder_$4031_storage_$dyn_storage_ptr",
                            "typeString": "struct AdvancedOrder[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18484:39:34"
                  },
                  "scope": 7063,
                  "src": "18379:859:34",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 7064,
              "src": "801:18439:34",
              "usedErrors": [
                1541,
                1856,
                1859,
                1866,
                1869,
                1874,
                1883,
                1886,
                1893,
                1896,
                1901,
                1906,
                1909,
                1912,
                1917,
                1920,
                1923,
                2150,
                2153,
                2156,
                2159,
                2162,
                2165,
                2168,
                2208,
                2217,
                2220,
                2223,
                2226,
                2233,
                2236,
                2249,
                2264,
                2275,
                2280,
                2289
              ]
            }
          ],
          "src": "32:19209:34"
        },
        "id": 34
      },
      "seaport/contracts/lib/OrderValidator.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/OrderValidator.sol",
          "exportedSymbols": {
            "AdvancedOrder": [
              4031
            ],
            "CriteriaResolver": [
              4053
            ],
            "Executor": [
              5018
            ],
            "Order": [
              4019
            ],
            "OrderComponents": [
              3892
            ],
            "OrderParameters": [
              4013
            ],
            "OrderStatus": [
              4040
            ],
            "OrderType": [
              3815
            ],
            "OrderValidator": [
              7714
            ],
            "ZoneInteraction": [
              8592
            ]
          },
          "id": 7715,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7065,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:35"
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationEnums.sol",
              "file": "./ConsiderationEnums.sol",
              "id": 7067,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7715,
              "sourceUnit": 3858,
              "src": "57:53:35",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7066,
                    "name": "OrderType",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3815,
                    "src": "66:9:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationStructs.sol",
              "file": "./ConsiderationStructs.sol",
              "id": 7074,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7715,
              "sourceUnit": 4076,
              "src": "131:155:35",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7068,
                    "name": "OrderParameters",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4013,
                    "src": "144:15:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 7069,
                    "name": "Order",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4019,
                    "src": "165:5:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 7070,
                    "name": "AdvancedOrder",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4031,
                    "src": "176:13:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 7071,
                    "name": "OrderComponents",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3892,
                    "src": "195:15:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 7072,
                    "name": "OrderStatus",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4040,
                    "src": "216:11:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 7073,
                    "name": "CriteriaResolver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4053,
                    "src": "233:16:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/Executor.sol",
              "file": "./Executor.sol",
              "id": 7076,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7715,
              "sourceUnit": 5019,
              "src": "288:42:35",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7075,
                    "name": "Executor",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5018,
                    "src": "297:8:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ZoneInteraction.sol",
              "file": "./ZoneInteraction.sol",
              "id": 7078,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7715,
              "sourceUnit": 8593,
              "src": "332:56:35",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7077,
                    "name": "ZoneInteraction",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 8592,
                    "src": "341:15:35",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 7080,
                    "name": "Executor",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5018,
                    "src": "582:8:35"
                  },
                  "id": 7081,
                  "nodeType": "InheritanceSpecifier",
                  "src": "582:8:35"
                },
                {
                  "baseName": {
                    "id": 7082,
                    "name": "ZoneInteraction",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 8592,
                    "src": "592:15:35"
                  },
                  "id": 7083,
                  "nodeType": "InheritanceSpecifier",
                  "src": "592:15:35"
                }
              ],
              "canonicalName": "OrderValidator",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 7079,
                "nodeType": "StructuredDocumentation",
                "src": "390:164:35",
                "text": " @title OrderValidator\n @author 0age\n @notice OrderValidator contains functionality related to validating orders\n         and updating their status."
              },
              "fullyImplemented": true,
              "id": 7714,
              "linearizedBaseContracts": [
                7714,
                8592,
                5018,
                7981,
                8379,
                7917,
                5505,
                2290,
                2227,
                2594,
                2281,
                5561,
                7768,
                2209,
                5465,
                3384,
                1924
              ],
              "name": "OrderValidator",
              "nameLocation": "564:14:35",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 7088,
                  "mutability": "mutable",
                  "name": "_orderStatus",
                  "nameLocation": "733:12:35",
                  "nodeType": "VariableDeclaration",
                  "scope": 7714,
                  "src": "693:52:35",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                    "typeString": "mapping(bytes32 => struct OrderStatus)"
                  },
                  "typeName": {
                    "id": 7087,
                    "keyType": {
                      "id": 7084,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "701:7:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "693:31:35",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                      "typeString": "mapping(bytes32 => struct OrderStatus)"
                    },
                    "valueType": {
                      "id": 7086,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 7085,
                        "name": "OrderStatus",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 4040,
                        "src": "712:11:35"
                      },
                      "referencedDeclaration": 4040,
                      "src": "712:11:35",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_OrderStatus_$4040_storage_ptr",
                        "typeString": "struct OrderStatus"
                      }
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 7097,
                    "nodeType": "Block",
                    "src": "1172:2:35",
                    "statements": []
                  },
                  "documentation": {
                    "id": 7089,
                    "nodeType": "StructuredDocumentation",
                    "src": "752:348:35",
                    "text": " @dev Derive and set hashes, reference chainId, and associated domain\n      separator during deployment.\n @param conduitController A contract that deploys conduits, or proxies\n                          that may optionally be used to transfer approved\n                          ERC20/721/1155 tokens."
                  },
                  "id": 7098,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 7094,
                          "name": "conduitController",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7091,
                          "src": "1153:17:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 7095,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 7093,
                        "name": "Executor",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 5018,
                        "src": "1144:8:35"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "1144:27:35"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7092,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7091,
                        "mutability": "mutable",
                        "name": "conduitController",
                        "nameLocation": "1125:17:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7098,
                        "src": "1117:25:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7090,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1117:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1116:27:35"
                  },
                  "returnParameters": {
                    "id": 7096,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1172:0:35"
                  },
                  "scope": 7714,
                  "src": "1105:69:35",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7161,
                    "nodeType": "Block",
                    "src": "1645:889:35",
                    "statements": [
                      {
                        "assignments": [
                          7110
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7110,
                            "mutability": "mutable",
                            "name": "orderStatus",
                            "nameLocation": "1737:11:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 7161,
                            "src": "1718:30:35",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                              "typeString": "struct OrderStatus"
                            },
                            "typeName": {
                              "id": 7109,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 7108,
                                "name": "OrderStatus",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4040,
                                "src": "1718:11:35"
                              },
                              "referencedDeclaration": 4040,
                              "src": "1718:11:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderStatus_$4040_storage_ptr",
                                "typeString": "struct OrderStatus"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7114,
                        "initialValue": {
                          "baseExpression": {
                            "id": 7111,
                            "name": "_orderStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7088,
                            "src": "1751:12:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                              "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                            }
                          },
                          "id": 7113,
                          "indexExpression": {
                            "id": 7112,
                            "name": "orderHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7101,
                            "src": "1764:9:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1751:23:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                            "typeString": "struct OrderStatus storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1718:56:35"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7116,
                              "name": "orderHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7101,
                              "src": "1875:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 7117,
                              "name": "orderStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7110,
                              "src": "1898:11:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                                "typeString": "struct OrderStatus memory"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 7118,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1923:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            },
                            {
                              "hexValue": "74727565",
                              "id": 7119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1999:4:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                                "typeString": "struct OrderStatus memory"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 7115,
                            "name": "_verifyOrderStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8378,
                            "src": "1843:18:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_struct$_OrderStatus_$4040_memory_ptr_$_t_bool_$_t_bool_$returns$_t_bool_$",
                              "typeString": "function (bytes32,struct OrderStatus memory,bool,bool) pure returns (bool)"
                            }
                          },
                          "id": 7120,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1843:218:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7121,
                        "nodeType": "ExpressionStatement",
                        "src": "1843:218:35"
                      },
                      {
                        "condition": {
                          "id": 7124,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "2157:24:35",
                          "subExpression": {
                            "expression": {
                              "id": 7122,
                              "name": "orderStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7110,
                              "src": "2158:11:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                                "typeString": "struct OrderStatus memory"
                              }
                            },
                            "id": 7123,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isValidated",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4033,
                            "src": "2158:23:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7132,
                        "nodeType": "IfStatement",
                        "src": "2153:102:35",
                        "trueBody": {
                          "id": 7131,
                          "nodeType": "Block",
                          "src": "2183:72:35",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 7126,
                                    "name": "offerer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7103,
                                    "src": "2214:7:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 7127,
                                    "name": "orderHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7101,
                                    "src": "2223:9:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 7128,
                                    "name": "signature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7105,
                                    "src": "2234:9:35",
                                    "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": 7125,
                                  "name": "_verifySignature",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8316,
                                  "src": "2197:16:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,bytes32,bytes memory) view"
                                  }
                                },
                                "id": 7129,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2197:47:35",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7130,
                              "nodeType": "ExpressionStatement",
                              "src": "2197:47:35"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 7138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 7133,
                                "name": "_orderStatus",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7088,
                                "src": "2336:12:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                                  "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                                }
                              },
                              "id": 7135,
                              "indexExpression": {
                                "id": 7134,
                                "name": "orderHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7101,
                                "src": "2349:9:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2336:23:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                                "typeString": "struct OrderStatus storage ref"
                              }
                            },
                            "id": 7136,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "isValidated",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4033,
                            "src": "2336:35:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 7137,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2374:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "2336:42:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7139,
                        "nodeType": "ExpressionStatement",
                        "src": "2336:42:35"
                      },
                      {
                        "expression": {
                          "id": 7145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 7140,
                                "name": "_orderStatus",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7088,
                                "src": "2388:12:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                                  "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                                }
                              },
                              "id": 7142,
                              "indexExpression": {
                                "id": 7141,
                                "name": "orderHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7101,
                                "src": "2401:9:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2388:23:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                                "typeString": "struct OrderStatus storage ref"
                              }
                            },
                            "id": 7143,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "isCancelled",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4035,
                            "src": "2388:35:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "66616c7365",
                            "id": 7144,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2426:5:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          "src": "2388:43:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7146,
                        "nodeType": "ExpressionStatement",
                        "src": "2388:43:35"
                      },
                      {
                        "expression": {
                          "id": 7152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 7147,
                                "name": "_orderStatus",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7088,
                                "src": "2441:12:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                                  "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                                }
                              },
                              "id": 7149,
                              "indexExpression": {
                                "id": 7148,
                                "name": "orderHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7101,
                                "src": "2454:9:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2441:23:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                                "typeString": "struct OrderStatus storage ref"
                              }
                            },
                            "id": 7150,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "numerator",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4037,
                            "src": "2441:33:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint120",
                              "typeString": "uint120"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 7151,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2477:1:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2441:37:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint120",
                            "typeString": "uint120"
                          }
                        },
                        "id": 7153,
                        "nodeType": "ExpressionStatement",
                        "src": "2441:37:35"
                      },
                      {
                        "expression": {
                          "id": 7159,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 7154,
                                "name": "_orderStatus",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7088,
                                "src": "2488:12:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                                  "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                                }
                              },
                              "id": 7156,
                              "indexExpression": {
                                "id": 7155,
                                "name": "orderHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7101,
                                "src": "2501:9:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2488:23:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                                "typeString": "struct OrderStatus storage ref"
                              }
                            },
                            "id": 7157,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "denominator",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4039,
                            "src": "2488:35:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint120",
                              "typeString": "uint120"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "31",
                            "id": 7158,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2526:1:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2488:39:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint120",
                            "typeString": "uint120"
                          }
                        },
                        "id": 7160,
                        "nodeType": "ExpressionStatement",
                        "src": "2488:39:35"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7099,
                    "nodeType": "StructuredDocumentation",
                    "src": "1180:317:35",
                    "text": " @dev Internal function to verify and update the status of a basic order.\n @param orderHash The hash of the order.\n @param offerer   The offerer of the order.\n @param signature A signature from the offerer indicating that the order\n                  has been approved."
                  },
                  "id": 7162,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_validateBasicOrderAndUpdateStatus",
                  "nameLocation": "1511:34:35",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7106,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7101,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "1563:9:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7162,
                        "src": "1555:17:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 7100,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1555:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7103,
                        "mutability": "mutable",
                        "name": "offerer",
                        "nameLocation": "1590:7:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7162,
                        "src": "1582:15:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7102,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1582:7:35",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7105,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "1620:9:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7162,
                        "src": "1607:22:35",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7104,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1607:5:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1545:90:35"
                  },
                  "returnParameters": {
                    "id": 7107,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1645:0:35"
                  },
                  "scope": 7714,
                  "src": "1502:1032:35",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7440,
                    "nodeType": "Block",
                    "src": "4714:5200:35",
                    "statements": [
                      {
                        "assignments": [
                          7186
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7186,
                            "mutability": "mutable",
                            "name": "orderParameters",
                            "nameLocation": "4797:15:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 7440,
                            "src": "4774:38:35",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                              "typeString": "struct OrderParameters"
                            },
                            "typeName": {
                              "id": 7185,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 7184,
                                "name": "OrderParameters",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4013,
                                "src": "4774:15:35"
                              },
                              "referencedDeclaration": 4013,
                              "src": "4774:15:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderParameters_$4013_storage_ptr",
                                "typeString": "struct OrderParameters"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7189,
                        "initialValue": {
                          "expression": {
                            "id": 7187,
                            "name": "advancedOrder",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7166,
                            "src": "4815:13:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                              "typeString": "struct AdvancedOrder memory"
                            }
                          },
                          "id": 7188,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "parameters",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4022,
                          "src": "4815:24:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                            "typeString": "struct OrderParameters memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4774:65:35"
                      },
                      {
                        "condition": {
                          "id": 7197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "4948:143:35",
                          "subExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 7191,
                                  "name": "orderParameters",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7186,
                                  "src": "4978:15:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                    "typeString": "struct OrderParameters memory"
                                  }
                                },
                                "id": 7192,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "startTime",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4002,
                                "src": "4978:25:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "expression": {
                                  "id": 7193,
                                  "name": "orderParameters",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7186,
                                  "src": "5021:15:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                    "typeString": "struct OrderParameters memory"
                                  }
                                },
                                "id": 7194,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "endTime",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4004,
                                "src": "5021:23:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "id": 7195,
                                "name": "revertOnInvalid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7172,
                                "src": "5062:15:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "id": 7190,
                              "name": "_verifyTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8284,
                              "src": "4949:11:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_bool_$returns$_t_bool_$",
                                "typeString": "function (uint256,uint256,bool) view returns (bool)"
                              }
                            },
                            "id": 7196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4949:142:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7207,
                        "nodeType": "IfStatement",
                        "src": "4931:302:35",
                        "trueBody": {
                          "id": 7206,
                          "nodeType": "Block",
                          "src": "5102:131:35",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 7200,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5213:1:35",
                                        "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": 7199,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "5205:7:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes32_$",
                                        "typeString": "type(bytes32)"
                                      },
                                      "typeName": {
                                        "id": 7198,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5205:7:35",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 7201,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5205:10:35",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 7202,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5217:1:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 7203,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5220:1:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "id": 7204,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "5204:18:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bytes32_$_t_rational_0_by_1_$_t_rational_0_by_1_$",
                                  "typeString": "tuple(bytes32,int_const 0,int_const 0)"
                                }
                              },
                              "functionReturnParameters": 7183,
                              "id": 7205,
                              "nodeType": "Return",
                              "src": "5197:25:35"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          7209
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7209,
                            "mutability": "mutable",
                            "name": "numerator",
                            "nameLocation": "5329:9:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 7440,
                            "src": "5321:17:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7208,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5321:7:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7215,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 7212,
                                "name": "advancedOrder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7166,
                                "src": "5349:13:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                  "typeString": "struct AdvancedOrder memory"
                                }
                              },
                              "id": 7213,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "numerator",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4024,
                              "src": "5349:23:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            ],
                            "id": 7211,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5341:7:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 7210,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5341:7:35",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 7214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5341:32:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5321:52:35"
                      },
                      {
                        "assignments": [
                          7217
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7217,
                            "mutability": "mutable",
                            "name": "denominator",
                            "nameLocation": "5391:11:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 7440,
                            "src": "5383:19:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7216,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5383:7:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7223,
                        "initialValue": {
                          "arguments": [
                            {
                              "expression": {
                                "id": 7220,
                                "name": "advancedOrder",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7166,
                                "src": "5413:13:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                  "typeString": "struct AdvancedOrder memory"
                                }
                              },
                              "id": 7221,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "denominator",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4026,
                              "src": "5413:25:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            ],
                            "id": 7219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5405:7:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 7218,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "5405:7:35",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 7222,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5405:34:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5383:56:35"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 7230,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7226,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7224,
                              "name": "numerator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7209,
                              "src": "5527:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "id": 7225,
                              "name": "denominator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7217,
                              "src": "5539:11:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5527:23:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7229,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7227,
                              "name": "numerator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7209,
                              "src": "5554:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "30",
                              "id": 7228,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5567:1:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "5554:14:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5527:41:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7235,
                        "nodeType": "IfStatement",
                        "src": "5523:92:35",
                        "trueBody": {
                          "id": 7234,
                          "nodeType": "Block",
                          "src": "5570:45:35",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 7231,
                                  "name": "BadFraction",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1912,
                                  "src": "5591:11:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 7232,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5591:13:35",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7233,
                              "nodeType": "RevertStatement",
                              "src": "5584:20:35"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 7243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7238,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7236,
                              "name": "numerator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7209,
                              "src": "5723:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "id": 7237,
                              "name": "denominator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7217,
                              "src": "5735:11:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "5723:23:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "id": 7240,
                                  "name": "orderParameters",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7186,
                                  "src": "5790:15:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                    "typeString": "struct OrderParameters memory"
                                  }
                                },
                                "id": 7241,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "orderType",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4000,
                                "src": "5790:25:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_OrderType_$3815",
                                  "typeString": "enum OrderType"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_OrderType_$3815",
                                  "typeString": "enum OrderType"
                                }
                              ],
                              "id": 7239,
                              "name": "_doesNotSupportPartialFills",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7713,
                              "src": "5762:27:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_enum$_OrderType_$3815_$returns$_t_bool_$",
                                "typeString": "function (enum OrderType) pure returns (bool)"
                              }
                            },
                            "id": 7242,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5762:54:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5723:93:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7248,
                        "nodeType": "IfStatement",
                        "src": "5706:262:35",
                        "trueBody": {
                          "id": 7247,
                          "nodeType": "Block",
                          "src": "5827:141:35",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 7244,
                                  "name": "PartialFillsNotEnabledForOrder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1896,
                                  "src": "5925:30:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 7245,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5925:32:35",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7246,
                              "nodeType": "RevertStatement",
                              "src": "5918:39:35"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 7253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7249,
                            "name": "orderHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7178,
                            "src": "6059:9:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 7251,
                                "name": "orderParameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7186,
                                "src": "6132:15:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                  "typeString": "struct OrderParameters memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                  "typeString": "struct OrderParameters memory"
                                }
                              ],
                              "id": 7250,
                              "name": "_assertConsiderationLengthAndGetNoncedOrderHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2545,
                              "src": "6071:47:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_struct$_OrderParameters_$4013_memory_ptr_$returns$_t_bytes32_$",
                                "typeString": "function (struct OrderParameters memory) view returns (bytes32)"
                              }
                            },
                            "id": 7252,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6071:86:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "src": "6059:98:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "id": 7254,
                        "nodeType": "ExpressionStatement",
                        "src": "6059:98:35"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 7256,
                              "name": "advancedOrder",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7166,
                              "src": "6301:13:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                "typeString": "struct AdvancedOrder memory"
                              }
                            },
                            {
                              "id": 7257,
                              "name": "criteriaResolvers",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7170,
                              "src": "6328:17:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct CriteriaResolver memory[] memory"
                              }
                            },
                            {
                              "id": 7258,
                              "name": "priorOrderHashes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7175,
                              "src": "6359:16:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              }
                            },
                            {
                              "id": 7259,
                              "name": "orderHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7178,
                              "src": "6389:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 7260,
                                "name": "orderParameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7186,
                                "src": "6412:15:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                  "typeString": "struct OrderParameters memory"
                                }
                              },
                              "id": 7261,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "zoneHash",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4006,
                              "src": "6412:24:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 7262,
                                "name": "orderParameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7186,
                                "src": "6450:15:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                  "typeString": "struct OrderParameters memory"
                                }
                              },
                              "id": 7263,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "orderType",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4000,
                              "src": "6450:25:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_OrderType_$3815",
                                "typeString": "enum OrderType"
                              }
                            },
                            {
                              "expression": {
                                "id": 7264,
                                "name": "orderParameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7186,
                                "src": "6489:15:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                  "typeString": "struct OrderParameters memory"
                                }
                              },
                              "id": 7265,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "offerer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3987,
                              "src": "6489:23:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 7266,
                                "name": "orderParameters",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7186,
                                "src": "6526:15:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                  "typeString": "struct OrderParameters memory"
                                }
                              },
                              "id": 7267,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "zone",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3989,
                              "src": "6526:20:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                "typeString": "struct AdvancedOrder memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct CriteriaResolver memory[] memory"
                              },
                              {
                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                "typeString": "bytes32[] memory"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_enum$_OrderType_$3815",
                                "typeString": "enum OrderType"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 7255,
                            "name": "_assertRestrictedAdvancedOrderValidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8560,
                            "src": "6249:38:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_AdvancedOrder_$4031_memory_ptr_$_t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_bytes32_$_t_bytes32_$_t_enum$_OrderType_$3815_$_t_address_$_t_address_$returns$__$",
                              "typeString": "function (struct AdvancedOrder memory,struct CriteriaResolver memory[] memory,bytes32[] memory,bytes32,bytes32,enum OrderType,address,address) view"
                            }
                          },
                          "id": 7268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6249:307:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7269,
                        "nodeType": "ExpressionStatement",
                        "src": "6249:307:35"
                      },
                      {
                        "assignments": [
                          7272
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7272,
                            "mutability": "mutable",
                            "name": "orderStatus",
                            "nameLocation": "6653:11:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 7440,
                            "src": "6634:30:35",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                              "typeString": "struct OrderStatus"
                            },
                            "typeName": {
                              "id": 7271,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 7270,
                                "name": "OrderStatus",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4040,
                                "src": "6634:11:35"
                              },
                              "referencedDeclaration": 4040,
                              "src": "6634:11:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderStatus_$4040_storage_ptr",
                                "typeString": "struct OrderStatus"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7276,
                        "initialValue": {
                          "baseExpression": {
                            "id": 7273,
                            "name": "_orderStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7088,
                            "src": "6667:12:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                              "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                            }
                          },
                          "id": 7275,
                          "indexExpression": {
                            "id": 7274,
                            "name": "orderHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7178,
                            "src": "6680:9:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "6667:23:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                            "typeString": "struct OrderStatus storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6634:56:35"
                      },
                      {
                        "condition": {
                          "id": 7283,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "6776:190:35",
                          "subExpression": {
                            "arguments": [
                              {
                                "id": 7278,
                                "name": "orderHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7178,
                                "src": "6813:9:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "id": 7279,
                                "name": "orderStatus",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7272,
                                "src": "6840:11:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                                  "typeString": "struct OrderStatus memory"
                                }
                              },
                              {
                                "hexValue": "66616c7365",
                                "id": 7280,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6869:5:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              {
                                "id": 7281,
                                "name": "revertOnInvalid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7172,
                                "src": "6937:15:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                                  "typeString": "struct OrderStatus memory"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "id": 7277,
                              "name": "_verifyOrderStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8378,
                              "src": "6777:18:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_struct$_OrderStatus_$4040_memory_ptr_$_t_bool_$_t_bool_$returns$_t_bool_$",
                                "typeString": "function (bytes32,struct OrderStatus memory,bool,bool) pure returns (bool)"
                              }
                            },
                            "id": 7282,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6777:189:35",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7290,
                        "nodeType": "IfStatement",
                        "src": "6759:348:35",
                        "trueBody": {
                          "id": 7289,
                          "nodeType": "Block",
                          "src": "6977:130:35",
                          "statements": [
                            {
                              "expression": {
                                "components": [
                                  {
                                    "id": 7284,
                                    "name": "orderHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7178,
                                    "src": "7080:9:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 7285,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7091:1:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  {
                                    "hexValue": "30",
                                    "id": 7286,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "7094:1:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "id": 7287,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "7079:17:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_bytes32_$_t_rational_0_by_1_$_t_rational_0_by_1_$",
                                  "typeString": "tuple(bytes32,int_const 0,int_const 0)"
                                }
                              },
                              "functionReturnParameters": 7183,
                              "id": 7288,
                              "nodeType": "Return",
                              "src": "7072:24:35"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "id": 7293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "7202:24:35",
                          "subExpression": {
                            "expression": {
                              "id": 7291,
                              "name": "orderStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7272,
                              "src": "7203:11:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                                "typeString": "struct OrderStatus memory"
                              }
                            },
                            "id": 7292,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isValidated",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4033,
                            "src": "7203:23:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7303,
                        "nodeType": "IfStatement",
                        "src": "7198:194:35",
                        "trueBody": {
                          "id": 7302,
                          "nodeType": "Block",
                          "src": "7228:164:35",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "expression": {
                                      "id": 7295,
                                      "name": "orderParameters",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7186,
                                      "src": "7276:15:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                        "typeString": "struct OrderParameters memory"
                                      }
                                    },
                                    "id": 7296,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "offerer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3987,
                                    "src": "7276:23:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 7297,
                                    "name": "orderHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7178,
                                    "src": "7317:9:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "expression": {
                                      "id": 7298,
                                      "name": "advancedOrder",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7166,
                                      "src": "7344:13:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                        "typeString": "struct AdvancedOrder memory"
                                      }
                                    },
                                    "id": 7299,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "signature",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4028,
                                    "src": "7344:23:35",
                                    "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": 7294,
                                  "name": "_verifySignature",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8316,
                                  "src": "7242:16:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                    "typeString": "function (address,bytes32,bytes memory) view"
                                  }
                                },
                                "id": 7300,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7242:139:35",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7301,
                              "nodeType": "ExpressionStatement",
                              "src": "7242:139:35"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          7305
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7305,
                            "mutability": "mutable",
                            "name": "filledNumerator",
                            "nameLocation": "7491:15:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 7440,
                            "src": "7483:23:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7304,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7483:7:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7308,
                        "initialValue": {
                          "expression": {
                            "id": 7306,
                            "name": "orderStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7272,
                            "src": "7509:11:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                              "typeString": "struct OrderStatus memory"
                            }
                          },
                          "id": 7307,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "numerator",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4037,
                          "src": "7509:21:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint120",
                            "typeString": "uint120"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7483:47:35"
                      },
                      {
                        "assignments": [
                          7310
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7310,
                            "mutability": "mutable",
                            "name": "filledDenominator",
                            "nameLocation": "7548:17:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 7440,
                            "src": "7540:25:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7309,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7540:7:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7313,
                        "initialValue": {
                          "expression": {
                            "id": 7311,
                            "name": "orderStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7272,
                            "src": "7568:11:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                              "typeString": "struct OrderStatus memory"
                            }
                          },
                          "id": 7312,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "denominator",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4039,
                          "src": "7568:23:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint120",
                            "typeString": "uint120"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7540:51:35"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7314,
                            "name": "filledDenominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7310,
                            "src": "7687:17:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 7315,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7708:1:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7687:22:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 7433,
                          "nodeType": "Block",
                          "src": "9436:339:35",
                          "statements": [
                            {
                              "expression": {
                                "id": 7404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 7399,
                                      "name": "_orderStatus",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7088,
                                      "src": "9525:12:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                                        "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                                      }
                                    },
                                    "id": 7401,
                                    "indexExpression": {
                                      "id": 7400,
                                      "name": "orderHash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7178,
                                      "src": "9538:9:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9525:23:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                                      "typeString": "struct OrderStatus storage ref"
                                    }
                                  },
                                  "id": 7402,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "isValidated",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4033,
                                  "src": "9525:35:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "74727565",
                                  "id": 7403,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9563:4:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "true"
                                },
                                "src": "9525:42:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7405,
                              "nodeType": "ExpressionStatement",
                              "src": "9525:42:35"
                            },
                            {
                              "expression": {
                                "id": 7411,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 7406,
                                      "name": "_orderStatus",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7088,
                                      "src": "9581:12:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                                        "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                                      }
                                    },
                                    "id": 7408,
                                    "indexExpression": {
                                      "id": 7407,
                                      "name": "orderHash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7178,
                                      "src": "9594:9:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9581:23:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                                      "typeString": "struct OrderStatus storage ref"
                                    }
                                  },
                                  "id": 7409,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "isCancelled",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4035,
                                  "src": "9581:35:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "hexValue": "66616c7365",
                                  "id": 7410,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9619:5:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                "src": "9581:43:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7412,
                              "nodeType": "ExpressionStatement",
                              "src": "9581:43:35"
                            },
                            {
                              "expression": {
                                "id": 7421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 7413,
                                      "name": "_orderStatus",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7088,
                                      "src": "9638:12:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                                        "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                                      }
                                    },
                                    "id": 7415,
                                    "indexExpression": {
                                      "id": 7414,
                                      "name": "orderHash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7178,
                                      "src": "9651:9:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9638:23:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                                      "typeString": "struct OrderStatus storage ref"
                                    }
                                  },
                                  "id": 7416,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "numerator",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4037,
                                  "src": "9638:33:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint120",
                                    "typeString": "uint120"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 7419,
                                      "name": "numerator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7209,
                                      "src": "9682:9:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 7418,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "9674:7:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint120_$",
                                      "typeString": "type(uint120)"
                                    },
                                    "typeName": {
                                      "id": 7417,
                                      "name": "uint120",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9674:7:35",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 7420,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9674:18:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint120",
                                    "typeString": "uint120"
                                  }
                                },
                                "src": "9638:54:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "id": 7422,
                              "nodeType": "ExpressionStatement",
                              "src": "9638:54:35"
                            },
                            {
                              "expression": {
                                "id": 7431,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 7423,
                                      "name": "_orderStatus",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7088,
                                      "src": "9706:12:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                                        "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                                      }
                                    },
                                    "id": 7425,
                                    "indexExpression": {
                                      "id": 7424,
                                      "name": "orderHash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7178,
                                      "src": "9719:9:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9706:23:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                                      "typeString": "struct OrderStatus storage ref"
                                    }
                                  },
                                  "id": 7426,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "denominator",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4039,
                                  "src": "9706:35:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint120",
                                    "typeString": "uint120"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "arguments": [
                                    {
                                      "id": 7429,
                                      "name": "denominator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7217,
                                      "src": "9752:11:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 7428,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "9744:7:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint120_$",
                                      "typeString": "type(uint120)"
                                    },
                                    "typeName": {
                                      "id": 7427,
                                      "name": "uint120",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "9744:7:35",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 7430,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9744:20:35",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint120",
                                    "typeString": "uint120"
                                  }
                                },
                                "src": "9706:58:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint120",
                                  "typeString": "uint120"
                                }
                              },
                              "id": 7432,
                              "nodeType": "ExpressionStatement",
                              "src": "9706:58:35"
                            }
                          ]
                        },
                        "id": 7434,
                        "nodeType": "IfStatement",
                        "src": "7683:2092:35",
                        "trueBody": {
                          "id": 7398,
                          "nodeType": "Block",
                          "src": "7711:1719:35",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7319,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7317,
                                  "name": "denominator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7217,
                                  "src": "7810:11:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "31",
                                  "id": 7318,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7825:1:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "7810:16:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7331,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7329,
                                    "name": "filledDenominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7310,
                                    "src": "8118:17:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "id": 7330,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7217,
                                    "src": "8139:11:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "8118:32:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 7345,
                                "nodeType": "IfStatement",
                                "src": "8114:360:35",
                                "trueBody": {
                                  "id": 7344,
                                  "nodeType": "Block",
                                  "src": "8152:322:35",
                                  "statements": [
                                    {
                                      "expression": {
                                        "id": 7334,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "id": 7332,
                                          "name": "filledNumerator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7305,
                                          "src": "8250:15:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "*=",
                                        "rightHandSide": {
                                          "id": 7333,
                                          "name": "denominator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7217,
                                          "src": "8269:11:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "8250:30:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 7335,
                                      "nodeType": "ExpressionStatement",
                                      "src": "8250:30:35"
                                    },
                                    {
                                      "expression": {
                                        "id": 7338,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "id": 7336,
                                          "name": "numerator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7209,
                                          "src": "8379:9:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "*=",
                                        "rightHandSide": {
                                          "id": 7337,
                                          "name": "filledDenominator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7310,
                                          "src": "8392:17:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "8379:30:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 7339,
                                      "nodeType": "ExpressionStatement",
                                      "src": "8379:30:35"
                                    },
                                    {
                                      "expression": {
                                        "id": 7342,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                          "id": 7340,
                                          "name": "denominator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7217,
                                          "src": "8427:11:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "*=",
                                        "rightHandSide": {
                                          "id": 7341,
                                          "name": "filledDenominator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7310,
                                          "src": "8442:17:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "8427:32:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 7343,
                                      "nodeType": "ExpressionStatement",
                                      "src": "8427:32:35"
                                    }
                                  ]
                                }
                              },
                              "id": 7346,
                              "nodeType": "IfStatement",
                              "src": "7806:668:35",
                              "trueBody": {
                                "id": 7328,
                                "nodeType": "Block",
                                "src": "7828:190:35",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7322,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7320,
                                        "name": "numerator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7209,
                                        "src": "7925:9:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 7321,
                                        "name": "filledDenominator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7310,
                                        "src": "7937:17:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7925:29:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7323,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7925:29:35"
                                  },
                                  {
                                    "expression": {
                                      "id": 7326,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "id": 7324,
                                        "name": "denominator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7217,
                                        "src": "7972:11:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "id": 7325,
                                        "name": "filledDenominator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7310,
                                        "src": "7986:17:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7972:31:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7327,
                                    "nodeType": "ExpressionStatement",
                                    "src": "7972:31:35"
                                  }
                                ]
                              }
                            },
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7351,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 7349,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7347,
                                    "name": "filledNumerator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7305,
                                    "src": "8573:15:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "id": 7348,
                                    "name": "numerator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7209,
                                    "src": "8591:9:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "8573:27:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "id": 7350,
                                  "name": "denominator",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7217,
                                  "src": "8603:11:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "8573:41:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 7360,
                              "nodeType": "IfStatement",
                              "src": "8569:329:35",
                              "trueBody": {
                                "id": 7359,
                                "nodeType": "Block",
                                "src": "8616:282:35",
                                "statements": [
                                  {
                                    "id": 7358,
                                    "nodeType": "UncheckedBlock",
                                    "src": "8712:172:35",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 7356,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 7352,
                                            "name": "numerator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7209,
                                            "src": "8824:9:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 7355,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 7353,
                                              "name": "denominator",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7217,
                                              "src": "8836:11:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "id": 7354,
                                              "name": "filledNumerator",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7305,
                                              "src": "8850:15:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "8836:29:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "8824:41:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 7357,
                                        "nodeType": "ExpressionStatement",
                                        "src": "8824:41:35"
                                      }
                                    ]
                                  }
                                ]
                              }
                            },
                            {
                              "id": 7397,
                              "nodeType": "UncheckedBlock",
                              "src": "8991:429:35",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7366,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 7361,
                                          "name": "_orderStatus",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7088,
                                          "src": "9098:12:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                                            "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                                          }
                                        },
                                        "id": 7363,
                                        "indexExpression": {
                                          "id": 7362,
                                          "name": "orderHash",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7178,
                                          "src": "9111:9:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "9098:23:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                                          "typeString": "struct OrderStatus storage ref"
                                        }
                                      },
                                      "id": 7364,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "isValidated",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4033,
                                      "src": "9098:35:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "hexValue": "74727565",
                                      "id": 7365,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9136:4:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    "src": "9098:42:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 7367,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9098:42:35"
                                },
                                {
                                  "expression": {
                                    "id": 7373,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 7368,
                                          "name": "_orderStatus",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7088,
                                          "src": "9158:12:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                                            "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                                          }
                                        },
                                        "id": 7370,
                                        "indexExpression": {
                                          "id": 7369,
                                          "name": "orderHash",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7178,
                                          "src": "9171:9:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "9158:23:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                                          "typeString": "struct OrderStatus storage ref"
                                        }
                                      },
                                      "id": 7371,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "isCancelled",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4035,
                                      "src": "9158:35:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "hexValue": "66616c7365",
                                      "id": 7372,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9196:5:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "src": "9158:43:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 7374,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9158:43:35"
                                },
                                {
                                  "expression": {
                                    "id": 7385,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 7375,
                                          "name": "_orderStatus",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7088,
                                          "src": "9219:12:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                                            "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                                          }
                                        },
                                        "id": 7377,
                                        "indexExpression": {
                                          "id": 7376,
                                          "name": "orderHash",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7178,
                                          "src": "9232:9:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "9219:23:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                                          "typeString": "struct OrderStatus storage ref"
                                        }
                                      },
                                      "id": 7378,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "numerator",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4037,
                                      "src": "9219:33:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 7383,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 7381,
                                            "name": "filledNumerator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7305,
                                            "src": "9284:15:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "id": 7382,
                                            "name": "numerator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7209,
                                            "src": "9302:9:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "9284:27:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 7380,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "9255:7:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint120_$",
                                          "typeString": "type(uint120)"
                                        },
                                        "typeName": {
                                          "id": 7379,
                                          "name": "uint120",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9255:7:35",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 7384,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9255:74:35",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "src": "9219:110:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  "id": 7386,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9219:110:35"
                                },
                                {
                                  "expression": {
                                    "id": 7395,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 7387,
                                          "name": "_orderStatus",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7088,
                                          "src": "9347:12:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                                            "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                                          }
                                        },
                                        "id": 7389,
                                        "indexExpression": {
                                          "id": 7388,
                                          "name": "orderHash",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7178,
                                          "src": "9360:9:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "9347:23:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                                          "typeString": "struct OrderStatus storage ref"
                                        }
                                      },
                                      "id": 7390,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "denominator",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4039,
                                      "src": "9347:35:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 7393,
                                          "name": "denominator",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7217,
                                          "src": "9393:11:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 7392,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "9385:7:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint120_$",
                                          "typeString": "type(uint120)"
                                        },
                                        "typeName": {
                                          "id": 7391,
                                          "name": "uint120",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9385:7:35",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 7394,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9385:20:35",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint120",
                                        "typeString": "uint120"
                                      }
                                    },
                                    "src": "9347:58:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  "id": 7396,
                                  "nodeType": "ExpressionStatement",
                                  "src": "9347:58:35"
                                }
                              ]
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 7435,
                              "name": "orderHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7178,
                              "src": "9873:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 7436,
                              "name": "numerator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7209,
                              "src": "9884:9:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 7437,
                              "name": "denominator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7217,
                              "src": "9895:11:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 7438,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "9872:35:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes32_$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(bytes32,uint256,uint256)"
                          }
                        },
                        "functionReturnParameters": 7183,
                        "id": 7439,
                        "nodeType": "Return",
                        "src": "9865:42:35"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7163,
                    "nodeType": "StructuredDocumentation",
                    "src": "2540:1805:35",
                    "text": " @dev Internal function to validate an order, determine what portion to\n      fill, and update its status. The desired fill amount is supplied as\n      a fraction, as is the returned amount to fill.\n @param advancedOrder     The order to fulfill as well as the fraction to\n                          fill. Note that all offer and consideration\n                          amounts must divide with no remainder in order\n                          for a partial fill to be valid.\n @param criteriaResolvers An array where each element contains a reference\n                          to a specific offer or consideration, a token\n                          identifier, and a proof that the supplied token\n                          identifier is contained in the order's merkle\n                          root. Note that a criteria of zero indicates\n                          that any (transferrable) token identifier is\n                          valid and that no proof needs to be supplied.\n @param revertOnInvalid   A boolean indicating whether to revert if the\n                          order is invalid due to the time or status.\n @param priorOrderHashes  The order hashes of each order supplied prior to\n                          the current order as part of a \"match\" variety\n                          of order fulfillment (e.g. this array will be\n                          empty for single or \"fulfill available\").\n @return orderHash      The order hash.\n @return newNumerator   A value indicating the portion of the order that\n                        will be filled.\n @return newDenominator A value indicating the total size of the order."
                  },
                  "id": 7441,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_validateOrderAndUpdateStatus",
                  "nameLocation": "4359:29:35",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7176,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7166,
                        "mutability": "mutable",
                        "name": "advancedOrder",
                        "nameLocation": "4419:13:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7441,
                        "src": "4398:34:35",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                          "typeString": "struct AdvancedOrder"
                        },
                        "typeName": {
                          "id": 7165,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 7164,
                            "name": "AdvancedOrder",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4031,
                            "src": "4398:13:35"
                          },
                          "referencedDeclaration": 4031,
                          "src": "4398:13:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                            "typeString": "struct AdvancedOrder"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7170,
                        "mutability": "mutable",
                        "name": "criteriaResolvers",
                        "nameLocation": "4468:17:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7441,
                        "src": "4442:43:35",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct CriteriaResolver[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7168,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 7167,
                              "name": "CriteriaResolver",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4053,
                              "src": "4442:16:35"
                            },
                            "referencedDeclaration": 4053,
                            "src": "4442:16:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                              "typeString": "struct CriteriaResolver"
                            }
                          },
                          "id": 7169,
                          "nodeType": "ArrayTypeName",
                          "src": "4442:18:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_storage_$dyn_storage_ptr",
                            "typeString": "struct CriteriaResolver[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7172,
                        "mutability": "mutable",
                        "name": "revertOnInvalid",
                        "nameLocation": "4500:15:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7441,
                        "src": "4495:20:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7171,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4495:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7175,
                        "mutability": "mutable",
                        "name": "priorOrderHashes",
                        "nameLocation": "4542:16:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7441,
                        "src": "4525:33:35",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7173,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "4525:7:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 7174,
                          "nodeType": "ArrayTypeName",
                          "src": "4525:9:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4388:176:35"
                  },
                  "returnParameters": {
                    "id": 7183,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7178,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "4620:9:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7441,
                        "src": "4612:17:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 7177,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4612:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7180,
                        "mutability": "mutable",
                        "name": "newNumerator",
                        "nameLocation": "4651:12:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7441,
                        "src": "4643:20:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7179,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4643:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7182,
                        "mutability": "mutable",
                        "name": "newDenominator",
                        "nameLocation": "4685:14:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7441,
                        "src": "4677:22:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7181,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4677:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4598:111:35"
                  },
                  "scope": 7714,
                  "src": "4350:5564:35",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7563,
                    "nodeType": "Block",
                    "src": "10543:2095:35",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 7451,
                            "name": "_assertNonReentrant",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7767,
                            "src": "10619:19:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 7452,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10619:21:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7453,
                        "nodeType": "ExpressionStatement",
                        "src": "10619:21:35"
                      },
                      {
                        "assignments": [
                          7455
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7455,
                            "mutability": "mutable",
                            "name": "offerer",
                            "nameLocation": "10659:7:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 7563,
                            "src": "10651:15:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7454,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10651:7:35",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7456,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10651:15:35"
                      },
                      {
                        "assignments": [
                          7458
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7458,
                            "mutability": "mutable",
                            "name": "zone",
                            "nameLocation": "10684:4:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 7563,
                            "src": "10676:12:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7457,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "10676:7:35",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7459,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "10676:12:35"
                      },
                      {
                        "id": 7558,
                        "nodeType": "UncheckedBlock",
                        "src": "10771:1754:35",
                        "statements": [
                          {
                            "assignments": [
                              7461
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7461,
                                "mutability": "mutable",
                                "name": "totalOrders",
                                "nameLocation": "10882:11:35",
                                "nodeType": "VariableDeclaration",
                                "scope": 7558,
                                "src": "10874:19:35",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7460,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10874:7:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 7464,
                            "initialValue": {
                              "expression": {
                                "id": 7462,
                                "name": "orders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7446,
                                "src": "10896:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_OrderComponents_$3892_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "struct OrderComponents calldata[] calldata"
                                }
                              },
                              "id": 7463,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "10896:13:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "10874:35:35"
                          },
                          {
                            "body": {
                              "id": 7556,
                              "nodeType": "Block",
                              "src": "11003:1512:35",
                              "statements": [
                                {
                                  "assignments": [
                                    7474
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 7474,
                                      "mutability": "mutable",
                                      "name": "order",
                                      "nameLocation": "11085:5:35",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 7556,
                                      "src": "11060:30:35",
                                      "stateVariable": false,
                                      "storageLocation": "calldata",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                        "typeString": "struct OrderComponents"
                                      },
                                      "typeName": {
                                        "id": 7473,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 7472,
                                          "name": "OrderComponents",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 3892,
                                          "src": "11060:15:35"
                                        },
                                        "referencedDeclaration": 3892,
                                        "src": "11060:15:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderComponents_$3892_storage_ptr",
                                          "typeString": "struct OrderComponents"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 7478,
                                  "initialValue": {
                                    "baseExpression": {
                                      "id": 7475,
                                      "name": "orders",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7446,
                                      "src": "11093:6:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_OrderComponents_$3892_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "struct OrderComponents calldata[] calldata"
                                      }
                                    },
                                    "id": 7477,
                                    "indexExpression": {
                                      "id": 7476,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7466,
                                      "src": "11100:1:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "11093:9:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                      "typeString": "struct OrderComponents calldata"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "11060:42:35"
                                },
                                {
                                  "expression": {
                                    "id": 7482,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7479,
                                      "name": "offerer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7455,
                                      "src": "11121:7:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "expression": {
                                        "id": 7480,
                                        "name": "order",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7474,
                                        "src": "11131:5:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                          "typeString": "struct OrderComponents calldata"
                                        }
                                      },
                                      "id": 7481,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "offerer",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3866,
                                      "src": "11131:13:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "11121:23:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 7483,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11121:23:35"
                                },
                                {
                                  "expression": {
                                    "id": 7487,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7484,
                                      "name": "zone",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7458,
                                      "src": "11162:4:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "expression": {
                                        "id": 7485,
                                        "name": "order",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7474,
                                        "src": "11169:5:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                          "typeString": "struct OrderComponents calldata"
                                        }
                                      },
                                      "id": 7486,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "zone",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3868,
                                      "src": "11169:10:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "11162:17:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 7488,
                                  "nodeType": "ExpressionStatement",
                                  "src": "11162:17:35"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    "id": 7497,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 7492,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 7489,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -15,
                                          "src": "11275:3:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 7490,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "11275:10:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "id": 7491,
                                        "name": "offerer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7455,
                                        "src": "11289:7:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "11275:21:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "&&",
                                    "rightExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      "id": 7496,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "expression": {
                                          "id": 7493,
                                          "name": "msg",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -15,
                                          "src": "11300:3:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_message",
                                            "typeString": "msg"
                                          }
                                        },
                                        "id": 7494,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sender",
                                        "nodeType": "MemberAccess",
                                        "src": "11300:10:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "!=",
                                      "rightExpression": {
                                        "id": 7495,
                                        "name": "zone",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7458,
                                        "src": "11314:4:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "11300:18:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "src": "11275:43:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 7502,
                                  "nodeType": "IfStatement",
                                  "src": "11271:115:35",
                                  "trueBody": {
                                    "id": 7501,
                                    "nodeType": "Block",
                                    "src": "11320:66:35",
                                    "statements": [
                                      {
                                        "errorCall": {
                                          "arguments": [],
                                          "expression": {
                                            "argumentTypes": [],
                                            "id": 7498,
                                            "name": "InvalidCanceller",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1909,
                                            "src": "11349:16:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                              "typeString": "function () pure"
                                            }
                                          },
                                          "id": 7499,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "11349:18:35",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 7500,
                                        "nodeType": "RevertStatement",
                                        "src": "11342:25:35"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "assignments": [
                                    7504
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 7504,
                                      "mutability": "mutable",
                                      "name": "orderHash",
                                      "nameLocation": "11491:9:35",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 7556,
                                      "src": "11483:17:35",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      },
                                      "typeName": {
                                        "id": 7503,
                                        "name": "bytes32",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11483:7:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 7532,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "id": 7507,
                                            "name": "offerer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7455,
                                            "src": "11582:7:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "id": 7508,
                                            "name": "zone",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7458,
                                            "src": "11615:4:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 7509,
                                              "name": "order",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7474,
                                              "src": "11645:5:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                                "typeString": "struct OrderComponents calldata"
                                              }
                                            },
                                            "id": 7510,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "offer",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3872,
                                            "src": "11645:11:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_calldata_ptr_$dyn_calldata_ptr",
                                              "typeString": "struct OfferItem calldata[] calldata"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 7511,
                                              "name": "order",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7474,
                                              "src": "11682:5:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                                "typeString": "struct OrderComponents calldata"
                                              }
                                            },
                                            "id": 7512,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "consideration",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3876,
                                            "src": "11682:19:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_calldata_ptr_$dyn_calldata_ptr",
                                              "typeString": "struct ConsiderationItem calldata[] calldata"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 7513,
                                              "name": "order",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7474,
                                              "src": "11727:5:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                                "typeString": "struct OrderComponents calldata"
                                              }
                                            },
                                            "id": 7514,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "orderType",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3879,
                                            "src": "11727:15:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_enum$_OrderType_$3815",
                                              "typeString": "enum OrderType"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 7515,
                                              "name": "order",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7474,
                                              "src": "11768:5:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                                "typeString": "struct OrderComponents calldata"
                                              }
                                            },
                                            "id": 7516,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "startTime",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3881,
                                            "src": "11768:15:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 7517,
                                              "name": "order",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7474,
                                              "src": "11809:5:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                                "typeString": "struct OrderComponents calldata"
                                              }
                                            },
                                            "id": 7518,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "endTime",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3883,
                                            "src": "11809:13:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 7519,
                                              "name": "order",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7474,
                                              "src": "11848:5:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                                "typeString": "struct OrderComponents calldata"
                                              }
                                            },
                                            "id": 7520,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "zoneHash",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3885,
                                            "src": "11848:14:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 7521,
                                              "name": "order",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7474,
                                              "src": "11888:5:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                                "typeString": "struct OrderComponents calldata"
                                              }
                                            },
                                            "id": 7522,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "salt",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3887,
                                            "src": "11888:10:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "id": 7523,
                                              "name": "order",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7474,
                                              "src": "11924:5:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                                "typeString": "struct OrderComponents calldata"
                                              }
                                            },
                                            "id": 7524,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "conduitKey",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 3889,
                                            "src": "11924:16:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          },
                                          {
                                            "expression": {
                                              "expression": {
                                                "id": 7525,
                                                "name": "order",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7474,
                                                "src": "11966:5:35",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                                  "typeString": "struct OrderComponents calldata"
                                                }
                                              },
                                              "id": 7526,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "consideration",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3876,
                                              "src": "11966:19:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_calldata_ptr_$dyn_calldata_ptr",
                                                "typeString": "struct ConsiderationItem calldata[] calldata"
                                              }
                                            },
                                            "id": 7527,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "src": "11966:26:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_array$_t_struct$_OfferItem_$3904_calldata_ptr_$dyn_calldata_ptr",
                                              "typeString": "struct OfferItem calldata[] calldata"
                                            },
                                            {
                                              "typeIdentifier": "t_array$_t_struct$_ConsiderationItem_$3918_calldata_ptr_$dyn_calldata_ptr",
                                              "typeString": "struct ConsiderationItem calldata[] calldata"
                                            },
                                            {
                                              "typeIdentifier": "t_enum$_OrderType_$3815",
                                              "typeString": "enum OrderType"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 7506,
                                          "name": "OrderParameters",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4013,
                                          "src": "11541:15:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_struct$_OrderParameters_$4013_storage_ptr_$",
                                            "typeString": "type(struct OrderParameters storage pointer)"
                                          }
                                        },
                                        "id": 7528,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "structConstructorCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "11541:473:35",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                          "typeString": "struct OrderParameters memory"
                                        }
                                      },
                                      {
                                        "expression": {
                                          "id": 7529,
                                          "name": "order",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7474,
                                          "src": "12036:5:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_OrderComponents_$3892_calldata_ptr",
                                            "typeString": "struct OrderComponents calldata"
                                          }
                                        },
                                        "id": 7530,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "nonce",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 3891,
                                        "src": "12036:11:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_struct$_OrderParameters_$4013_memory_ptr",
                                          "typeString": "struct OrderParameters memory"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 7505,
                                      "name": "_deriveOrderHash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5384,
                                      "src": "11503:16:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_view$_t_struct$_OrderParameters_$4013_memory_ptr_$_t_uint256_$returns$_t_bytes32_$",
                                        "typeString": "function (struct OrderParameters memory,uint256) view returns (bytes32)"
                                      }
                                    },
                                    "id": 7531,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11503:562:35",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "11483:582:35"
                                },
                                {
                                  "expression": {
                                    "id": 7538,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 7533,
                                          "name": "_orderStatus",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7088,
                                          "src": "12155:12:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                                            "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                                          }
                                        },
                                        "id": 7535,
                                        "indexExpression": {
                                          "id": 7534,
                                          "name": "orderHash",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7504,
                                          "src": "12168:9:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "12155:23:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                                          "typeString": "struct OrderStatus storage ref"
                                        }
                                      },
                                      "id": 7536,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "isValidated",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4033,
                                      "src": "12155:35:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "hexValue": "66616c7365",
                                      "id": 7537,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12193:5:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "false"
                                    },
                                    "src": "12155:43:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 7539,
                                  "nodeType": "ExpressionStatement",
                                  "src": "12155:43:35"
                                },
                                {
                                  "expression": {
                                    "id": 7545,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 7540,
                                          "name": "_orderStatus",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7088,
                                          "src": "12216:12:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                                            "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                                          }
                                        },
                                        "id": 7542,
                                        "indexExpression": {
                                          "id": 7541,
                                          "name": "orderHash",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7504,
                                          "src": "12229:9:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "12216:23:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                                          "typeString": "struct OrderStatus storage ref"
                                        }
                                      },
                                      "id": 7543,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "isCancelled",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4035,
                                      "src": "12216:35:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "hexValue": "74727565",
                                      "id": 7544,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "bool",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12254:4:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      },
                                      "value": "true"
                                    },
                                    "src": "12216:42:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 7546,
                                  "nodeType": "ExpressionStatement",
                                  "src": "12216:42:35"
                                },
                                {
                                  "eventCall": {
                                    "arguments": [
                                      {
                                        "id": 7548,
                                        "name": "orderHash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7504,
                                        "src": "12376:9:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "id": 7549,
                                        "name": "offerer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7455,
                                        "src": "12387:7:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 7550,
                                        "name": "zone",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7458,
                                        "src": "12396:4:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 7547,
                                      "name": "OrderCancelled",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1835,
                                      "src": "12361:14:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$",
                                        "typeString": "function (bytes32,address,address)"
                                      }
                                    },
                                    "id": 7551,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12361:40:35",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 7552,
                                  "nodeType": "EmitStatement",
                                  "src": "12356:45:35"
                                },
                                {
                                  "expression": {
                                    "id": 7554,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": true,
                                    "src": "12497:3:35",
                                    "subExpression": {
                                      "id": 7553,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7466,
                                      "src": "12499:1:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7555,
                                  "nodeType": "ExpressionStatement",
                                  "src": "12497:3:35"
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7471,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7469,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7466,
                                "src": "10984:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 7470,
                                "name": "totalOrders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7461,
                                "src": "10988:11:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10984:15:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7557,
                            "initializationExpression": {
                              "assignments": [
                                7466
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 7466,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "10977:1:35",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 7557,
                                  "src": "10969:9:35",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 7465,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "10969:7:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 7468,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 7467,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10981:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "10969:13:35"
                            },
                            "nodeType": "ForStatement",
                            "src": "10964:1551:35"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 7561,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7559,
                            "name": "cancelled",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7449,
                            "src": "12615:9:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 7560,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12627:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "12615:16:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7562,
                        "nodeType": "ExpressionStatement",
                        "src": "12615:16:35"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7442,
                    "nodeType": "StructuredDocumentation",
                    "src": "9920:512:35",
                    "text": " @dev Internal function to cancel an arbitrary number of orders. Note that\n      only the offerer or the zone of a given order may cancel it. Callers\n      should ensure that the intended order was cancelled by calling\n      `getOrderStatus` and confirming that `isCancelled` returns `true`.\n @param orders The orders to cancel.\n @return cancelled A boolean indicating whether the supplied orders were\n                   successfully cancelled."
                  },
                  "id": 7564,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_cancel",
                  "nameLocation": "10446:7:35",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7447,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7446,
                        "mutability": "mutable",
                        "name": "orders",
                        "nameLocation": "10481:6:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7564,
                        "src": "10454:33:35",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_OrderComponents_$3892_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct OrderComponents[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7444,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 7443,
                              "name": "OrderComponents",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 3892,
                              "src": "10454:15:35"
                            },
                            "referencedDeclaration": 3892,
                            "src": "10454:15:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OrderComponents_$3892_storage_ptr",
                              "typeString": "struct OrderComponents"
                            }
                          },
                          "id": 7445,
                          "nodeType": "ArrayTypeName",
                          "src": "10454:17:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_OrderComponents_$3892_storage_$dyn_storage_ptr",
                            "typeString": "struct OrderComponents[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10453:35:35"
                  },
                  "returnParameters": {
                    "id": 7450,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7449,
                        "mutability": "mutable",
                        "name": "cancelled",
                        "nameLocation": "10528:9:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7564,
                        "src": "10523:14:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7448,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "10523:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10522:16:35"
                  },
                  "scope": 7714,
                  "src": "10437:2201:35",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7669,
                    "nodeType": "Block",
                    "src": "13568:2449:35",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 7574,
                            "name": "_assertNonReentrant",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7767,
                            "src": "13644:19:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 7575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13644:21:35",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7576,
                        "nodeType": "ExpressionStatement",
                        "src": "13644:21:35"
                      },
                      {
                        "assignments": [
                          7578
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7578,
                            "mutability": "mutable",
                            "name": "orderHash",
                            "nameLocation": "13734:9:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 7669,
                            "src": "13726:17:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 7577,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "13726:7:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7579,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13726:17:35"
                      },
                      {
                        "assignments": [
                          7581
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7581,
                            "mutability": "mutable",
                            "name": "offerer",
                            "nameLocation": "13761:7:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 7669,
                            "src": "13753:15:35",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7580,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "13753:7:35",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7582,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "13753:15:35"
                      },
                      {
                        "id": 7664,
                        "nodeType": "UncheckedBlock",
                        "src": "13851:2053:35",
                        "statements": [
                          {
                            "assignments": [
                              7584
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7584,
                                "mutability": "mutable",
                                "name": "totalOrders",
                                "nameLocation": "13962:11:35",
                                "nodeType": "VariableDeclaration",
                                "scope": 7664,
                                "src": "13954:19:35",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7583,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "13954:7:35",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 7587,
                            "initialValue": {
                              "expression": {
                                "id": 7585,
                                "name": "orders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7569,
                                "src": "13976:6:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                                  "typeString": "struct Order calldata[] calldata"
                                }
                              },
                              "id": 7586,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "13976:13:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "13954:35:35"
                          },
                          {
                            "body": {
                              "id": 7662,
                              "nodeType": "Block",
                              "src": "14083:1811:35",
                              "statements": [
                                {
                                  "assignments": [
                                    7597
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 7597,
                                      "mutability": "mutable",
                                      "name": "order",
                                      "nameLocation": "14155:5:35",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 7662,
                                      "src": "14140:20:35",
                                      "stateVariable": false,
                                      "storageLocation": "calldata",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Order_$4019_calldata_ptr",
                                        "typeString": "struct Order"
                                      },
                                      "typeName": {
                                        "id": 7596,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 7595,
                                          "name": "Order",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 4019,
                                          "src": "14140:5:35"
                                        },
                                        "referencedDeclaration": 4019,
                                        "src": "14140:5:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Order_$4019_storage_ptr",
                                          "typeString": "struct Order"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 7601,
                                  "initialValue": {
                                    "baseExpression": {
                                      "id": 7598,
                                      "name": "orders",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7569,
                                      "src": "14163:6:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                                        "typeString": "struct Order calldata[] calldata"
                                      }
                                    },
                                    "id": 7600,
                                    "indexExpression": {
                                      "id": 7599,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7589,
                                      "src": "14170:1:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "14163:9:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Order_$4019_calldata_ptr",
                                      "typeString": "struct Order calldata"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "14140:32:35"
                                },
                                {
                                  "assignments": [
                                    7604
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 7604,
                                      "mutability": "mutable",
                                      "name": "orderParameters",
                                      "nameLocation": "14266:15:35",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 7662,
                                      "src": "14241:40:35",
                                      "stateVariable": false,
                                      "storageLocation": "calldata",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderParameters_$4013_calldata_ptr",
                                        "typeString": "struct OrderParameters"
                                      },
                                      "typeName": {
                                        "id": 7603,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 7602,
                                          "name": "OrderParameters",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 4013,
                                          "src": "14241:15:35"
                                        },
                                        "referencedDeclaration": 4013,
                                        "src": "14241:15:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderParameters_$4013_storage_ptr",
                                          "typeString": "struct OrderParameters"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 7607,
                                  "initialValue": {
                                    "expression": {
                                      "id": 7605,
                                      "name": "order",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7597,
                                      "src": "14284:5:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Order_$4019_calldata_ptr",
                                        "typeString": "struct Order calldata"
                                      }
                                    },
                                    "id": 7606,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "parameters",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4016,
                                    "src": "14284:16:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_OrderParameters_$4013_calldata_ptr",
                                      "typeString": "struct OrderParameters calldata"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "14241:59:35"
                                },
                                {
                                  "expression": {
                                    "id": 7611,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7608,
                                      "name": "offerer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7581,
                                      "src": "14377:7:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "expression": {
                                        "id": 7609,
                                        "name": "orderParameters",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7604,
                                        "src": "14387:15:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderParameters_$4013_calldata_ptr",
                                          "typeString": "struct OrderParameters calldata"
                                        }
                                      },
                                      "id": 7610,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "offerer",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3987,
                                      "src": "14387:23:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "src": "14377:33:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "id": 7612,
                                  "nodeType": "ExpressionStatement",
                                  "src": "14377:33:35"
                                },
                                {
                                  "expression": {
                                    "id": 7617,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 7613,
                                      "name": "orderHash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7578,
                                      "src": "14509:9:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "arguments": [
                                        {
                                          "id": 7615,
                                          "name": "orderParameters",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7604,
                                          "src": "14590:15:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_OrderParameters_$4013_calldata_ptr",
                                            "typeString": "struct OrderParameters calldata"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_struct$_OrderParameters_$4013_calldata_ptr",
                                            "typeString": "struct OrderParameters calldata"
                                          }
                                        ],
                                        "id": 7614,
                                        "name": "_assertConsiderationLengthAndGetNoncedOrderHash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2545,
                                        "src": "14521:47:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_struct$_OrderParameters_$4013_memory_ptr_$returns$_t_bytes32_$",
                                          "typeString": "function (struct OrderParameters memory) view returns (bytes32)"
                                        }
                                      },
                                      "id": 7616,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "14521:102:35",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "src": "14509:114:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "id": 7618,
                                  "nodeType": "ExpressionStatement",
                                  "src": "14509:114:35"
                                },
                                {
                                  "assignments": [
                                    7621
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 7621,
                                      "mutability": "mutable",
                                      "name": "orderStatus",
                                      "nameLocation": "14736:11:35",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 7662,
                                      "src": "14717:30:35",
                                      "stateVariable": false,
                                      "storageLocation": "memory",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                                        "typeString": "struct OrderStatus"
                                      },
                                      "typeName": {
                                        "id": 7620,
                                        "nodeType": "UserDefinedTypeName",
                                        "pathNode": {
                                          "id": 7619,
                                          "name": "OrderStatus",
                                          "nodeType": "IdentifierPath",
                                          "referencedDeclaration": 4040,
                                          "src": "14717:11:35"
                                        },
                                        "referencedDeclaration": 4040,
                                        "src": "14717:11:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderStatus_$4040_storage_ptr",
                                          "typeString": "struct OrderStatus"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 7625,
                                  "initialValue": {
                                    "baseExpression": {
                                      "id": 7622,
                                      "name": "_orderStatus",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7088,
                                      "src": "14750:12:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                                        "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                                      }
                                    },
                                    "id": 7624,
                                    "indexExpression": {
                                      "id": 7623,
                                      "name": "orderHash",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7578,
                                      "src": "14763:9:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "14750:23:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                                      "typeString": "struct OrderStatus storage ref"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "14717:56:35"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 7627,
                                        "name": "orderHash",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7578,
                                        "src": "14908:9:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "id": 7628,
                                        "name": "orderStatus",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7621,
                                        "src": "14939:11:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                                          "typeString": "struct OrderStatus memory"
                                        }
                                      },
                                      {
                                        "hexValue": "66616c7365",
                                        "id": 7629,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "14972:5:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      {
                                        "hexValue": "74727565",
                                        "id": 7630,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "15052:4:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "true"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                                          "typeString": "struct OrderStatus memory"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 7626,
                                      "name": "_verifyOrderStatus",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8378,
                                      "src": "14868:18:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_struct$_OrderStatus_$4040_memory_ptr_$_t_bool_$_t_bool_$returns$_t_bool_$",
                                        "typeString": "function (bytes32,struct OrderStatus memory,bool,bool) pure returns (bool)"
                                      }
                                    },
                                    "id": 7631,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "14868:254:35",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 7632,
                                  "nodeType": "ExpressionStatement",
                                  "src": "14868:254:35"
                                },
                                {
                                  "condition": {
                                    "id": 7635,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "!",
                                    "prefix": true,
                                    "src": "15211:24:35",
                                    "subExpression": {
                                      "expression": {
                                        "id": 7633,
                                        "name": "orderStatus",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7621,
                                        "src": "15212:11:35",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                                          "typeString": "struct OrderStatus memory"
                                        }
                                      },
                                      "id": 7634,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "isValidated",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4033,
                                      "src": "15212:23:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 7658,
                                  "nodeType": "IfStatement",
                                  "src": "15207:570:35",
                                  "trueBody": {
                                    "id": 7657,
                                    "nodeType": "Block",
                                    "src": "15237:540:35",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 7637,
                                              "name": "offerer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7581,
                                              "src": "15330:7:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "id": 7638,
                                              "name": "orderHash",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7578,
                                              "src": "15339:9:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 7639,
                                                "name": "order",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7597,
                                                "src": "15350:5:35",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_Order_$4019_calldata_ptr",
                                                  "typeString": "struct Order calldata"
                                                }
                                              },
                                              "id": 7640,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "signature",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 4018,
                                              "src": "15350:15:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_calldata_ptr",
                                                "typeString": "bytes calldata"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              {
                                                "typeIdentifier": "t_bytes_calldata_ptr",
                                                "typeString": "bytes calldata"
                                              }
                                            ],
                                            "id": 7636,
                                            "name": "_verifySignature",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8316,
                                            "src": "15313:16:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                              "typeString": "function (address,bytes32,bytes memory) view"
                                            }
                                          },
                                          "id": 7641,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "15313:53:35",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 7642,
                                        "nodeType": "ExpressionStatement",
                                        "src": "15313:53:35"
                                      },
                                      {
                                        "expression": {
                                          "id": 7648,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "expression": {
                                              "baseExpression": {
                                                "id": 7643,
                                                "name": "_orderStatus",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7088,
                                                "src": "15460:12:35",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                                                  "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                                                }
                                              },
                                              "id": 7645,
                                              "indexExpression": {
                                                "id": 7644,
                                                "name": "orderHash",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7578,
                                                "src": "15473:9:35",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "15460:23:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                                                "typeString": "struct OrderStatus storage ref"
                                              }
                                            },
                                            "id": 7646,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "memberName": "isValidated",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 4033,
                                            "src": "15460:35:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "hexValue": "74727565",
                                            "id": 7647,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "bool",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "15498:4:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            },
                                            "value": "true"
                                          },
                                          "src": "15460:42:35",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "id": 7649,
                                        "nodeType": "ExpressionStatement",
                                        "src": "15460:42:35"
                                      },
                                      {
                                        "eventCall": {
                                          "arguments": [
                                            {
                                              "id": 7651,
                                              "name": "orderHash",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7578,
                                              "src": "15648:9:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            {
                                              "id": 7652,
                                              "name": "offerer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7581,
                                              "src": "15683:7:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 7653,
                                                "name": "orderParameters",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7604,
                                                "src": "15716:15:35",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_OrderParameters_$4013_calldata_ptr",
                                                  "typeString": "struct OrderParameters calldata"
                                                }
                                              },
                                              "id": 7654,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "zone",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3989,
                                              "src": "15716:20:35",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            ],
                                            "id": 7650,
                                            "name": "OrderValidated",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1844,
                                            "src": "15608:14:35",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$",
                                              "typeString": "function (bytes32,address,address)"
                                            }
                                          },
                                          "id": 7655,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "15608:150:35",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 7656,
                                        "nodeType": "EmitStatement",
                                        "src": "15603:155:35"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 7660,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": true,
                                    "src": "15876:3:35",
                                    "subExpression": {
                                      "id": 7659,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7589,
                                      "src": "15878:1:35",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7661,
                                  "nodeType": "ExpressionStatement",
                                  "src": "15876:3:35"
                                }
                              ]
                            },
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7594,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7592,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7589,
                                "src": "14064:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "id": 7593,
                                "name": "totalOrders",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7584,
                                "src": "14068:11:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "14064:15:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 7663,
                            "initializationExpression": {
                              "assignments": [
                                7589
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 7589,
                                  "mutability": "mutable",
                                  "name": "i",
                                  "nameLocation": "14057:1:35",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 7663,
                                  "src": "14049:9:35",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "typeName": {
                                    "id": 7588,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "14049:7:35",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 7591,
                              "initialValue": {
                                "hexValue": "30",
                                "id": 7590,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14061:1:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "14049:13:35"
                            },
                            "nodeType": "ForStatement",
                            "src": "14044:1850:35"
                          }
                        ]
                      },
                      {
                        "expression": {
                          "id": 7667,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7665,
                            "name": "validated",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7572,
                            "src": "15994:9:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 7666,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16006:4:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "15994:16:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7668,
                        "nodeType": "ExpressionStatement",
                        "src": "15994:16:35"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7565,
                    "nodeType": "StructuredDocumentation",
                    "src": "12644:821:35",
                    "text": " @dev Internal function to validate an arbitrary number of orders, thereby\n      registering their signatures as valid and allowing the fulfiller to\n      skip signature verification on fulfillment. Note that validated\n      orders may still be unfulfillable due to invalid item amounts or\n      other factors; callers should determine whether validated orders are\n      fulfillable by simulating the fulfillment call prior to execution.\n      Also note that anyone can validate a signed order, but only the\n      offerer can validate an order without supplying a signature.\n @param orders The orders to validate.\n @return validated A boolean indicating whether the supplied orders were\n                   successfully validated."
                  },
                  "id": 7670,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_validate",
                  "nameLocation": "13479:9:35",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7570,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7569,
                        "mutability": "mutable",
                        "name": "orders",
                        "nameLocation": "13506:6:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7670,
                        "src": "13489:23:35",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_Order_$4019_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct Order[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7567,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 7566,
                              "name": "Order",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4019,
                              "src": "13489:5:35"
                            },
                            "referencedDeclaration": 4019,
                            "src": "13489:5:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Order_$4019_storage_ptr",
                              "typeString": "struct Order"
                            }
                          },
                          "id": 7568,
                          "nodeType": "ArrayTypeName",
                          "src": "13489:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_Order_$4019_storage_$dyn_storage_ptr",
                            "typeString": "struct Order[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13488:25:35"
                  },
                  "returnParameters": {
                    "id": 7573,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7572,
                        "mutability": "mutable",
                        "name": "validated",
                        "nameLocation": "13553:9:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7670,
                        "src": "13548:14:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7571,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "13548:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "13547:16:35"
                  },
                  "scope": 7714,
                  "src": "13470:2547:35",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7701,
                    "nodeType": "Block",
                    "src": "17150:356:35",
                    "statements": [
                      {
                        "assignments": [
                          7686
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7686,
                            "mutability": "mutable",
                            "name": "orderStatus",
                            "nameLocation": "17238:11:35",
                            "nodeType": "VariableDeclaration",
                            "scope": 7701,
                            "src": "17219:30:35",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                              "typeString": "struct OrderStatus"
                            },
                            "typeName": {
                              "id": 7685,
                              "nodeType": "UserDefinedTypeName",
                              "pathNode": {
                                "id": 7684,
                                "name": "OrderStatus",
                                "nodeType": "IdentifierPath",
                                "referencedDeclaration": 4040,
                                "src": "17219:11:35"
                              },
                              "referencedDeclaration": 4040,
                              "src": "17219:11:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderStatus_$4040_storage_ptr",
                                "typeString": "struct OrderStatus"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7690,
                        "initialValue": {
                          "baseExpression": {
                            "id": 7687,
                            "name": "_orderStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7088,
                            "src": "17252:12:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_OrderStatus_$4040_storage_$",
                              "typeString": "mapping(bytes32 => struct OrderStatus storage ref)"
                            }
                          },
                          "id": 7689,
                          "indexExpression": {
                            "id": 7688,
                            "name": "orderHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7673,
                            "src": "17265:9:35",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "17252:23:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_OrderStatus_$4040_storage",
                            "typeString": "struct OrderStatus storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "17219:56:35"
                      },
                      {
                        "expression": {
                          "components": [
                            {
                              "expression": {
                                "id": 7691,
                                "name": "orderStatus",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7686,
                                "src": "17357:11:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                                  "typeString": "struct OrderStatus memory"
                                }
                              },
                              "id": 7692,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isValidated",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4033,
                              "src": "17357:23:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "expression": {
                                "id": 7693,
                                "name": "orderStatus",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7686,
                                "src": "17394:11:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                                  "typeString": "struct OrderStatus memory"
                                }
                              },
                              "id": 7694,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "isCancelled",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4035,
                              "src": "17394:23:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "expression": {
                                "id": 7695,
                                "name": "orderStatus",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7686,
                                "src": "17431:11:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                                  "typeString": "struct OrderStatus memory"
                                }
                              },
                              "id": 7696,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "numerator",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4037,
                              "src": "17431:21:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            },
                            {
                              "expression": {
                                "id": 7697,
                                "name": "orderStatus",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7686,
                                "src": "17466:11:35",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                                  "typeString": "struct OrderStatus memory"
                                }
                              },
                              "id": 7698,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "denominator",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4039,
                              "src": "17466:23:35",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint120",
                                "typeString": "uint120"
                              }
                            }
                          ],
                          "id": 7699,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "17343:156:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bool_$_t_bool_$_t_uint120_$_t_uint120_$",
                            "typeString": "tuple(bool,bool,uint120,uint120)"
                          }
                        },
                        "functionReturnParameters": 7683,
                        "id": 7700,
                        "nodeType": "Return",
                        "src": "17336:163:35"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7671,
                    "nodeType": "StructuredDocumentation",
                    "src": "16023:893:35",
                    "text": " @dev Internal view function to retrieve the status of a given order by\n      hash, including whether the order has been cancelled or validated\n      and the fraction of the order that has been filled.\n @param orderHash The order hash in question.\n @return isValidated A boolean indicating whether the order in question\n                     has been validated (i.e. previously approved or\n                     partially filled).\n @return isCancelled A boolean indicating whether the order in question\n                     has been cancelled.\n @return totalFilled The total portion of the order that has been filled\n                     (i.e. the \"numerator\").\n @return totalSize   The total size of the order that is either filled or\n                     unfilled (i.e. the \"denominator\")."
                  },
                  "id": 7702,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_getOrderStatus",
                  "nameLocation": "16930:15:35",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7674,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7673,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "16954:9:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7702,
                        "src": "16946:17:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 7672,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "16946:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "16945:19:35"
                  },
                  "returnParameters": {
                    "id": 7683,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7676,
                        "mutability": "mutable",
                        "name": "isValidated",
                        "nameLocation": "17030:11:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7702,
                        "src": "17025:16:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7675,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "17025:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7678,
                        "mutability": "mutable",
                        "name": "isCancelled",
                        "nameLocation": "17060:11:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7702,
                        "src": "17055:16:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7677,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "17055:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7680,
                        "mutability": "mutable",
                        "name": "totalFilled",
                        "nameLocation": "17093:11:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7702,
                        "src": "17085:19:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7679,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17085:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7682,
                        "mutability": "mutable",
                        "name": "totalSize",
                        "nameLocation": "17126:9:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7702,
                        "src": "17118:17:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7681,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "17118:7:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17011:134:35"
                  },
                  "scope": 7714,
                  "src": "16921:585:35",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7712,
                    "nodeType": "Block",
                    "src": "18051:307:35",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "18228:124:35",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "18302:40:35",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "orderType",
                                        "nodeType": "YulIdentifier",
                                        "src": "18328:9:35"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "18339:1:35",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "18324:3:35"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "18324:17:35"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "18317:6:35"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "18317:25:35"
                              },
                              "variableNames": [
                                {
                                  "name": "isFullOrder",
                                  "nodeType": "YulIdentifier",
                                  "src": "18302:11:35"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 7709,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18302:11:35",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7706,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18328:9:35",
                            "valueSize": 1
                          }
                        ],
                        "id": 7711,
                        "nodeType": "InlineAssembly",
                        "src": "18219:133:35"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7703,
                    "nodeType": "StructuredDocumentation",
                    "src": "17512:407:35",
                    "text": " @dev Internal pure function to check whether a given order type indicates\n      that partial fills are not supported (e.g. only \"full fills\" are\n      allowed for the order in question).\n @param orderType The order type in question.\n @return isFullOrder A boolean indicating whether the order type only\n                     supports full fills."
                  },
                  "id": 7713,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_doesNotSupportPartialFills",
                  "nameLocation": "17933:27:35",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7707,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7706,
                        "mutability": "mutable",
                        "name": "orderType",
                        "nameLocation": "17971:9:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7713,
                        "src": "17961:19:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_OrderType_$3815",
                          "typeString": "enum OrderType"
                        },
                        "typeName": {
                          "id": 7705,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 7704,
                            "name": "OrderType",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3815,
                            "src": "17961:9:35"
                          },
                          "referencedDeclaration": 3815,
                          "src": "17961:9:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_OrderType_$3815",
                            "typeString": "enum OrderType"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "17960:21:35"
                  },
                  "returnParameters": {
                    "id": 7710,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7709,
                        "mutability": "mutable",
                        "name": "isFullOrder",
                        "nameLocation": "18034:11:35",
                        "nodeType": "VariableDeclaration",
                        "scope": 7713,
                        "src": "18029:16:35",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7708,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "18029:4:35",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "18028:18:35"
                  },
                  "scope": 7714,
                  "src": "17924:434:35",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 7715,
              "src": "555:17805:35",
              "usedErrors": [
                1856,
                1859,
                1866,
                1869,
                1874,
                1883,
                1886,
                1893,
                1896,
                1901,
                1906,
                1909,
                1912,
                1917,
                1920,
                1923,
                2208,
                2217,
                2220,
                2223,
                2226,
                2233,
                2236,
                2249,
                2264,
                2275,
                2280,
                2289
              ]
            }
          ],
          "src": "32:18329:35"
        },
        "id": 35
      },
      "seaport/contracts/lib/ReentrancyGuard.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/ReentrancyGuard.sol",
          "exportedSymbols": {
            "AccumulatorArmed": [
              3772
            ],
            "AccumulatorDisarmed": [
              3769
            ],
            "Accumulator_array_length_ptr": [
              3784
            ],
            "Accumulator_array_offset": [
              3790
            ],
            "Accumulator_array_offset_ptr": [
              3781
            ],
            "Accumulator_conduitKey_ptr": [
              3775
            ],
            "Accumulator_itemSizeOffsetDifference": [
              3787
            ],
            "Accumulator_selector_ptr": [
              3778
            ],
            "AdditionalRecipients_size": [
              3530
            ],
            "AdvancedOrder_numerator_offset": [
              3482
            ],
            "BasicOrder_additionalRecipients_data_cdPtr": [
              3621
            ],
            "BasicOrder_additionalRecipients_head_cdPtr": [
              3612
            ],
            "BasicOrder_additionalRecipients_head_ptr": [
              3678
            ],
            "BasicOrder_additionalRecipients_length_cdPtr": [
              3618
            ],
            "BasicOrder_basicOrderType_cdPtr": [
              3597
            ],
            "BasicOrder_considerationAmount_cdPtr": [
              3582
            ],
            "BasicOrder_considerationHashesArray_ptr": [
              3518
            ],
            "BasicOrder_considerationItem_endAmount_ptr": [
              3642
            ],
            "BasicOrder_considerationItem_identifier_ptr": [
              3636
            ],
            "BasicOrder_considerationItem_itemType_ptr": [
              3630
            ],
            "BasicOrder_considerationItem_startAmount_ptr": [
              3639
            ],
            "BasicOrder_considerationItem_token_ptr": [
              3633
            ],
            "BasicOrder_considerationItem_typeHash_ptr": [
              3627
            ],
            "BasicOrder_considerationToken_cdPtr": [
              3579
            ],
            "BasicOrder_endAmount_cdPtr": [
              3515
            ],
            "BasicOrder_fulfillerConduit_cdPtr": [
              3606
            ],
            "BasicOrder_offerAmount_cdPtr": [
              3594
            ],
            "BasicOrder_offerItem_endAmount_ptr": [
              3654
            ],
            "BasicOrder_offerItem_itemType_ptr": [
              3648
            ],
            "BasicOrder_offerItem_token_ptr": [
              3651
            ],
            "BasicOrder_offerItem_typeHash_ptr": [
              3645
            ],
            "BasicOrder_offerToken_cdPtr": [
              3591
            ],
            "BasicOrder_offererConduit_cdPtr": [
              3603
            ],
            "BasicOrder_offerer_cdPtr": [
              3585
            ],
            "BasicOrder_order_considerationHashes_ptr": [
              3666
            ],
            "BasicOrder_order_nonce_ptr": [
              3675
            ],
            "BasicOrder_order_offerHashes_ptr": [
              3663
            ],
            "BasicOrder_order_offerer_ptr": [
              3660
            ],
            "BasicOrder_order_orderType_ptr": [
              3669
            ],
            "BasicOrder_order_startTime_ptr": [
              3672
            ],
            "BasicOrder_order_typeHash_ptr": [
              3657
            ],
            "BasicOrder_parameters_cdPtr": [
              3576
            ],
            "BasicOrder_parameters_ptr": [
              3624
            ],
            "BasicOrder_signature_cdPtr": [
              3615
            ],
            "BasicOrder_signature_ptr": [
              3681
            ],
            "BasicOrder_startTime_cdPtr": [
              3600
            ],
            "BasicOrder_totalOriginalAdditionalRecipients_cdPtr": [
              3609
            ],
            "BasicOrder_zone_cdPtr": [
              3588
            ],
            "Common_amount_offset": [
              3413
            ],
            "Common_identifier_offset": [
              3410
            ],
            "Common_token_offset": [
              3407
            ],
            "Conduit_execute_ConduitTransfer_length": [
              3739
            ],
            "Conduit_execute_ConduitTransfer_length_ptr": [
              3745
            ],
            "Conduit_execute_ConduitTransfer_offset_ptr": [
              3742
            ],
            "Conduit_execute_ConduitTransfer_ptr": [
              3736
            ],
            "Conduit_execute_signature": [
              3733
            ],
            "Conduit_execute_transferAmount_ptr": [
              3763
            ],
            "Conduit_execute_transferFrom_ptr": [
              3754
            ],
            "Conduit_execute_transferIdentifier_ptr": [
              3760
            ],
            "Conduit_execute_transferItemType_ptr": [
              3748
            ],
            "Conduit_execute_transferTo_ptr": [
              3757
            ],
            "Conduit_execute_transferToken_ptr": [
              3751
            ],
            "Conduit_transferItem_amount_ptr": [
              3808
            ],
            "Conduit_transferItem_from_ptr": [
              3799
            ],
            "Conduit_transferItem_identifier_ptr": [
              3805
            ],
            "Conduit_transferItem_size": [
              3793
            ],
            "Conduit_transferItem_to_ptr": [
              3802
            ],
            "Conduit_transferItem_token_ptr": [
              3796
            ],
            "ConsiderItem_recipient_offset": [
              3431
            ],
            "ConsiderationItem_recipient_offset": [
              3428
            ],
            "CostPerWord": [
              3708
            ],
            "Create2AddressDerivation_length": [
              3717
            ],
            "Create2AddressDerivation_ptr": [
              3714
            ],
            "DefaultFreeMemoryPointer": [
              3506
            ],
            "EIP2098_allButHighestBitMask": [
              3685
            ],
            "EIP712_ConsiderationItem_size": [
              3527
            ],
            "EIP712_DigestPayload_size": [
              3539
            ],
            "EIP712_DomainSeparator_offset": [
              3533
            ],
            "EIP712_OfferItem_size": [
              3524
            ],
            "EIP712_OrderHash_offset": [
              3536
            ],
            "EIP712_Order_size": [
              3521
            ],
            "EIP_712_PREFIX": [
              3702
            ],
            "Execution_conduit_offset": [
              3437
            ],
            "Execution_offerer_offset": [
              3434
            ],
            "ExtraGasBuffer": [
              3705
            ],
            "FiveWords": [
              3497
            ],
            "FourWords": [
              3494
            ],
            "FreeMemoryPointerSlot": [
              3500
            ],
            "Fulfillment_itemIndex_offset": [
              3479
            ],
            "InvalidFulfillmentComponentData_error_len": [
              3444
            ],
            "InvalidFulfillmentComponentData_error_signature": [
              3441
            ],
            "MaskOverByteTwelve": [
              3721
            ],
            "MaskOverFirstFourBytes": [
              3729
            ],
            "MaskOverLastTwentyBytes": [
              3725
            ],
            "MemoryExpansionCoefficient": [
              3711
            ],
            "MissingItemAmount_error_len": [
              3464
            ],
            "MissingItemAmount_error_signature": [
              3461
            ],
            "NameLengthPtr": [
              3389
            ],
            "NameWithLength": [
              3392
            ],
            "NoContract_error_length": [
              3698
            ],
            "NoContract_error_sig_ptr": [
              3692
            ],
            "NoContract_error_signature": [
              3689
            ],
            "NoContract_error_token_ptr": [
              3695
            ],
            "OneConduitExecute_size": [
              3766
            ],
            "OneWord": [
              3485
            ],
            "OrderFulfilled_baseOffset": [
              3552
            ],
            "OrderFulfilled_baseSize": [
              3545
            ],
            "OrderFulfilled_consideration_body_offset": [
              3573
            ],
            "OrderFulfilled_consideration_head_offset": [
              3570
            ],
            "OrderFulfilled_consideration_length_baseOffset": [
              3555
            ],
            "OrderFulfilled_fulfiller_offset": [
              3561
            ],
            "OrderFulfilled_offer_body_offset": [
              3567
            ],
            "OrderFulfilled_offer_head_offset": [
              3564
            ],
            "OrderFulfilled_offer_length_baseOffset": [
              3558
            ],
            "OrderFulfilled_selector": [
              3549
            ],
            "OrderParameters_conduit_offset": [
              3473
            ],
            "OrderParameters_consideration_head_offset": [
              3470
            ],
            "OrderParameters_nonce_offset": [
              3476
            ],
            "OrderParameters_offer_head_offset": [
              3467
            ],
            "Panic_arithmetic": [
              3457
            ],
            "Panic_error_length": [
              3454
            ],
            "Panic_error_offset": [
              3451
            ],
            "Panic_error_signature": [
              3448
            ],
            "ReceivedItem_CommonParams_size": [
              3425
            ],
            "ReceivedItem_amount_offset": [
              3419
            ],
            "ReceivedItem_recipient_offset": [
              3422
            ],
            "ReceivedItem_size": [
              3416
            ],
            "ReentrancyErrors": [
              2209
            ],
            "ReentrancyGuard": [
              7768
            ],
            "Slot0x80": [
              3509
            ],
            "Slot0xA0": [
              3512
            ],
            "ThreeWords": [
              3491
            ],
            "TwoWords": [
              3488
            ],
            "Version": [
              3395
            ],
            "Version_length": [
              3398
            ],
            "ZeroSlot": [
              3503
            ],
            "_ENTERED": [
              3404
            ],
            "_NOT_ENTERED": [
              3401
            ],
            "receivedItemsHash_ptr": [
              3542
            ]
          },
          "id": 7769,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7716,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:36"
            },
            {
              "absolutePath": "seaport/contracts/interfaces/ReentrancyErrors.sol",
              "file": "../interfaces/ReentrancyErrors.sol",
              "id": 7718,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7769,
              "sourceUnit": 2210,
              "src": "57:70:36",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7717,
                    "name": "ReentrancyErrors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2209,
                    "src": "66:16:36",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationConstants.sol",
              "file": "./ConsiderationConstants.sol",
              "id": 7719,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7769,
              "sourceUnit": 3809,
              "src": "129:38:36",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 7721,
                    "name": "ReentrancyErrors",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2209,
                    "src": "374:16:36"
                  },
                  "id": 7722,
                  "nodeType": "InheritanceSpecifier",
                  "src": "374:16:36"
                }
              ],
              "canonicalName": "ReentrancyGuard",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 7720,
                "nodeType": "StructuredDocumentation",
                "src": "169:176:36",
                "text": " @title ReentrancyGuard\n @author 0age\n @notice ReentrancyGuard contains a storage variable and related functionality\n         for protecting against reentrancy."
              },
              "fullyImplemented": true,
              "id": 7768,
              "linearizedBaseContracts": [
                7768,
                2209
              ],
              "name": "ReentrancyGuard",
              "nameLocation": "355:15:36",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 7724,
                  "mutability": "mutable",
                  "name": "_reentrancyGuard",
                  "nameLocation": "468:16:36",
                  "nodeType": "VariableDeclaration",
                  "scope": 7768,
                  "src": "452:32:36",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7723,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "452:7:36",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 7732,
                    "nodeType": "Block",
                    "src": "584:111:36",
                    "statements": [
                      {
                        "expression": {
                          "id": 7730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7728,
                            "name": "_reentrancyGuard",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7724,
                            "src": "657:16:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7729,
                            "name": "_NOT_ENTERED",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3401,
                            "src": "676:12:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "657:31:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7731,
                        "nodeType": "ExpressionStatement",
                        "src": "657:31:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7725,
                    "nodeType": "StructuredDocumentation",
                    "src": "491:74:36",
                    "text": " @dev Initialize the reentrancy guard during deployment."
                  },
                  "id": 7733,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7726,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "581:2:36"
                  },
                  "returnParameters": {
                    "id": 7727,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "584:0:36"
                  },
                  "scope": 7768,
                  "src": "570:125:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 7744,
                    "nodeType": "Block",
                    "src": "956:177:36",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 7737,
                            "name": "_assertNonReentrant",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7767,
                            "src": "1030:19:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$__$",
                              "typeString": "function () view"
                            }
                          },
                          "id": 7738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1030:21:36",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7739,
                        "nodeType": "ExpressionStatement",
                        "src": "1030:21:36"
                      },
                      {
                        "expression": {
                          "id": 7742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7740,
                            "name": "_reentrancyGuard",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7724,
                            "src": "1099:16:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7741,
                            "name": "_ENTERED",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3404,
                            "src": "1118:8:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1099:27:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7743,
                        "nodeType": "ExpressionStatement",
                        "src": "1099:27:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7734,
                    "nodeType": "StructuredDocumentation",
                    "src": "701:210:36",
                    "text": " @dev Internal function to ensure that the sentinel value for the\n      reentrancy guard is not currently set and, if not, to set the\n      sentinel value for the reentrancy guard."
                  },
                  "id": 7745,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_setReentrancyGuard",
                  "nameLocation": "925:19:36",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7735,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "944:2:36"
                  },
                  "returnParameters": {
                    "id": 7736,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "956:0:36"
                  },
                  "scope": 7768,
                  "src": "916:217:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7753,
                    "nodeType": "Block",
                    "src": "1273:87:36",
                    "statements": [
                      {
                        "expression": {
                          "id": 7751,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 7749,
                            "name": "_reentrancyGuard",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7724,
                            "src": "1322:16:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 7750,
                            "name": "_NOT_ENTERED",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3401,
                            "src": "1341:12:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1322:31:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7752,
                        "nodeType": "ExpressionStatement",
                        "src": "1322:31:36"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7746,
                    "nodeType": "StructuredDocumentation",
                    "src": "1139:87:36",
                    "text": " @dev Internal function to unset the reentrancy guard sentinel value."
                  },
                  "id": 7754,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_clearReentrancyGuard",
                  "nameLocation": "1240:21:36",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7747,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1261:2:36"
                  },
                  "returnParameters": {
                    "id": 7748,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1273:0:36"
                  },
                  "scope": 7768,
                  "src": "1231:129:36",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7766,
                    "nodeType": "Block",
                    "src": "1555:170:36",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7760,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7758,
                            "name": "_reentrancyGuard",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7724,
                            "src": "1635:16:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "id": 7759,
                            "name": "_NOT_ENTERED",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3401,
                            "src": "1655:12:36",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1635:32:36",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7765,
                        "nodeType": "IfStatement",
                        "src": "1631:88:36",
                        "trueBody": {
                          "id": 7764,
                          "nodeType": "Block",
                          "src": "1669:50:36",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 7761,
                                  "name": "NoReentrantCalls",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2208,
                                  "src": "1690:16:36",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 7762,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1690:18:36",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7763,
                              "nodeType": "RevertStatement",
                              "src": "1683:25:36"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7755,
                    "nodeType": "StructuredDocumentation",
                    "src": "1366:139:36",
                    "text": " @dev Internal view function to ensure that the sentinel value for the\nreentrancy guard is not currently set."
                  },
                  "id": 7767,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_assertNonReentrant",
                  "nameLocation": "1519:19:36",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7756,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1538:2:36"
                  },
                  "returnParameters": {
                    "id": 7757,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1555:0:36"
                  },
                  "scope": 7768,
                  "src": "1510:215:36",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 7769,
              "src": "346:1381:36",
              "usedErrors": [
                2208
              ]
            }
          ],
          "src": "32:1696:36"
        },
        "id": 36
      },
      "seaport/contracts/lib/SignatureVerification.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/SignatureVerification.sol",
          "exportedSymbols": {
            "AccumulatorArmed": [
              3772
            ],
            "AccumulatorDisarmed": [
              3769
            ],
            "Accumulator_array_length_ptr": [
              3784
            ],
            "Accumulator_array_offset": [
              3790
            ],
            "Accumulator_array_offset_ptr": [
              3781
            ],
            "Accumulator_conduitKey_ptr": [
              3775
            ],
            "Accumulator_itemSizeOffsetDifference": [
              3787
            ],
            "Accumulator_selector_ptr": [
              3778
            ],
            "AdditionalRecipients_size": [
              3530
            ],
            "AdvancedOrder_numerator_offset": [
              3482
            ],
            "BasicOrder_additionalRecipients_data_cdPtr": [
              3621
            ],
            "BasicOrder_additionalRecipients_head_cdPtr": [
              3612
            ],
            "BasicOrder_additionalRecipients_head_ptr": [
              3678
            ],
            "BasicOrder_additionalRecipients_length_cdPtr": [
              3618
            ],
            "BasicOrder_basicOrderType_cdPtr": [
              3597
            ],
            "BasicOrder_considerationAmount_cdPtr": [
              3582
            ],
            "BasicOrder_considerationHashesArray_ptr": [
              3518
            ],
            "BasicOrder_considerationItem_endAmount_ptr": [
              3642
            ],
            "BasicOrder_considerationItem_identifier_ptr": [
              3636
            ],
            "BasicOrder_considerationItem_itemType_ptr": [
              3630
            ],
            "BasicOrder_considerationItem_startAmount_ptr": [
              3639
            ],
            "BasicOrder_considerationItem_token_ptr": [
              3633
            ],
            "BasicOrder_considerationItem_typeHash_ptr": [
              3627
            ],
            "BasicOrder_considerationToken_cdPtr": [
              3579
            ],
            "BasicOrder_endAmount_cdPtr": [
              3515
            ],
            "BasicOrder_fulfillerConduit_cdPtr": [
              3606
            ],
            "BasicOrder_offerAmount_cdPtr": [
              3594
            ],
            "BasicOrder_offerItem_endAmount_ptr": [
              3654
            ],
            "BasicOrder_offerItem_itemType_ptr": [
              3648
            ],
            "BasicOrder_offerItem_token_ptr": [
              3651
            ],
            "BasicOrder_offerItem_typeHash_ptr": [
              3645
            ],
            "BasicOrder_offerToken_cdPtr": [
              3591
            ],
            "BasicOrder_offererConduit_cdPtr": [
              3603
            ],
            "BasicOrder_offerer_cdPtr": [
              3585
            ],
            "BasicOrder_order_considerationHashes_ptr": [
              3666
            ],
            "BasicOrder_order_nonce_ptr": [
              3675
            ],
            "BasicOrder_order_offerHashes_ptr": [
              3663
            ],
            "BasicOrder_order_offerer_ptr": [
              3660
            ],
            "BasicOrder_order_orderType_ptr": [
              3669
            ],
            "BasicOrder_order_startTime_ptr": [
              3672
            ],
            "BasicOrder_order_typeHash_ptr": [
              3657
            ],
            "BasicOrder_parameters_cdPtr": [
              3576
            ],
            "BasicOrder_parameters_ptr": [
              3624
            ],
            "BasicOrder_signature_cdPtr": [
              3615
            ],
            "BasicOrder_signature_ptr": [
              3681
            ],
            "BasicOrder_startTime_cdPtr": [
              3600
            ],
            "BasicOrder_totalOriginalAdditionalRecipients_cdPtr": [
              3609
            ],
            "BasicOrder_zone_cdPtr": [
              3588
            ],
            "Common_amount_offset": [
              3413
            ],
            "Common_identifier_offset": [
              3410
            ],
            "Common_token_offset": [
              3407
            ],
            "Conduit_execute_ConduitTransfer_length": [
              3739
            ],
            "Conduit_execute_ConduitTransfer_length_ptr": [
              3745
            ],
            "Conduit_execute_ConduitTransfer_offset_ptr": [
              3742
            ],
            "Conduit_execute_ConduitTransfer_ptr": [
              3736
            ],
            "Conduit_execute_signature": [
              3733
            ],
            "Conduit_execute_transferAmount_ptr": [
              3763
            ],
            "Conduit_execute_transferFrom_ptr": [
              3754
            ],
            "Conduit_execute_transferIdentifier_ptr": [
              3760
            ],
            "Conduit_execute_transferItemType_ptr": [
              3748
            ],
            "Conduit_execute_transferTo_ptr": [
              3757
            ],
            "Conduit_execute_transferToken_ptr": [
              3751
            ],
            "Conduit_transferItem_amount_ptr": [
              3808
            ],
            "Conduit_transferItem_from_ptr": [
              3799
            ],
            "Conduit_transferItem_identifier_ptr": [
              3805
            ],
            "Conduit_transferItem_size": [
              3793
            ],
            "Conduit_transferItem_to_ptr": [
              3802
            ],
            "Conduit_transferItem_token_ptr": [
              3796
            ],
            "ConsiderItem_recipient_offset": [
              3431
            ],
            "ConsiderationItem_recipient_offset": [
              3428
            ],
            "CostPerWord": [
              3708
            ],
            "Create2AddressDerivation_length": [
              3717
            ],
            "Create2AddressDerivation_ptr": [
              3714
            ],
            "DefaultFreeMemoryPointer": [
              3506
            ],
            "EIP1271Interface": [
              2181
            ],
            "EIP2098_allButHighestBitMask": [
              3685
            ],
            "EIP712_ConsiderationItem_size": [
              3527
            ],
            "EIP712_DigestPayload_size": [
              3539
            ],
            "EIP712_DomainSeparator_offset": [
              3533
            ],
            "EIP712_OfferItem_size": [
              3524
            ],
            "EIP712_OrderHash_offset": [
              3536
            ],
            "EIP712_Order_size": [
              3521
            ],
            "EIP_712_PREFIX": [
              3702
            ],
            "Execution_conduit_offset": [
              3437
            ],
            "Execution_offerer_offset": [
              3434
            ],
            "ExtraGasBuffer": [
              3705
            ],
            "FiveWords": [
              3497
            ],
            "FourWords": [
              3494
            ],
            "FreeMemoryPointerSlot": [
              3500
            ],
            "Fulfillment_itemIndex_offset": [
              3479
            ],
            "InvalidFulfillmentComponentData_error_len": [
              3444
            ],
            "InvalidFulfillmentComponentData_error_signature": [
              3441
            ],
            "LowLevelHelpers": [
              5505
            ],
            "MaskOverByteTwelve": [
              3721
            ],
            "MaskOverFirstFourBytes": [
              3729
            ],
            "MaskOverLastTwentyBytes": [
              3725
            ],
            "MemoryExpansionCoefficient": [
              3711
            ],
            "MissingItemAmount_error_len": [
              3464
            ],
            "MissingItemAmount_error_signature": [
              3461
            ],
            "NameLengthPtr": [
              3389
            ],
            "NameWithLength": [
              3392
            ],
            "NoContract_error_length": [
              3698
            ],
            "NoContract_error_sig_ptr": [
              3692
            ],
            "NoContract_error_signature": [
              3689
            ],
            "NoContract_error_token_ptr": [
              3695
            ],
            "OneConduitExecute_size": [
              3766
            ],
            "OneWord": [
              3485
            ],
            "OrderFulfilled_baseOffset": [
              3552
            ],
            "OrderFulfilled_baseSize": [
              3545
            ],
            "OrderFulfilled_consideration_body_offset": [
              3573
            ],
            "OrderFulfilled_consideration_head_offset": [
              3570
            ],
            "OrderFulfilled_consideration_length_baseOffset": [
              3555
            ],
            "OrderFulfilled_fulfiller_offset": [
              3561
            ],
            "OrderFulfilled_offer_body_offset": [
              3567
            ],
            "OrderFulfilled_offer_head_offset": [
              3564
            ],
            "OrderFulfilled_offer_length_baseOffset": [
              3558
            ],
            "OrderFulfilled_selector": [
              3549
            ],
            "OrderParameters_conduit_offset": [
              3473
            ],
            "OrderParameters_consideration_head_offset": [
              3470
            ],
            "OrderParameters_nonce_offset": [
              3476
            ],
            "OrderParameters_offer_head_offset": [
              3467
            ],
            "Panic_arithmetic": [
              3457
            ],
            "Panic_error_length": [
              3454
            ],
            "Panic_error_offset": [
              3451
            ],
            "Panic_error_signature": [
              3448
            ],
            "ReceivedItem_CommonParams_size": [
              3425
            ],
            "ReceivedItem_amount_offset": [
              3419
            ],
            "ReceivedItem_recipient_offset": [
              3422
            ],
            "ReceivedItem_size": [
              3416
            ],
            "SignatureVerification": [
              7917
            ],
            "SignatureVerificationErrors": [
              2227
            ],
            "Slot0x80": [
              3509
            ],
            "Slot0xA0": [
              3512
            ],
            "ThreeWords": [
              3491
            ],
            "TwoWords": [
              3488
            ],
            "Version": [
              3395
            ],
            "Version_length": [
              3398
            ],
            "ZeroSlot": [
              3503
            ],
            "_ENTERED": [
              3404
            ],
            "_NOT_ENTERED": [
              3401
            ],
            "receivedItemsHash_ptr": [
              3542
            ]
          },
          "id": 7918,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7770,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:37"
            },
            {
              "absolutePath": "seaport/contracts/interfaces/EIP1271Interface.sol",
              "file": "../interfaces/EIP1271Interface.sol",
              "id": 7772,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7918,
              "sourceUnit": 2182,
              "src": "57:70:37",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7771,
                    "name": "EIP1271Interface",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2181,
                    "src": "66:16:37",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/interfaces/SignatureVerificationErrors.sol",
              "file": "../interfaces/SignatureVerificationErrors.sol",
              "id": 7774,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7918,
              "sourceUnit": 2228,
              "src": "148:96:37",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7773,
                    "name": "SignatureVerificationErrors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2227,
                    "src": "161:27:37",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/LowLevelHelpers.sol",
              "file": "./LowLevelHelpers.sol",
              "id": 7776,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7918,
              "sourceUnit": 5506,
              "src": "246:56:37",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7775,
                    "name": "LowLevelHelpers",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5505,
                    "src": "255:15:37",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationConstants.sol",
              "file": "./ConsiderationConstants.sol",
              "id": 7777,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7918,
              "sourceUnit": 3809,
              "src": "304:38:37",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 7779,
                    "name": "SignatureVerificationErrors",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2227,
                    "src": "508:27:37"
                  },
                  "id": 7780,
                  "nodeType": "InheritanceSpecifier",
                  "src": "508:27:37"
                },
                {
                  "baseName": {
                    "id": 7781,
                    "name": "LowLevelHelpers",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5505,
                    "src": "537:15:37"
                  },
                  "id": 7782,
                  "nodeType": "InheritanceSpecifier",
                  "src": "537:15:37"
                }
              ],
              "canonicalName": "SignatureVerification",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 7778,
                "nodeType": "StructuredDocumentation",
                "src": "344:129:37",
                "text": " @title SignatureVerification\n @author 0age\n @notice SignatureVerification contains logic for verifying signatures."
              },
              "fullyImplemented": true,
              "id": 7917,
              "linearizedBaseContracts": [
                7917,
                5505,
                2227
              ],
              "name": "SignatureVerification",
              "nameLocation": "483:21:37",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 7870,
                    "nodeType": "Block",
                    "src": "1384:2595:37",
                    "statements": [
                      {
                        "assignments": [
                          7793
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7793,
                            "mutability": "mutable",
                            "name": "r",
                            "nameLocation": "1455:1:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 7870,
                            "src": "1447:9:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 7792,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1447:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7794,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1447:9:37"
                      },
                      {
                        "assignments": [
                          7796
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7796,
                            "mutability": "mutable",
                            "name": "s",
                            "nameLocation": "1474:1:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 7870,
                            "src": "1466:9:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 7795,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "1466:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7797,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1466:9:37"
                      },
                      {
                        "assignments": [
                          7799
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7799,
                            "mutability": "mutable",
                            "name": "v",
                            "nameLocation": "1491:1:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 7870,
                            "src": "1485:7:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "typeName": {
                              "id": 7798,
                              "name": "uint8",
                              "nodeType": "ElementaryTypeName",
                              "src": "1485:5:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7800,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1485:7:37"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7804,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 7801,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7789,
                              "src": "1587:9:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 7802,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "src": "1587:16:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "3634",
                            "id": 7803,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1607:2:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_64_by_1",
                              "typeString": "int_const 64"
                            },
                            "value": "64"
                          },
                          "src": "1587:22:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7813,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 7810,
                                "name": "signature",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7789,
                                "src": "2370:9:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 7811,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "2370:16:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "3635",
                              "id": 7812,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2390:2:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_65_by_1",
                                "typeString": "int_const 65"
                              },
                              "value": "65"
                            },
                            "src": "2370:22:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "id": 7836,
                            "nodeType": "Block",
                            "src": "3092:330:37",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 7830,
                                      "name": "signer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7785,
                                      "src": "3293:6:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 7831,
                                      "name": "digest",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7787,
                                      "src": "3301:6:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "id": 7832,
                                      "name": "signature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7789,
                                      "src": "3309:9:37",
                                      "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": 7829,
                                    "name": "_assertValidEIP1271Signature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7916,
                                    "src": "3264:28:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                      "typeString": "function (address,bytes32,bytes memory) view"
                                    }
                                  },
                                  "id": 7833,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3264:55:37",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 7834,
                                "nodeType": "ExpressionStatement",
                                "src": "3264:55:37"
                              },
                              {
                                "functionReturnParameters": 7791,
                                "id": 7835,
                                "nodeType": "Return",
                                "src": "3405:7:37"
                              }
                            ]
                          },
                          "id": 7837,
                          "nodeType": "IfStatement",
                          "src": "2366:1056:37",
                          "trueBody": {
                            "id": 7828,
                            "nodeType": "Block",
                            "src": "2394:692:37",
                            "statements": [
                              {
                                "AST": {
                                  "nodeType": "YulBlock",
                                  "src": "2577:352:37",
                                  "statements": [
                                    {
                                      "nodeType": "YulAssignment",
                                      "src": "2650:35:37",
                                      "value": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "signature",
                                                "nodeType": "YulIdentifier",
                                                "src": "2665:9:37"
                                              },
                                              {
                                                "name": "OneWord",
                                                "nodeType": "YulIdentifier",
                                                "src": "2676:7:37"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2661:3:37"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2661:23:37"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "2655:5:37"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2655:30:37"
                                      },
                                      "variableNames": [
                                        {
                                          "name": "r",
                                          "nodeType": "YulIdentifier",
                                          "src": "2650:1:37"
                                        }
                                      ]
                                    },
                                    {
                                      "nodeType": "YulAssignment",
                                      "src": "2759:36:37",
                                      "value": {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "signature",
                                                "nodeType": "YulIdentifier",
                                                "src": "2774:9:37"
                                              },
                                              {
                                                "name": "TwoWords",
                                                "nodeType": "YulIdentifier",
                                                "src": "2785:8:37"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "add",
                                              "nodeType": "YulIdentifier",
                                              "src": "2770:3:37"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2770:24:37"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "2764:5:37"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2764:31:37"
                                      },
                                      "variableNames": [
                                        {
                                          "name": "s",
                                          "nodeType": "YulIdentifier",
                                          "src": "2759:1:37"
                                        }
                                      ]
                                    },
                                    {
                                      "nodeType": "YulAssignment",
                                      "src": "2868:47:37",
                                      "value": {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "2878:1:37",
                                            "type": "",
                                            "value": "0"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "signature",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2891:9:37"
                                                  },
                                                  {
                                                    "name": "ThreeWords",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2902:10:37"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2887:3:37"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2887:26:37"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mload",
                                              "nodeType": "YulIdentifier",
                                              "src": "2881:5:37"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2881:33:37"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "byte",
                                          "nodeType": "YulIdentifier",
                                          "src": "2873:4:37"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2873:42:37"
                                      },
                                      "variableNames": [
                                        {
                                          "name": "v",
                                          "nodeType": "YulIdentifier",
                                          "src": "2868:1:37"
                                        }
                                      ]
                                    }
                                  ]
                                },
                                "evmVersion": "london",
                                "externalReferences": [
                                  {
                                    "declaration": 3485,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "2676:7:37",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 3491,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "2902:10:37",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 3488,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "2785:8:37",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 7793,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "2650:1:37",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 7796,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "2759:1:37",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 7789,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "2665:9:37",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 7789,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "2774:9:37",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 7789,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "2891:9:37",
                                    "valueSize": 1
                                  },
                                  {
                                    "declaration": 7799,
                                    "isOffset": false,
                                    "isSlot": false,
                                    "src": "2868:1:37",
                                    "valueSize": 1
                                  }
                                ],
                                "id": 7814,
                                "nodeType": "InlineAssembly",
                                "src": "2568:361:37"
                              },
                              {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 7821,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 7817,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 7815,
                                      "name": "v",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7799,
                                      "src": "3000:1:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "hexValue": "3237",
                                      "id": 7816,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3005:2:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_27_by_1",
                                        "typeString": "int_const 27"
                                      },
                                      "value": "27"
                                    },
                                    "src": "3000:7:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 7820,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 7818,
                                      "name": "v",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7799,
                                      "src": "3011:1:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "!=",
                                    "rightExpression": {
                                      "hexValue": "3238",
                                      "id": 7819,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3016:2:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_28_by_1",
                                        "typeString": "int_const 28"
                                      },
                                      "value": "28"
                                    },
                                    "src": "3011:7:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "3000:18:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 7827,
                                "nodeType": "IfStatement",
                                "src": "2996:80:37",
                                "trueBody": {
                                  "id": 7826,
                                  "nodeType": "Block",
                                  "src": "3020:56:37",
                                  "statements": [
                                    {
                                      "errorCall": {
                                        "arguments": [
                                          {
                                            "id": 7823,
                                            "name": "v",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7799,
                                            "src": "3059:1:37",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          ],
                                          "id": 7822,
                                          "name": "BadSignatureV",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2217,
                                          "src": "3045:13:37",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_error_pure$_t_uint8_$returns$__$",
                                            "typeString": "function (uint8) pure"
                                          }
                                        },
                                        "id": 7824,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3045:16:37",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_tuple$__$",
                                          "typeString": "tuple()"
                                        }
                                      },
                                      "id": 7825,
                                      "nodeType": "RevertStatement",
                                      "src": "3038:23:37"
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        },
                        "id": 7838,
                        "nodeType": "IfStatement",
                        "src": "1583:1839:37",
                        "trueBody": {
                          "id": 7809,
                          "nodeType": "Block",
                          "src": "1611:749:37",
                          "statements": [
                            {
                              "assignments": [
                                7806
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 7806,
                                  "mutability": "mutable",
                                  "name": "vs",
                                  "nameLocation": "1707:2:37",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 7809,
                                  "src": "1699:10:37",
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  "typeName": {
                                    "id": 7805,
                                    "name": "bytes32",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1699:7:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "visibility": "internal"
                                }
                              ],
                              "id": 7807,
                              "nodeType": "VariableDeclarationStatement",
                              "src": "1699:10:37"
                            },
                            {
                              "AST": {
                                "nodeType": "YulBlock",
                                "src": "1813:537:37",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "1909:35:37",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "signature",
                                              "nodeType": "YulIdentifier",
                                              "src": "1924:9:37"
                                            },
                                            {
                                              "name": "OneWord",
                                              "nodeType": "YulIdentifier",
                                              "src": "1935:7:37"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "1920:3:37"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "1920:23:37"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "1914:5:37"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "1914:30:37"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "r",
                                        "nodeType": "YulIdentifier",
                                        "src": "1909:1:37"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2042:37:37",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "signature",
                                              "nodeType": "YulIdentifier",
                                              "src": "2058:9:37"
                                            },
                                            {
                                              "name": "TwoWords",
                                              "nodeType": "YulIdentifier",
                                              "src": "2069:8:37"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "2054:3:37"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2054:24:37"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nodeType": "YulIdentifier",
                                        "src": "2048:5:37"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2048:31:37"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "vs",
                                        "nodeType": "YulIdentifier",
                                        "src": "2042:2:37"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2171:42:37",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "vs",
                                          "nodeType": "YulIdentifier",
                                          "src": "2180:2:37"
                                        },
                                        {
                                          "name": "EIP2098_allButHighestBitMask",
                                          "nodeType": "YulIdentifier",
                                          "src": "2184:28:37"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "and",
                                        "nodeType": "YulIdentifier",
                                        "src": "2176:3:37"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2176:37:37"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "s",
                                        "nodeType": "YulIdentifier",
                                        "src": "2171:1:37"
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "2310:26:37",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "2323:3:37",
                                              "type": "",
                                              "value": "255"
                                            },
                                            {
                                              "name": "vs",
                                              "nodeType": "YulIdentifier",
                                              "src": "2328:2:37"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shr",
                                            "nodeType": "YulIdentifier",
                                            "src": "2319:3:37"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2319:12:37"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "2333:2:37",
                                          "type": "",
                                          "value": "27"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "2315:3:37"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2315:21:37"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "v",
                                        "nodeType": "YulIdentifier",
                                        "src": "2310:1:37"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "evmVersion": "london",
                              "externalReferences": [
                                {
                                  "declaration": 3685,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2184:28:37",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3485,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "1935:7:37",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 3488,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2069:8:37",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 7793,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "1909:1:37",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 7796,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2171:1:37",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 7789,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "1924:9:37",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 7789,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2058:9:37",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 7799,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2310:1:37",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 7806,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2042:2:37",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 7806,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2180:2:37",
                                  "valueSize": 1
                                },
                                {
                                  "declaration": 7806,
                                  "isOffset": false,
                                  "isSlot": false,
                                  "src": "2328:2:37",
                                  "valueSize": 1
                                }
                              ],
                              "id": 7808,
                              "nodeType": "InlineAssembly",
                              "src": "1804:546:37"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          7840
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7840,
                            "mutability": "mutable",
                            "name": "recoveredSigner",
                            "nameLocation": "3520:15:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 7870,
                            "src": "3512:23:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 7839,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3512:7:37",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7847,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 7842,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7787,
                              "src": "3548:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 7843,
                              "name": "v",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7799,
                              "src": "3556:1:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "id": 7844,
                              "name": "r",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7793,
                              "src": "3559:1:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 7845,
                              "name": "s",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7796,
                              "src": "3562:1:37",
                              "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": 7841,
                            "name": "ecrecover",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -6,
                            "src": "3538:9:37",
                            "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": 7846,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3538:26:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "3512:52:37"
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 7853,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7848,
                            "name": "recoveredSigner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7840,
                            "src": "3616:15:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 7851,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3643:1:37",
                                "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": 7850,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3635:7:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 7849,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "3635:7:37",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 7852,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3635:10:37",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "3616:29:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 7860,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7858,
                              "name": "recoveredSigner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7840,
                              "src": "3787:15:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "id": 7859,
                              "name": "signer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7785,
                              "src": "3806:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "3787:25:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "id": 7868,
                          "nodeType": "IfStatement",
                          "src": "3783:190:37",
                          "trueBody": {
                            "id": 7867,
                            "nodeType": "Block",
                            "src": "3814:159:37",
                            "statements": [
                              {
                                "expression": {
                                  "arguments": [
                                    {
                                      "id": 7862,
                                      "name": "signer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7785,
                                      "src": "3936:6:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "id": 7863,
                                      "name": "digest",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7787,
                                      "src": "3944:6:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    {
                                      "id": 7864,
                                      "name": "signature",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7789,
                                      "src": "3952:9:37",
                                      "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": 7861,
                                    "name": "_assertValidEIP1271Signature",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7916,
                                    "src": "3907:28:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                                      "typeString": "function (address,bytes32,bytes memory) view"
                                    }
                                  },
                                  "id": 7865,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3907:55:37",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$__$",
                                    "typeString": "tuple()"
                                  }
                                },
                                "id": 7866,
                                "nodeType": "ExpressionStatement",
                                "src": "3907:55:37"
                              }
                            ]
                          }
                        },
                        "id": 7869,
                        "nodeType": "IfStatement",
                        "src": "3612:361:37",
                        "trueBody": {
                          "id": 7857,
                          "nodeType": "Block",
                          "src": "3647:130:37",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 7854,
                                  "name": "InvalidSignature",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2223,
                                  "src": "3668:16:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 7855,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3668:18:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7856,
                              "nodeType": "RevertStatement",
                              "src": "3661:25:37"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7783,
                    "nodeType": "StructuredDocumentation",
                    "src": "559:689:37",
                    "text": " @dev Internal view function to verify the signature of an order. An\n      ERC-1271 fallback will be attempted if either the signature length\n      is not 32 or 33 bytes or if the recovered signer does not match the\n      supplied signer. Note that in cases where a 32 or 33 byte signature\n      is supplied, only standard ECDSA signatures that recover to a\n      non-zero address are supported.\n @param signer    The signer for the order.\n @param digest    The digest to verify the signature against.\n @param signature A signature from the signer indicating that the order\n                  has been approved."
                  },
                  "id": 7871,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_assertValidSignature",
                  "nameLocation": "1262:21:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7790,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7785,
                        "mutability": "mutable",
                        "name": "signer",
                        "nameLocation": "1301:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 7871,
                        "src": "1293:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7784,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1293:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7787,
                        "mutability": "mutable",
                        "name": "digest",
                        "nameLocation": "1325:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 7871,
                        "src": "1317:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 7786,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1317:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7789,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "1354:9:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 7871,
                        "src": "1341:22:37",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7788,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "1341:5:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1283:86:37"
                  },
                  "returnParameters": {
                    "id": 7791,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1384:0:37"
                  },
                  "scope": 7917,
                  "src": "1253:2726:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7915,
                    "nodeType": "Block",
                    "src": "4840:776:37",
                    "statements": [
                      {
                        "assignments": [
                          7882
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7882,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "4912:7:37",
                            "nodeType": "VariableDeclaration",
                            "scope": 7915,
                            "src": "4907:12:37",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 7881,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "4907:4:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 7894,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 7884,
                              "name": "signer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7874,
                              "src": "4947:6:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 7887,
                                      "name": "EIP1271Interface",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2181,
                                      "src": "5007:16:37",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_EIP1271Interface_$2181_$",
                                        "typeString": "type(contract EIP1271Interface)"
                                      }
                                    },
                                    "id": 7888,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "isValidSignature",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2180,
                                    "src": "5007:33:37",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                      "typeString": "function EIP1271Interface.isValidSignature(bytes32,bytes calldata) view returns (bytes4)"
                                    }
                                  },
                                  "id": 7889,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "5007:42:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 7890,
                                  "name": "digest",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7876,
                                  "src": "5067:6:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "id": 7891,
                                  "name": "signature",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7878,
                                  "src": "5091:9:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "id": 7885,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "4967:3:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 7886,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "4967:22:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 7892,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4967:147:37",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 7883,
                            "name": "_staticcall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5481,
                            "src": "4922:11:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (address,bytes memory) view returns (bool)"
                            }
                          },
                          "id": 7893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4922:202:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4907:217:37"
                      },
                      {
                        "condition": {
                          "id": 7896,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "5171:8:37",
                          "subExpression": {
                            "id": 7895,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7882,
                            "src": "5172:7:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7904,
                        "nodeType": "IfStatement",
                        "src": "5167:245:37",
                        "trueBody": {
                          "id": 7903,
                          "nodeType": "Block",
                          "src": "5181:231:37",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 7897,
                                  "name": "_revertWithReasonIfOneIsReturned",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5487,
                                  "src": "5260:32:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$__$",
                                    "typeString": "function () view"
                                  }
                                },
                                "id": 7898,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5260:34:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7899,
                              "nodeType": "ExpressionStatement",
                              "src": "5260:34:37"
                            },
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 7900,
                                  "name": "BadContractSignature",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2226,
                                  "src": "5379:20:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 7901,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5379:22:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7902,
                              "nodeType": "RevertStatement",
                              "src": "5372:29:37"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "arguments": [
                            {
                              "expression": {
                                "expression": {
                                  "id": 7906,
                                  "name": "EIP1271Interface",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2181,
                                  "src": "5518:16:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_EIP1271Interface_$2181_$",
                                    "typeString": "type(contract EIP1271Interface)"
                                  }
                                },
                                "id": 7907,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "isValidSignature",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2180,
                                "src": "5518:33:37",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_declaration_view$_t_bytes32_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
                                  "typeString": "function EIP1271Interface.isValidSignature(bytes32,bytes calldata) view returns (bytes4)"
                                }
                              },
                              "id": 7908,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "src": "5518:42:37",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "id": 7905,
                            "name": "_doesNotMatchMagic",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5504,
                            "src": "5499:18:37",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$",
                              "typeString": "function (bytes4) pure returns (bool)"
                            }
                          },
                          "id": 7909,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5499:62:37",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 7914,
                        "nodeType": "IfStatement",
                        "src": "5495:115:37",
                        "trueBody": {
                          "id": 7913,
                          "nodeType": "Block",
                          "src": "5563:47:37",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 7910,
                                  "name": "InvalidSigner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2220,
                                  "src": "5584:13:37",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 7911,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5584:15:37",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7912,
                              "nodeType": "RevertStatement",
                              "src": "5577:22:37"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7872,
                    "nodeType": "StructuredDocumentation",
                    "src": "3985:712:37",
                    "text": " @dev Internal view function to verify the signature of an order using\n      ERC-1271 (i.e. contract signatures via `isValidSignature`). Note\n      that, in contrast to standard ECDSA signatures, 1271 signatures may\n      be valid in certain contexts and invalid in others, or vice versa;\n      orders that validate signatures ahead of time must explicitly cancel\n      those orders to invalidate them.\n @param signer    The signer for the order.\n @param digest    The signature digest, derived from the domain separator\n                  and the order hash.\n @param signature A signature (or other data) used to validate the digest."
                  },
                  "id": 7916,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_assertValidEIP1271Signature",
                  "nameLocation": "4711:28:37",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7879,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7874,
                        "mutability": "mutable",
                        "name": "signer",
                        "nameLocation": "4757:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 7916,
                        "src": "4749:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7873,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4749:7:37",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7876,
                        "mutability": "mutable",
                        "name": "digest",
                        "nameLocation": "4781:6:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 7916,
                        "src": "4773:14:37",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 7875,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4773:7:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7878,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "4810:9:37",
                        "nodeType": "VariableDeclaration",
                        "scope": 7916,
                        "src": "4797:22:37",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 7877,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "4797:5:37",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4739:86:37"
                  },
                  "returnParameters": {
                    "id": 7880,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4840:0:37"
                  },
                  "scope": 7917,
                  "src": "4702:914:37",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 7918,
              "src": "474:5144:37",
              "usedErrors": [
                2217,
                2220,
                2223,
                2226
              ]
            }
          ],
          "src": "32:5587:37"
        },
        "id": 37
      },
      "seaport/contracts/lib/TokenTransferrer.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/TokenTransferrer.sol",
          "exportedSymbols": {
            "BadReturnValueFromERC20OnTransfer_error_amount_ptr": [
              8155
            ],
            "BadReturnValueFromERC20OnTransfer_error_from_ptr": [
              8149
            ],
            "BadReturnValueFromERC20OnTransfer_error_length": [
              8158
            ],
            "BadReturnValueFromERC20OnTransfer_error_sig_ptr": [
              8143
            ],
            "BadReturnValueFromERC20OnTransfer_error_signature": [
              8140
            ],
            "BadReturnValueFromERC20OnTransfer_error_to_ptr": [
              8152
            ],
            "BadReturnValueFromERC20OnTransfer_error_token_ptr": [
              8146
            ],
            "BatchTransfer1155Params_amounts_head_ptr": [
              8176
            ],
            "BatchTransfer1155Params_amounts_length_baseOffset": [
              8191
            ],
            "BatchTransfer1155Params_data_head_ptr": [
              8179
            ],
            "BatchTransfer1155Params_data_length_baseOffset": [
              8194
            ],
            "BatchTransfer1155Params_data_length_basePtr": [
              8182
            ],
            "BatchTransfer1155Params_ids_head_ptr": [
              8173
            ],
            "BatchTransfer1155Params_ids_length_offset": [
              8188
            ],
            "BatchTransfer1155Params_ids_length_ptr": [
              8185
            ],
            "BatchTransfer1155Params_ptr": [
              8170
            ],
            "ConduitBatch1155Transfer": [
              1482
            ],
            "ConduitBatch1155Transfer_amounts_head_offset": [
              8206
            ],
            "ConduitBatch1155Transfer_amounts_length_baseOffset": [
              8212
            ],
            "ConduitBatch1155Transfer_calldata_baseSize": [
              8215
            ],
            "ConduitBatch1155Transfer_from_offset": [
              8200
            ],
            "ConduitBatch1155Transfer_ids_head_offset": [
              8203
            ],
            "ConduitBatch1155Transfer_ids_length_offset": [
              8209
            ],
            "ConduitBatch1155Transfer_usable_head_size": [
              8197
            ],
            "CostPerWord": [
              8164
            ],
            "DefaultFreeMemoryPointer": [
              8001
            ],
            "ERC1155BatchTransferGenericFailure_error_signature": [
              8133
            ],
            "ERC1155BatchTransferGenericFailure_token_ptr": [
              8136
            ],
            "ERC1155_safeBatchTransferFrom_selector": [
              8073
            ],
            "ERC1155_safeBatchTransferFrom_signature": [
              8064
            ],
            "ERC1155_safeTransferFrom_amount_ptr": [
              8048
            ],
            "ERC1155_safeTransferFrom_data_length_offset": [
              8060
            ],
            "ERC1155_safeTransferFrom_data_length_ptr": [
              8054
            ],
            "ERC1155_safeTransferFrom_data_offset_ptr": [
              8051
            ],
            "ERC1155_safeTransferFrom_from_ptr": [
              8039
            ],
            "ERC1155_safeTransferFrom_id_ptr": [
              8045
            ],
            "ERC1155_safeTransferFrom_length": [
              8057
            ],
            "ERC1155_safeTransferFrom_sig_ptr": [
              8036
            ],
            "ERC1155_safeTransferFrom_signature": [
              8033
            ],
            "ERC1155_safeTransferFrom_to_ptr": [
              8042
            ],
            "ERC20_transferFrom_amount_ptr": [
              8026
            ],
            "ERC20_transferFrom_from_ptr": [
              8020
            ],
            "ERC20_transferFrom_length": [
              8029
            ],
            "ERC20_transferFrom_sig_ptr": [
              8017
            ],
            "ERC20_transferFrom_signature": [
              8014
            ],
            "ERC20_transferFrom_to_ptr": [
              8023
            ],
            "ERC721_transferFrom_from_ptr": [
              8082
            ],
            "ERC721_transferFrom_id_ptr": [
              8088
            ],
            "ERC721_transferFrom_length": [
              8091
            ],
            "ERC721_transferFrom_sig_ptr": [
              8079
            ],
            "ERC721_transferFrom_signature": [
              8076
            ],
            "ERC721_transferFrom_to_ptr": [
              8085
            ],
            "ExtraGasBuffer": [
              8161
            ],
            "FreeMemoryPointerSlot": [
              7995
            ],
            "Invalid1155BatchTransferEncoding_length": [
              8221
            ],
            "Invalid1155BatchTransferEncoding_ptr": [
              8218
            ],
            "Invalid1155BatchTransferEncoding_selector": [
              8225
            ],
            "MemoryExpansionCoefficient": [
              8167
            ],
            "NoContract_error_length": [
              8104
            ],
            "NoContract_error_sig_ptr": [
              8098
            ],
            "NoContract_error_signature": [
              8095
            ],
            "NoContract_error_token_ptr": [
              8101
            ],
            "OneWord": [
              7986
            ],
            "Slot0x80": [
              8004
            ],
            "Slot0xA0": [
              8007
            ],
            "Slot0xC0": [
              8010
            ],
            "ThreeWords": [
              7992
            ],
            "TokenTransferGenericFailure_error_amount_ptr": [
              8126
            ],
            "TokenTransferGenericFailure_error_from_ptr": [
              8117
            ],
            "TokenTransferGenericFailure_error_id_ptr": [
              8123
            ],
            "TokenTransferGenericFailure_error_length": [
              8129
            ],
            "TokenTransferGenericFailure_error_sig_ptr": [
              8111
            ],
            "TokenTransferGenericFailure_error_signature": [
              8108
            ],
            "TokenTransferGenericFailure_error_to_ptr": [
              8120
            ],
            "TokenTransferGenericFailure_error_token_ptr": [
              8114
            ],
            "TokenTransferrer": [
              7981
            ],
            "TokenTransferrerErrors": [
              2281
            ],
            "TwoWords": [
              7989
            ],
            "ZeroSlot": [
              7998
            ]
          },
          "id": 7982,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7919,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:38"
            },
            {
              "absolutePath": "seaport/contracts/lib/TokenTransferrerConstants.sol",
              "file": "./TokenTransferrerConstants.sol",
              "id": 7920,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7982,
              "sourceUnit": 8226,
              "src": "58:41:38",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/interfaces/TokenTransferrerErrors.sol",
              "file": "../interfaces/TokenTransferrerErrors.sol",
              "id": 7922,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7982,
              "sourceUnit": 2282,
              "src": "120:86:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7921,
                    "name": "TokenTransferrerErrors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2281,
                    "src": "133:22:38",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/conduit/lib/ConduitStructs.sol",
              "file": "../conduit/lib/ConduitStructs.sol",
              "id": 7924,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 7982,
              "sourceUnit": 1483,
              "src": "208:77:38",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 7923,
                    "name": "ConduitBatch1155Transfer",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 1482,
                    "src": "217:24:38",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 7925,
                    "name": "TokenTransferrerErrors",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2281,
                    "src": "316:22:38"
                  },
                  "id": 7926,
                  "nodeType": "InheritanceSpecifier",
                  "src": "316:22:38"
                }
              ],
              "canonicalName": "TokenTransferrer",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 7981,
              "linearizedBaseContracts": [
                7981,
                2281
              ],
              "name": "TokenTransferrer",
              "nameLocation": "296:16:38",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 7939,
                    "nodeType": "Block",
                    "src": "918:8850:38",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "1011:8751:38",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1105:46:38",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "FreeMemoryPointerSlot",
                                    "nodeType": "YulIdentifier",
                                    "src": "1129:21:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "1123:5:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1123:28:38"
                              },
                              "variables": [
                                {
                                  "name": "memPointer",
                                  "nodeType": "YulTypedName",
                                  "src": "1109:10:38",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ERC20_transferFrom_sig_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1248:26:38"
                                  },
                                  {
                                    "name": "ERC20_transferFrom_signature",
                                    "nodeType": "YulIdentifier",
                                    "src": "1276:28:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1241:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1241:64:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1241:64:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ERC20_transferFrom_from_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1325:27:38"
                                  },
                                  {
                                    "name": "from",
                                    "nodeType": "YulIdentifier",
                                    "src": "1354:4:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1318:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1318:41:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1318:41:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ERC20_transferFrom_to_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1379:25:38"
                                  },
                                  {
                                    "name": "to",
                                    "nodeType": "YulIdentifier",
                                    "src": "1406:2:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1372:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1372:37:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1372:37:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ERC20_transferFrom_amount_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1429:29:38"
                                  },
                                  {
                                    "name": "amount",
                                    "nodeType": "YulIdentifier",
                                    "src": "1460:6:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1422:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1422:45:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1422:45:38"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1561:232:38",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "gas",
                                      "nodeType": "YulIdentifier",
                                      "src": "1601:3:38"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1601:5:38"
                                  },
                                  {
                                    "name": "token",
                                    "nodeType": "YulIdentifier",
                                    "src": "1624:5:38"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1647:1:38",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ERC20_transferFrom_sig_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "1666:26:38"
                                  },
                                  {
                                    "name": "ERC20_transferFrom_length",
                                    "nodeType": "YulIdentifier",
                                    "src": "1710:25:38"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1753:1:38",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "OneWord",
                                    "nodeType": "YulIdentifier",
                                    "src": "1772:7:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "call",
                                  "nodeType": "YulIdentifier",
                                  "src": "1579:4:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1579:214:38"
                              },
                              "variables": [
                                {
                                  "name": "callStatus",
                                  "nodeType": "YulTypedName",
                                  "src": "1565:10:38",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "1887:407:38",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "kind": "number",
                                                    "nodeType": "YulLiteral",
                                                    "src": "2155:1:38",
                                                    "type": "",
                                                    "value": "0"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "mload",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2149:5:38"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2149:8:38"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2159:1:38",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "eq",
                                              "nodeType": "YulIdentifier",
                                              "src": "2146:2:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2146:15:38"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "returndatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2166:14:38"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2166:16:38"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "2184:2:38",
                                                "type": "",
                                                "value": "31"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "gt",
                                              "nodeType": "YulIdentifier",
                                              "src": "2163:2:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2163:24:38"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "and",
                                          "nodeType": "YulIdentifier",
                                          "src": "2142:3:38"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2142:46:38"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "returndatasize",
                                              "nodeType": "YulIdentifier",
                                              "src": "2217:14:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2217:16:38"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "2210:6:38"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2210:24:38"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "or",
                                      "nodeType": "YulIdentifier",
                                      "src": "2118:2:38"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2118:134:38"
                                  },
                                  {
                                    "name": "callStatus",
                                    "nodeType": "YulIdentifier",
                                    "src": "2270:10:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nodeType": "YulIdentifier",
                                  "src": "1902:3:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1902:392:38"
                              },
                              "variables": [
                                {
                                  "name": "success",
                                  "nodeType": "YulTypedName",
                                  "src": "1891:7:38",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "2642:6919:38",
                                "statements": [
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "2952:6400:38",
                                      "statements": [
                                        {
                                          "body": {
                                            "nodeType": "YulBlock",
                                            "src": "3040:5992:38",
                                            "statements": [
                                              {
                                                "body": {
                                                  "nodeType": "YulBlock",
                                                  "src": "3142:4647:38",
                                                  "statements": [
                                                    {
                                                      "body": {
                                                        "nodeType": "YulBlock",
                                                        "src": "3337:3212:38",
                                                        "statements": [
                                                          {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "3679:159:38",
                                                            "value": {
                                                              "arguments": [
                                                                {
                                                                  "arguments": [],
                                                                  "functionName": {
                                                                    "name": "returndatasize",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "3743:14:38"
                                                                  },
                                                                  "nodeType": "YulFunctionCall",
                                                                  "src": "3743:16:38"
                                                                },
                                                                {
                                                                  "name": "OneWord",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "3797:7:38"
                                                                }
                                                              ],
                                                              "functionName": {
                                                                "name": "div",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "3702:3:38"
                                                              },
                                                              "nodeType": "YulFunctionCall",
                                                              "src": "3702:136:38"
                                                            },
                                                            "variables": [
                                                              {
                                                                "name": "returnDataWords",
                                                                "nodeType": "YulTypedName",
                                                                "src": "3683:15:38",
                                                                "type": ""
                                                              }
                                                            ]
                                                          },
                                                          {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4169:42:38",
                                                            "value": {
                                                              "arguments": [
                                                                {
                                                                  "name": "memPointer",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "4191:10:38"
                                                                },
                                                                {
                                                                  "name": "OneWord",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "4203:7:38"
                                                                }
                                                              ],
                                                              "functionName": {
                                                                "name": "div",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4187:3:38"
                                                              },
                                                              "nodeType": "YulFunctionCall",
                                                              "src": "4187:24:38"
                                                            },
                                                            "variables": [
                                                              {
                                                                "name": "msizeWords",
                                                                "nodeType": "YulTypedName",
                                                                "src": "4173:10:38",
                                                                "type": ""
                                                              }
                                                            ]
                                                          },
                                                          {
                                                            "nodeType": "YulVariableDeclaration",
                                                            "src": "4326:45:38",
                                                            "value": {
                                                              "arguments": [
                                                                {
                                                                  "name": "CostPerWord",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "4342:11:38"
                                                                },
                                                                {
                                                                  "name": "returnDataWords",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "4355:15:38"
                                                                }
                                                              ],
                                                              "functionName": {
                                                                "name": "mul",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4338:3:38"
                                                              },
                                                              "nodeType": "YulFunctionCall",
                                                              "src": "4338:33:38"
                                                            },
                                                            "variables": [
                                                              {
                                                                "name": "cost",
                                                                "nodeType": "YulTypedName",
                                                                "src": "4330:4:38",
                                                                "type": ""
                                                              }
                                                            ]
                                                          },
                                                          {
                                                            "body": {
                                                              "nodeType": "YulBlock",
                                                              "src": "4520:1258:38",
                                                              "statements": [
                                                                {
                                                                  "nodeType": "YulAssignment",
                                                                  "src": "4558:1186:38",
                                                                  "value": {
                                                                    "arguments": [
                                                                      {
                                                                        "name": "cost",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "4611:4:38"
                                                                      },
                                                                      {
                                                                        "arguments": [
                                                                          {
                                                                            "arguments": [
                                                                              {
                                                                                "arguments": [
                                                                                  {
                                                                                    "name": "returnDataWords",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4816:15:38"
                                                                                  },
                                                                                  {
                                                                                    "name": "msizeWords",
                                                                                    "nodeType": "YulIdentifier",
                                                                                    "src": "4885:10:38"
                                                                                  }
                                                                                ],
                                                                                "functionName": {
                                                                                  "name": "sub",
                                                                                  "nodeType": "YulIdentifier",
                                                                                  "src": "4759:3:38"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "4759:186:38"
                                                                              },
                                                                              {
                                                                                "name": "CostPerWord",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "4995:11:38"
                                                                              }
                                                                            ],
                                                                            "functionName": {
                                                                              "name": "mul",
                                                                              "nodeType": "YulIdentifier",
                                                                              "src": "4706:3:38"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "4706:346:38"
                                                                          },
                                                                          {
                                                                            "arguments": [
                                                                              {
                                                                                "arguments": [
                                                                                  {
                                                                                    "arguments": [
                                                                                      {
                                                                                        "name": "returnDataWords",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5269:15:38"
                                                                                      },
                                                                                      {
                                                                                        "name": "returnDataWords",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5342:15:38"
                                                                                      }
                                                                                    ],
                                                                                    "functionName": {
                                                                                      "name": "mul",
                                                                                      "nodeType": "YulIdentifier",
                                                                                      "src": "5208:3:38"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "5208:203:38"
                                                                                  },
                                                                                  {
                                                                                    "arguments": [
                                                                                      {
                                                                                        "name": "msizeWords",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5469:10:38"
                                                                                      },
                                                                                      {
                                                                                        "name": "msizeWords",
                                                                                        "nodeType": "YulIdentifier",
                                                                                        "src": "5481:10:38"
                                                                                      }
                                                                                    ],
                                                                                    "functionName": {
                                                                                      "name": "mul",
                                                                                      "nodeType": "YulIdentifier",
                                                                                      "src": "5465:3:38"
                                                                                    },
                                                                                    "nodeType": "YulFunctionCall",
                                                                                    "src": "5465:27:38"
                                                                                  }
                                                                                ],
                                                                                "functionName": {
                                                                                  "name": "sub",
                                                                                  "nodeType": "YulIdentifier",
                                                                                  "src": "5151:3:38"
                                                                                },
                                                                                "nodeType": "YulFunctionCall",
                                                                                "src": "5151:391:38"
                                                                              },
                                                                              {
                                                                                "name": "MemoryExpansionCoefficient",
                                                                                "nodeType": "YulIdentifier",
                                                                                "src": "5592:26:38"
                                                                              }
                                                                            ],
                                                                            "functionName": {
                                                                              "name": "div",
                                                                              "nodeType": "YulIdentifier",
                                                                              "src": "5098:3:38"
                                                                            },
                                                                            "nodeType": "YulFunctionCall",
                                                                            "src": "5098:566:38"
                                                                          }
                                                                        ],
                                                                        "functionName": {
                                                                          "name": "add",
                                                                          "nodeType": "YulIdentifier",
                                                                          "src": "4657:3:38"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "4657:1049:38"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "add",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "4566:3:38"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "4566:1178:38"
                                                                  },
                                                                  "variableNames": [
                                                                    {
                                                                      "name": "cost",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "4558:4:38"
                                                                    }
                                                                  ]
                                                                }
                                                              ]
                                                            },
                                                            "condition": {
                                                              "arguments": [
                                                                {
                                                                  "name": "returnDataWords",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "4491:15:38"
                                                                },
                                                                {
                                                                  "name": "msizeWords",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "4508:10:38"
                                                                }
                                                              ],
                                                              "functionName": {
                                                                "name": "gt",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "4488:2:38"
                                                              },
                                                              "nodeType": "YulFunctionCall",
                                                              "src": "4488:31:38"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "4485:1293:38"
                                                          },
                                                          {
                                                            "body": {
                                                              "nodeType": "YulBlock",
                                                              "src": "6077:442:38",
                                                              "statements": [
                                                                {
                                                                  "expression": {
                                                                    "arguments": [
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6262:1:38",
                                                                        "type": "",
                                                                        "value": "0"
                                                                      },
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6265:1:38",
                                                                        "type": "",
                                                                        "value": "0"
                                                                      },
                                                                      {
                                                                        "arguments": [],
                                                                        "functionName": {
                                                                          "name": "returndatasize",
                                                                          "nodeType": "YulIdentifier",
                                                                          "src": "6268:14:38"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6268:16:38"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "returndatacopy",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "6247:14:38"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "6247:38:38"
                                                                  },
                                                                  "nodeType": "YulExpressionStatement",
                                                                  "src": "6247:38:38"
                                                                },
                                                                {
                                                                  "expression": {
                                                                    "arguments": [
                                                                      {
                                                                        "kind": "number",
                                                                        "nodeType": "YulLiteral",
                                                                        "src": "6465:1:38",
                                                                        "type": "",
                                                                        "value": "0"
                                                                      },
                                                                      {
                                                                        "arguments": [],
                                                                        "functionName": {
                                                                          "name": "returndatasize",
                                                                          "nodeType": "YulIdentifier",
                                                                          "src": "6468:14:38"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "6468:16:38"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "revert",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "6458:6:38"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "6458:27:38"
                                                                  },
                                                                  "nodeType": "YulExpressionStatement",
                                                                  "src": "6458:27:38"
                                                                }
                                                              ]
                                                            },
                                                            "condition": {
                                                              "arguments": [
                                                                {
                                                                  "arguments": [
                                                                    {
                                                                      "name": "cost",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "6047:4:38"
                                                                    },
                                                                    {
                                                                      "name": "ExtraGasBuffer",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "6053:14:38"
                                                                    }
                                                                  ],
                                                                  "functionName": {
                                                                    "name": "add",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6043:3:38"
                                                                  },
                                                                  "nodeType": "YulFunctionCall",
                                                                  "src": "6043:25:38"
                                                                },
                                                                {
                                                                  "arguments": [],
                                                                  "functionName": {
                                                                    "name": "gas",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "6070:3:38"
                                                                  },
                                                                  "nodeType": "YulFunctionCall",
                                                                  "src": "6070:5:38"
                                                                }
                                                              ],
                                                              "functionName": {
                                                                "name": "lt",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "6040:2:38"
                                                              },
                                                              "nodeType": "YulFunctionCall",
                                                              "src": "6040:36:38"
                                                            },
                                                            "nodeType": "YulIf",
                                                            "src": "6037:482:38"
                                                          }
                                                        ]
                                                      },
                                                      "condition": {
                                                        "arguments": [],
                                                        "functionName": {
                                                          "name": "returndatasize",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "3320:14:38"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "3320:16:38"
                                                      },
                                                      "nodeType": "YulIf",
                                                      "src": "3317:3232:38"
                                                    },
                                                    {
                                                      "expression": {
                                                        "arguments": [
                                                          {
                                                            "name": "TokenTransferGenericFailure_error_sig_ptr",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "6697:41:38"
                                                          },
                                                          {
                                                            "name": "TokenTransferGenericFailure_error_signature",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "6772:43:38"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "mstore",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "6657:6:38"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "6657:188:38"
                                                      },
                                                      "nodeType": "YulExpressionStatement",
                                                      "src": "6657:188:38"
                                                    },
                                                    {
                                                      "expression": {
                                                        "arguments": [
                                                          {
                                                            "name": "TokenTransferGenericFailure_error_token_ptr",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "6914:43:38"
                                                          },
                                                          {
                                                            "name": "token",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "6991:5:38"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "mstore",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "6874:6:38"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "6874:152:38"
                                                      },
                                                      "nodeType": "YulExpressionStatement",
                                                      "src": "6874:152:38"
                                                    },
                                                    {
                                                      "expression": {
                                                        "arguments": [
                                                          {
                                                            "name": "TokenTransferGenericFailure_error_from_ptr",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7095:42:38"
                                                          },
                                                          {
                                                            "name": "from",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7171:4:38"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "mstore",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "7055:6:38"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "7055:150:38"
                                                      },
                                                      "nodeType": "YulExpressionStatement",
                                                      "src": "7055:150:38"
                                                    },
                                                    {
                                                      "expression": {
                                                        "arguments": [
                                                          {
                                                            "name": "TokenTransferGenericFailure_error_to_ptr",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7241:40:38"
                                                          },
                                                          {
                                                            "name": "to",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7283:2:38"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "mstore",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "7234:6:38"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "7234:52:38"
                                                      },
                                                      "nodeType": "YulExpressionStatement",
                                                      "src": "7234:52:38"
                                                    },
                                                    {
                                                      "expression": {
                                                        "arguments": [
                                                          {
                                                            "name": "TokenTransferGenericFailure_error_id_ptr",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7322:40:38"
                                                          },
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "7364:1:38",
                                                            "type": "",
                                                            "value": "0"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "mstore",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "7315:6:38"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "7315:51:38"
                                                      },
                                                      "nodeType": "YulExpressionStatement",
                                                      "src": "7315:51:38"
                                                    },
                                                    {
                                                      "expression": {
                                                        "arguments": [
                                                          {
                                                            "name": "TokenTransferGenericFailure_error_amount_ptr",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7435:44:38"
                                                          },
                                                          {
                                                            "name": "amount",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7513:6:38"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "mstore",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "7395:6:38"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "7395:154:38"
                                                      },
                                                      "nodeType": "YulExpressionStatement",
                                                      "src": "7395:154:38"
                                                    },
                                                    {
                                                      "expression": {
                                                        "arguments": [
                                                          {
                                                            "name": "TokenTransferGenericFailure_error_sig_ptr",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7618:41:38"
                                                          },
                                                          {
                                                            "name": "TokenTransferGenericFailure_error_length",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "7693:40:38"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "revert",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "7578:6:38"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "7578:185:38"
                                                      },
                                                      "nodeType": "YulExpressionStatement",
                                                      "src": "7578:185:38"
                                                    }
                                                  ]
                                                },
                                                "condition": {
                                                  "arguments": [
                                                    {
                                                      "name": "callStatus",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "3130:10:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "iszero",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "3123:6:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "3123:18:38"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "3120:4669:38"
                                              },
                                              {
                                                "expression": {
                                                  "arguments": [
                                                    {
                                                      "name": "BadReturnValueFromERC20OnTransfer_error_sig_ptr",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "7970:47:38"
                                                    },
                                                    {
                                                      "name": "BadReturnValueFromERC20OnTransfer_error_signature",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "8047:49:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mstore",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "7934:6:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "7934:188:38"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "7934:188:38"
                                              },
                                              {
                                                "expression": {
                                                  "arguments": [
                                                    {
                                                      "name": "BadReturnValueFromERC20OnTransfer_error_token_ptr",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "8183:49:38"
                                                    },
                                                    {
                                                      "name": "token",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "8262:5:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mstore",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8147:6:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "8147:146:38"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "8147:146:38"
                                              },
                                              {
                                                "expression": {
                                                  "arguments": [
                                                    {
                                                      "name": "BadReturnValueFromERC20OnTransfer_error_from_ptr",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "8354:48:38"
                                                    },
                                                    {
                                                      "name": "from",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "8432:4:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mstore",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8318:6:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "8318:144:38"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "8318:144:38"
                                              },
                                              {
                                                "expression": {
                                                  "arguments": [
                                                    {
                                                      "name": "BadReturnValueFromERC20OnTransfer_error_to_ptr",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "8523:46:38"
                                                    },
                                                    {
                                                      "name": "to",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "8599:2:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mstore",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8487:6:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "8487:140:38"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "8487:140:38"
                                              },
                                              {
                                                "expression": {
                                                  "arguments": [
                                                    {
                                                      "name": "BadReturnValueFromERC20OnTransfer_error_amount_ptr",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "8688:50:38"
                                                    },
                                                    {
                                                      "name": "amount",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "8768:6:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mstore",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8652:6:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "8652:148:38"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "8652:148:38"
                                              },
                                              {
                                                "expression": {
                                                  "arguments": [
                                                    {
                                                      "name": "BadReturnValueFromERC20OnTransfer_error_sig_ptr",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "8861:47:38"
                                                    },
                                                    {
                                                      "name": "BadReturnValueFromERC20OnTransfer_error_length",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "8938:46:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "revert",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "8825:6:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "8825:185:38"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "8825:185:38"
                                              }
                                            ]
                                          },
                                          "condition": {
                                            "arguments": [
                                              {
                                                "name": "success",
                                                "nodeType": "YulIdentifier",
                                                "src": "3031:7:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "3024:6:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "3024:15:38"
                                          },
                                          "nodeType": "YulIf",
                                          "src": "3021:6011:38"
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "NoContract_error_sig_ptr",
                                                "nodeType": "YulIdentifier",
                                                "src": "9141:24:38"
                                              },
                                              {
                                                "name": "NoContract_error_signature",
                                                "nodeType": "YulIdentifier",
                                                "src": "9167:26:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "9134:6:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "9134:60:38"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "9134:60:38"
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "NoContract_error_token_ptr",
                                                "nodeType": "YulIdentifier",
                                                "src": "9222:26:38"
                                              },
                                              {
                                                "name": "token",
                                                "nodeType": "YulIdentifier",
                                                "src": "9250:5:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "9215:6:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "9215:41:38"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "9215:41:38"
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "NoContract_error_sig_ptr",
                                                "nodeType": "YulIdentifier",
                                                "src": "9284:24:38"
                                              },
                                              {
                                                "name": "NoContract_error_length",
                                                "nodeType": "YulIdentifier",
                                                "src": "9310:23:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "9277:6:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "9277:57:38"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "9277:57:38"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "token",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "2932:5:38"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "extcodesize",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "2920:11:38"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "2920:18:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "iszero",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "2913:6:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "2913:26:38"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "iszero",
                                                "nodeType": "YulIdentifier",
                                                "src": "2906:6:38"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "2906:34:38"
                                            },
                                            {
                                              "name": "success",
                                              "nodeType": "YulIdentifier",
                                              "src": "2942:7:38"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "2902:3:38"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "2902:48:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "2895:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "2895:56:38"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "2892:6460:38"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "success",
                                        "nodeType": "YulIdentifier",
                                        "src": "2598:7:38"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "returndatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "2621:14:38"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "2621:16:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "iszero",
                                              "nodeType": "YulIdentifier",
                                              "src": "2614:6:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "2614:24:38"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "iszero",
                                          "nodeType": "YulIdentifier",
                                          "src": "2607:6:38"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "2607:32:38"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "2594:3:38"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2594:46:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "2587:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2587:54:38"
                              },
                              "nodeType": "YulIf",
                              "src": "2584:6977:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "FreeMemoryPointerSlot",
                                    "nodeType": "YulIdentifier",
                                    "src": "9639:21:38"
                                  },
                                  {
                                    "name": "memPointer",
                                    "nodeType": "YulIdentifier",
                                    "src": "9662:10:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9632:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9632:41:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9632:41:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ZeroSlot",
                                    "nodeType": "YulIdentifier",
                                    "src": "9740:8:38"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "9750:1:38",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "9733:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "9733:19:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "9733:19:38"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 8155,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8688:50:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8149,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8354:48:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8158,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8938:46:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8143,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7970:47:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8143,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8861:47:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8140,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8047:49:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8152,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8523:46:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8146,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8183:49:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8164,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4342:11:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8164,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4995:11:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8026,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1429:29:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8020,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1325:27:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8029,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1710:25:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8017,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1248:26:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8017,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1666:26:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8014,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1276:28:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8023,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1379:25:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8161,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6053:14:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7995,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1129:21:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7995,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9639:21:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8167,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5592:26:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8104,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9310:23:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8098,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9141:24:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8098,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9284:24:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8095,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9167:26:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8101,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9222:26:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7986,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1772:7:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7986,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "3797:7:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7986,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "4203:7:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8126,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7435:44:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8117,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7095:42:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8123,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7322:40:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8129,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7693:40:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8111,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6697:41:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8111,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7618:41:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8108,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6772:43:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8120,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7241:40:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8114,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6914:43:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7998,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9740:8:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7935,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1460:6:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7935,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7513:6:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7935,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8768:6:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7931,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1354:4:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7931,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7171:4:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7931,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8432:4:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7933,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1406:2:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7933,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "7283:2:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7933,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8599:2:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7929,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1624:5:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7929,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "2932:5:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7929,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "6991:5:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7929,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "8262:5:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7929,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "9250:5:38",
                            "valueSize": 1
                          }
                        ],
                        "id": 7938,
                        "nodeType": "InlineAssembly",
                        "src": "1002:8760:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7927,
                    "nodeType": "StructuredDocumentation",
                    "src": "345:433:38",
                    "text": " @dev Internal function to transfer ERC20 tokens from a given originator\n      to a given recipient. Sufficient approvals must be set on the\n      contract performing the transfer.\n @param token      The ERC20 token to transfer.\n @param from       The originator of the transfer.\n @param to         The recipient of the transfer.\n @param amount     The amount to transfer."
                  },
                  "id": 7940,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_performERC20Transfer",
                  "nameLocation": "792:21:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7936,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7929,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "831:5:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7940,
                        "src": "823:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7928,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "823:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7931,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "854:4:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7940,
                        "src": "846:12:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7930,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "846:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7933,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "876:2:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7940,
                        "src": "868:10:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7932,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "868:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7935,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "896:6:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7940,
                        "src": "888:14:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7934,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "888:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "813:95:38"
                  },
                  "returnParameters": {
                    "id": 7937,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "918:0:38"
                  },
                  "scope": 7981,
                  "src": "783:8985:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7953,
                    "nodeType": "Block",
                    "src": "10357:4538:38",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "10451:4438:38",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "10544:224:38",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "NoContract_error_sig_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "10569:24:38"
                                        },
                                        {
                                          "name": "NoContract_error_signature",
                                          "nodeType": "YulIdentifier",
                                          "src": "10595:26:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10562:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10562:60:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10562:60:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "NoContract_error_token_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "10646:26:38"
                                        },
                                        {
                                          "name": "token",
                                          "nodeType": "YulIdentifier",
                                          "src": "10674:5:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "10639:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10639:41:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10639:41:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "NoContract_error_sig_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "10704:24:38"
                                        },
                                        {
                                          "name": "NoContract_error_length",
                                          "nodeType": "YulIdentifier",
                                          "src": "10730:23:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "10697:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "10697:57:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "10697:57:38"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "token",
                                        "nodeType": "YulIdentifier",
                                        "src": "10536:5:38"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "extcodesize",
                                      "nodeType": "YulIdentifier",
                                      "src": "10524:11:38"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "10524:18:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "10517:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10517:26:38"
                              },
                              "nodeType": "YulIf",
                              "src": "10514:254:38"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "10855:46:38",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "FreeMemoryPointerSlot",
                                    "nodeType": "YulIdentifier",
                                    "src": "10879:21:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "10873:5:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10873:28:38"
                              },
                              "variables": [
                                {
                                  "name": "memPointer",
                                  "nodeType": "YulTypedName",
                                  "src": "10859:10:38",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ERC721_transferFrom_sig_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "10995:27:38"
                                  },
                                  {
                                    "name": "ERC721_transferFrom_signature",
                                    "nodeType": "YulIdentifier",
                                    "src": "11024:29:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "10988:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "10988:66:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "10988:66:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ERC721_transferFrom_from_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "11074:28:38"
                                  },
                                  {
                                    "name": "from",
                                    "nodeType": "YulIdentifier",
                                    "src": "11104:4:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11067:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11067:42:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11067:42:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ERC721_transferFrom_to_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "11129:26:38"
                                  },
                                  {
                                    "name": "to",
                                    "nodeType": "YulIdentifier",
                                    "src": "11157:2:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11122:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11122:38:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11122:38:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ERC721_transferFrom_id_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "11180:26:38"
                                  },
                                  {
                                    "name": "identifier",
                                    "nodeType": "YulIdentifier",
                                    "src": "11208:10:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "11173:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11173:46:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "11173:46:38"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "11288:225:38",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "gas",
                                      "nodeType": "YulIdentifier",
                                      "src": "11325:3:38"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "11325:5:38"
                                  },
                                  {
                                    "name": "token",
                                    "nodeType": "YulIdentifier",
                                    "src": "11348:5:38"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11371:1:38",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ERC721_transferFrom_sig_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "11390:27:38"
                                  },
                                  {
                                    "name": "ERC721_transferFrom_length",
                                    "nodeType": "YulIdentifier",
                                    "src": "11435:26:38"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11479:1:38",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "11498:1:38",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "call",
                                  "nodeType": "YulIdentifier",
                                  "src": "11303:4:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11303:210:38"
                              },
                              "variables": [
                                {
                                  "name": "success",
                                  "nodeType": "YulTypedName",
                                  "src": "11292:7:38",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "11587:3101:38",
                                "statements": [
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "11746:2160:38",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "11999:53:38",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "returndatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "12026:14:38"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "12026:16:38"
                                              },
                                              {
                                                "name": "OneWord",
                                                "nodeType": "YulIdentifier",
                                                "src": "12044:7:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "div",
                                              "nodeType": "YulIdentifier",
                                              "src": "12022:3:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12022:30:38"
                                          },
                                          "variables": [
                                            {
                                              "name": "returnDataWords",
                                              "nodeType": "YulTypedName",
                                              "src": "12003:15:38",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "12300:42:38",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "memPointer",
                                                "nodeType": "YulIdentifier",
                                                "src": "12322:10:38"
                                              },
                                              {
                                                "name": "OneWord",
                                                "nodeType": "YulIdentifier",
                                                "src": "12334:7:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "div",
                                              "nodeType": "YulIdentifier",
                                              "src": "12318:3:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12318:24:38"
                                          },
                                          "variables": [
                                            {
                                              "name": "msizeWords",
                                              "nodeType": "YulTypedName",
                                              "src": "12304:10:38",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "12433:45:38",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "CostPerWord",
                                                "nodeType": "YulIdentifier",
                                                "src": "12449:11:38"
                                              },
                                              {
                                                "name": "returnDataWords",
                                                "nodeType": "YulIdentifier",
                                                "src": "12462:15:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "12445:3:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12445:33:38"
                                          },
                                          "variables": [
                                            {
                                              "name": "cost",
                                              "nodeType": "YulTypedName",
                                              "src": "12437:4:38",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "body": {
                                            "nodeType": "YulBlock",
                                            "src": "12603:734:38",
                                            "statements": [
                                              {
                                                "nodeType": "YulAssignment",
                                                "src": "12629:686:38",
                                                "value": {
                                                  "arguments": [
                                                    {
                                                      "name": "cost",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "12670:4:38"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "arguments": [
                                                                {
                                                                  "name": "returnDataWords",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "12786:15:38"
                                                                },
                                                                {
                                                                  "name": "msizeWords",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "12803:10:38"
                                                                }
                                                              ],
                                                              "functionName": {
                                                                "name": "sub",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12782:3:38"
                                                              },
                                                              "nodeType": "YulFunctionCall",
                                                              "src": "12782:32:38"
                                                            },
                                                            {
                                                              "name": "CostPerWord",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "12852:11:38"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "mul",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12741:3:38"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "12741:156:38"
                                                        },
                                                        {
                                                          "arguments": [
                                                            {
                                                              "arguments": [
                                                                {
                                                                  "arguments": [
                                                                    {
                                                                      "name": "returnDataWords",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "13021:15:38"
                                                                    },
                                                                    {
                                                                      "name": "returnDataWords",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "13038:15:38"
                                                                    }
                                                                  ],
                                                                  "functionName": {
                                                                    "name": "mul",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13017:3:38"
                                                                  },
                                                                  "nodeType": "YulFunctionCall",
                                                                  "src": "13017:37:38"
                                                                },
                                                                {
                                                                  "arguments": [
                                                                    {
                                                                      "name": "msizeWords",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "13100:10:38"
                                                                    },
                                                                    {
                                                                      "name": "msizeWords",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "13112:10:38"
                                                                    }
                                                                  ],
                                                                  "functionName": {
                                                                    "name": "mul",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "13096:3:38"
                                                                  },
                                                                  "nodeType": "YulFunctionCall",
                                                                  "src": "13096:27:38"
                                                                }
                                                              ],
                                                              "functionName": {
                                                                "name": "sub",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "12972:3:38"
                                                              },
                                                              "nodeType": "YulFunctionCall",
                                                              "src": "12972:189:38"
                                                            },
                                                            {
                                                              "name": "MemoryExpansionCoefficient",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "13199:26:38"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "div",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "12931:3:38"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "12931:328:38"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "12704:3:38"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "12704:585:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12637:3:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "12637:678:38"
                                                },
                                                "variableNames": [
                                                  {
                                                    "name": "cost",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "12629:4:38"
                                                  }
                                                ]
                                              }
                                            ]
                                          },
                                          "condition": {
                                            "arguments": [
                                              {
                                                "name": "returnDataWords",
                                                "nodeType": "YulIdentifier",
                                                "src": "12574:15:38"
                                              },
                                              {
                                                "name": "msizeWords",
                                                "nodeType": "YulIdentifier",
                                                "src": "12591:10:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "gt",
                                              "nodeType": "YulIdentifier",
                                              "src": "12571:2:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "12571:31:38"
                                          },
                                          "nodeType": "YulIf",
                                          "src": "12568:769:38"
                                        },
                                        {
                                          "body": {
                                            "nodeType": "YulBlock",
                                            "src": "13588:300:38",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "13710:1:38",
                                                      "type": "",
                                                      "value": "0"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "13713:1:38",
                                                      "type": "",
                                                      "value": "0"
                                                    },
                                                    {
                                                      "arguments": [],
                                                      "functionName": {
                                                        "name": "returndatasize",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13716:14:38"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "13716:16:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "returndatacopy",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13695:14:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "13695:38:38"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "13695:38:38"
                                              },
                                              {
                                                "expression": {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "13846:1:38",
                                                      "type": "",
                                                      "value": "0"
                                                    },
                                                    {
                                                      "arguments": [],
                                                      "functionName": {
                                                        "name": "returndatasize",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "13849:14:38"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "13849:16:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "revert",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13839:6:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "13839:27:38"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "13839:27:38"
                                              }
                                            ]
                                          },
                                          "condition": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "cost",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13558:4:38"
                                                  },
                                                  {
                                                    "name": "ExtraGasBuffer",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "13564:14:38"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "13554:3:38"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13554:25:38"
                                              },
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "gas",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "13581:3:38"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "13581:5:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "lt",
                                              "nodeType": "YulIdentifier",
                                              "src": "13551:2:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "13551:36:38"
                                          },
                                          "nodeType": "YulIf",
                                          "src": "13548:340:38"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "returndatasize",
                                        "nodeType": "YulIdentifier",
                                        "src": "11729:14:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "11729:16:38"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "11726:2180:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "TokenTransferGenericFailure_error_sig_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "14018:41:38"
                                        },
                                        {
                                          "name": "TokenTransferGenericFailure_error_signature",
                                          "nodeType": "YulIdentifier",
                                          "src": "14081:43:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "13990:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "13990:152:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "13990:152:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "TokenTransferGenericFailure_error_token_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "14166:43:38"
                                        },
                                        {
                                          "name": "token",
                                          "nodeType": "YulIdentifier",
                                          "src": "14211:5:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14159:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14159:58:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14159:58:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "TokenTransferGenericFailure_error_from_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "14241:42:38"
                                        },
                                        {
                                          "name": "from",
                                          "nodeType": "YulIdentifier",
                                          "src": "14285:4:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14234:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14234:56:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14234:56:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "TokenTransferGenericFailure_error_to_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "14314:40:38"
                                        },
                                        {
                                          "name": "to",
                                          "nodeType": "YulIdentifier",
                                          "src": "14356:2:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14307:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14307:52:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14307:52:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "TokenTransferGenericFailure_error_id_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "14383:40:38"
                                        },
                                        {
                                          "name": "identifier",
                                          "nodeType": "YulIdentifier",
                                          "src": "14425:10:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14376:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14376:60:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14376:60:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "TokenTransferGenericFailure_error_amount_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "14460:44:38"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "14506:1:38",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "14453:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14453:55:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14453:55:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "TokenTransferGenericFailure_error_sig_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "14553:41:38"
                                        },
                                        {
                                          "name": "TokenTransferGenericFailure_error_length",
                                          "nodeType": "YulIdentifier",
                                          "src": "14616:40:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "14525:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "14525:149:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "14525:149:38"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "success",
                                    "nodeType": "YulIdentifier",
                                    "src": "11578:7:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "11571:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "11571:15:38"
                              },
                              "nodeType": "YulIf",
                              "src": "11568:3120:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "FreeMemoryPointerSlot",
                                    "nodeType": "YulIdentifier",
                                    "src": "14766:21:38"
                                  },
                                  {
                                    "name": "memPointer",
                                    "nodeType": "YulIdentifier",
                                    "src": "14789:10:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14759:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14759:41:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14759:41:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ZeroSlot",
                                    "nodeType": "YulIdentifier",
                                    "src": "14867:8:38"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14877:1:38",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "14860:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14860:19:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "14860:19:38"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 8164,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "12449:11:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8164,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "12852:11:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8082,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11074:28:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8088,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11180:26:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8091,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11435:26:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8079,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10995:27:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8079,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11390:27:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8076,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11024:29:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8085,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11129:26:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8161,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13564:14:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7995,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10879:21:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7995,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14766:21:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8167,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "13199:26:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8104,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10730:23:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8098,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10569:24:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8098,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10704:24:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8095,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10595:26:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8101,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10646:26:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7986,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "12044:7:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7986,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "12334:7:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8126,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14460:44:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8117,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14241:42:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8123,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14383:40:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8129,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14616:40:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8111,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14018:41:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8111,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14553:41:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8108,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14081:43:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8120,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14314:40:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8114,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14166:43:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7998,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14867:8:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7945,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11104:4:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7945,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14285:4:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7949,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11208:10:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7949,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14425:10:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7947,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11157:2:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7947,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14356:2:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7943,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10536:5:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7943,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "10674:5:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7943,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "11348:5:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7943,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "14211:5:38",
                            "valueSize": 1
                          }
                        ],
                        "id": 7952,
                        "nodeType": "InlineAssembly",
                        "src": "10442:4447:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7941,
                    "nodeType": "StructuredDocumentation",
                    "src": "9774:438:38",
                    "text": " @dev Internal function to transfer an ERC721 token from a given\n      originator to a given recipient. Sufficient approvals must be set on\n      the contract performing the transfer.\n @param token      The ERC721 token to transfer.\n @param from       The originator of the transfer.\n @param to         The recipient of the transfer.\n @param identifier The tokenId to transfer."
                  },
                  "id": 7954,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_performERC721Transfer",
                  "nameLocation": "10226:22:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7950,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7943,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "10266:5:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7954,
                        "src": "10258:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7942,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10258:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7945,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "10289:4:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7954,
                        "src": "10281:12:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7944,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10281:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7947,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "10311:2:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7954,
                        "src": "10303:10:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7946,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "10303:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7949,
                        "mutability": "mutable",
                        "name": "identifier",
                        "nameLocation": "10331:10:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7954,
                        "src": "10323:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7948,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "10323:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "10248:99:38"
                  },
                  "returnParameters": {
                    "id": 7951,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "10357:0:38"
                  },
                  "scope": 7981,
                  "src": "10217:4678:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7969,
                    "nodeType": "Block",
                    "src": "15684:5173:38",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "15779:5072:38",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "15872:224:38",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "NoContract_error_sig_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "15897:24:38"
                                        },
                                        {
                                          "name": "NoContract_error_signature",
                                          "nodeType": "YulIdentifier",
                                          "src": "15923:26:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15890:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15890:60:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15890:60:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "NoContract_error_token_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "15974:26:38"
                                        },
                                        {
                                          "name": "token",
                                          "nodeType": "YulIdentifier",
                                          "src": "16002:5:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "15967:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15967:41:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "15967:41:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "NoContract_error_sig_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "16032:24:38"
                                        },
                                        {
                                          "name": "NoContract_error_length",
                                          "nodeType": "YulIdentifier",
                                          "src": "16058:23:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "16025:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "16025:57:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "16025:57:38"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "token",
                                        "nodeType": "YulIdentifier",
                                        "src": "15864:5:38"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "extcodesize",
                                      "nodeType": "YulIdentifier",
                                      "src": "15852:11:38"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "15852:18:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "15845:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15845:26:38"
                              },
                              "nodeType": "YulIf",
                              "src": "15842:254:38"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16186:46:38",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "FreeMemoryPointerSlot",
                                    "nodeType": "YulIdentifier",
                                    "src": "16210:21:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16204:5:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16204:28:38"
                              },
                              "variables": [
                                {
                                  "name": "memPointer",
                                  "nodeType": "YulTypedName",
                                  "src": "16190:10:38",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16245:31:38",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "Slot0x80",
                                    "nodeType": "YulIdentifier",
                                    "src": "16267:8:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16261:5:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16261:15:38"
                              },
                              "variables": [
                                {
                                  "name": "slot0x80",
                                  "nodeType": "YulTypedName",
                                  "src": "16249:8:38",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16289:31:38",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "Slot0xA0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16311:8:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16305:5:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16305:15:38"
                              },
                              "variables": [
                                {
                                  "name": "slot0xA0",
                                  "nodeType": "YulTypedName",
                                  "src": "16293:8:38",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "16333:31:38",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "Slot0xC0",
                                    "nodeType": "YulIdentifier",
                                    "src": "16355:8:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mload",
                                  "nodeType": "YulIdentifier",
                                  "src": "16349:5:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16349:15:38"
                              },
                              "variables": [
                                {
                                  "name": "slot0xC0",
                                  "nodeType": "YulTypedName",
                                  "src": "16337:8:38",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ERC1155_safeTransferFrom_sig_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "16479:32:38"
                                  },
                                  {
                                    "name": "ERC1155_safeTransferFrom_signature",
                                    "nodeType": "YulIdentifier",
                                    "src": "16529:34:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16455:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16455:122:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16455:122:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ERC1155_safeTransferFrom_from_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "16597:33:38"
                                  },
                                  {
                                    "name": "from",
                                    "nodeType": "YulIdentifier",
                                    "src": "16632:4:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16590:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16590:47:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16590:47:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ERC1155_safeTransferFrom_to_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "16657:31:38"
                                  },
                                  {
                                    "name": "to",
                                    "nodeType": "YulIdentifier",
                                    "src": "16690:2:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16650:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16650:43:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16650:43:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ERC1155_safeTransferFrom_id_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "16713:31:38"
                                  },
                                  {
                                    "name": "identifier",
                                    "nodeType": "YulIdentifier",
                                    "src": "16746:10:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16706:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16706:51:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16706:51:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ERC1155_safeTransferFrom_amount_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "16777:35:38"
                                  },
                                  {
                                    "name": "amount",
                                    "nodeType": "YulIdentifier",
                                    "src": "16814:6:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16770:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16770:51:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16770:51:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ERC1155_safeTransferFrom_data_offset_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "16858:40:38"
                                  },
                                  {
                                    "name": "ERC1155_safeTransferFrom_data_length_offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "16916:43:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16834:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16834:139:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16834:139:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ERC1155_safeTransferFrom_data_length_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "16993:40:38"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17035:1:38",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "16986:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16986:51:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "16986:51:38"
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "17051:235:38",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "gas",
                                      "nodeType": "YulIdentifier",
                                      "src": "17088:3:38"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "17088:5:38"
                                  },
                                  {
                                    "name": "token",
                                    "nodeType": "YulIdentifier",
                                    "src": "17111:5:38"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17134:1:38",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "name": "ERC1155_safeTransferFrom_sig_ptr",
                                    "nodeType": "YulIdentifier",
                                    "src": "17153:32:38"
                                  },
                                  {
                                    "name": "ERC1155_safeTransferFrom_length",
                                    "nodeType": "YulIdentifier",
                                    "src": "17203:31:38"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17252:1:38",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "17271:1:38",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "call",
                                  "nodeType": "YulIdentifier",
                                  "src": "17066:4:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17066:220:38"
                              },
                              "variables": [
                                {
                                  "name": "success",
                                  "nodeType": "YulTypedName",
                                  "src": "17055:7:38",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "17360:3106:38",
                                "statements": [
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "17519:2160:38",
                                      "statements": [
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "17772:53:38",
                                          "value": {
                                            "arguments": [
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "returndatasize",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "17799:14:38"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "17799:16:38"
                                              },
                                              {
                                                "name": "OneWord",
                                                "nodeType": "YulIdentifier",
                                                "src": "17817:7:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "div",
                                              "nodeType": "YulIdentifier",
                                              "src": "17795:3:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "17795:30:38"
                                          },
                                          "variables": [
                                            {
                                              "name": "returnDataWords",
                                              "nodeType": "YulTypedName",
                                              "src": "17776:15:38",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "18073:42:38",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "memPointer",
                                                "nodeType": "YulIdentifier",
                                                "src": "18095:10:38"
                                              },
                                              {
                                                "name": "OneWord",
                                                "nodeType": "YulIdentifier",
                                                "src": "18107:7:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "div",
                                              "nodeType": "YulIdentifier",
                                              "src": "18091:3:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "18091:24:38"
                                          },
                                          "variables": [
                                            {
                                              "name": "msizeWords",
                                              "nodeType": "YulTypedName",
                                              "src": "18077:10:38",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "nodeType": "YulVariableDeclaration",
                                          "src": "18206:45:38",
                                          "value": {
                                            "arguments": [
                                              {
                                                "name": "CostPerWord",
                                                "nodeType": "YulIdentifier",
                                                "src": "18222:11:38"
                                              },
                                              {
                                                "name": "returnDataWords",
                                                "nodeType": "YulIdentifier",
                                                "src": "18235:15:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nodeType": "YulIdentifier",
                                              "src": "18218:3:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "18218:33:38"
                                          },
                                          "variables": [
                                            {
                                              "name": "cost",
                                              "nodeType": "YulTypedName",
                                              "src": "18210:4:38",
                                              "type": ""
                                            }
                                          ]
                                        },
                                        {
                                          "body": {
                                            "nodeType": "YulBlock",
                                            "src": "18376:734:38",
                                            "statements": [
                                              {
                                                "nodeType": "YulAssignment",
                                                "src": "18402:686:38",
                                                "value": {
                                                  "arguments": [
                                                    {
                                                      "name": "cost",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "18443:4:38"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "arguments": [
                                                                {
                                                                  "name": "returnDataWords",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "18559:15:38"
                                                                },
                                                                {
                                                                  "name": "msizeWords",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "18576:10:38"
                                                                }
                                                              ],
                                                              "functionName": {
                                                                "name": "sub",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "18555:3:38"
                                                              },
                                                              "nodeType": "YulFunctionCall",
                                                              "src": "18555:32:38"
                                                            },
                                                            {
                                                              "name": "CostPerWord",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "18625:11:38"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "mul",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "18514:3:38"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "18514:156:38"
                                                        },
                                                        {
                                                          "arguments": [
                                                            {
                                                              "arguments": [
                                                                {
                                                                  "arguments": [
                                                                    {
                                                                      "name": "returnDataWords",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "18794:15:38"
                                                                    },
                                                                    {
                                                                      "name": "returnDataWords",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "18811:15:38"
                                                                    }
                                                                  ],
                                                                  "functionName": {
                                                                    "name": "mul",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18790:3:38"
                                                                  },
                                                                  "nodeType": "YulFunctionCall",
                                                                  "src": "18790:37:38"
                                                                },
                                                                {
                                                                  "arguments": [
                                                                    {
                                                                      "name": "msizeWords",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "18873:10:38"
                                                                    },
                                                                    {
                                                                      "name": "msizeWords",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "18885:10:38"
                                                                    }
                                                                  ],
                                                                  "functionName": {
                                                                    "name": "mul",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "18869:3:38"
                                                                  },
                                                                  "nodeType": "YulFunctionCall",
                                                                  "src": "18869:27:38"
                                                                }
                                                              ],
                                                              "functionName": {
                                                                "name": "sub",
                                                                "nodeType": "YulIdentifier",
                                                                "src": "18745:3:38"
                                                              },
                                                              "nodeType": "YulFunctionCall",
                                                              "src": "18745:189:38"
                                                            },
                                                            {
                                                              "name": "MemoryExpansionCoefficient",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "18972:26:38"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "div",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "18704:3:38"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "18704:328:38"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "18477:3:38"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "18477:585:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "add",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "18410:3:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "18410:678:38"
                                                },
                                                "variableNames": [
                                                  {
                                                    "name": "cost",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "18402:4:38"
                                                  }
                                                ]
                                              }
                                            ]
                                          },
                                          "condition": {
                                            "arguments": [
                                              {
                                                "name": "returnDataWords",
                                                "nodeType": "YulIdentifier",
                                                "src": "18347:15:38"
                                              },
                                              {
                                                "name": "msizeWords",
                                                "nodeType": "YulIdentifier",
                                                "src": "18364:10:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "gt",
                                              "nodeType": "YulIdentifier",
                                              "src": "18344:2:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "18344:31:38"
                                          },
                                          "nodeType": "YulIf",
                                          "src": "18341:769:38"
                                        },
                                        {
                                          "body": {
                                            "nodeType": "YulBlock",
                                            "src": "19361:300:38",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "19483:1:38",
                                                      "type": "",
                                                      "value": "0"
                                                    },
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "19486:1:38",
                                                      "type": "",
                                                      "value": "0"
                                                    },
                                                    {
                                                      "arguments": [],
                                                      "functionName": {
                                                        "name": "returndatasize",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "19489:14:38"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "19489:16:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "returndatacopy",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "19468:14:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "19468:38:38"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "19468:38:38"
                                              },
                                              {
                                                "expression": {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nodeType": "YulLiteral",
                                                      "src": "19619:1:38",
                                                      "type": "",
                                                      "value": "0"
                                                    },
                                                    {
                                                      "arguments": [],
                                                      "functionName": {
                                                        "name": "returndatasize",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "19622:14:38"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "19622:16:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "revert",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "19612:6:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "19612:27:38"
                                                },
                                                "nodeType": "YulExpressionStatement",
                                                "src": "19612:27:38"
                                              }
                                            ]
                                          },
                                          "condition": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "cost",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "19331:4:38"
                                                  },
                                                  {
                                                    "name": "ExtraGasBuffer",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "19337:14:38"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "19327:3:38"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "19327:25:38"
                                              },
                                              {
                                                "arguments": [],
                                                "functionName": {
                                                  "name": "gas",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "19354:3:38"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "19354:5:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "lt",
                                              "nodeType": "YulIdentifier",
                                              "src": "19324:2:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "19324:36:38"
                                          },
                                          "nodeType": "YulIf",
                                          "src": "19321:340:38"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [],
                                      "functionName": {
                                        "name": "returndatasize",
                                        "nodeType": "YulIdentifier",
                                        "src": "17502:14:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17502:16:38"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "17499:2180:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "TokenTransferGenericFailure_error_sig_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "19791:41:38"
                                        },
                                        {
                                          "name": "TokenTransferGenericFailure_error_signature",
                                          "nodeType": "YulIdentifier",
                                          "src": "19854:43:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "19763:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19763:152:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19763:152:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "TokenTransferGenericFailure_error_token_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "19939:43:38"
                                        },
                                        {
                                          "name": "token",
                                          "nodeType": "YulIdentifier",
                                          "src": "19984:5:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "19932:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "19932:58:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "19932:58:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "TokenTransferGenericFailure_error_from_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "20014:42:38"
                                        },
                                        {
                                          "name": "from",
                                          "nodeType": "YulIdentifier",
                                          "src": "20058:4:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "20007:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20007:56:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20007:56:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "TokenTransferGenericFailure_error_to_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "20087:40:38"
                                        },
                                        {
                                          "name": "to",
                                          "nodeType": "YulIdentifier",
                                          "src": "20129:2:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "20080:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20080:52:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20080:52:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "TokenTransferGenericFailure_error_id_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "20156:40:38"
                                        },
                                        {
                                          "name": "identifier",
                                          "nodeType": "YulIdentifier",
                                          "src": "20198:10:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "20149:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20149:60:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20149:60:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "TokenTransferGenericFailure_error_amount_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "20233:44:38"
                                        },
                                        {
                                          "name": "amount",
                                          "nodeType": "YulIdentifier",
                                          "src": "20279:6:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "20226:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20226:60:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20226:60:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "TokenTransferGenericFailure_error_sig_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "20331:41:38"
                                        },
                                        {
                                          "name": "TokenTransferGenericFailure_error_length",
                                          "nodeType": "YulIdentifier",
                                          "src": "20394:40:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "20303:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "20303:149:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "20303:149:38"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "success",
                                    "nodeType": "YulIdentifier",
                                    "src": "17351:7:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nodeType": "YulIdentifier",
                                  "src": "17344:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "17344:15:38"
                              },
                              "nodeType": "YulIf",
                              "src": "17341:3125:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "Slot0x80",
                                    "nodeType": "YulIdentifier",
                                    "src": "20487:8:38"
                                  },
                                  {
                                    "name": "slot0x80",
                                    "nodeType": "YulIdentifier",
                                    "src": "20497:8:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20480:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20480:26:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20480:26:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "Slot0xA0",
                                    "nodeType": "YulIdentifier",
                                    "src": "20548:8:38"
                                  },
                                  {
                                    "name": "slot0xA0",
                                    "nodeType": "YulIdentifier",
                                    "src": "20558:8:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20541:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20541:26:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20541:26:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "Slot0xC0",
                                    "nodeType": "YulIdentifier",
                                    "src": "20609:8:38"
                                  },
                                  {
                                    "name": "slot0xC0",
                                    "nodeType": "YulIdentifier",
                                    "src": "20619:8:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20602:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20602:26:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20602:26:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "FreeMemoryPointerSlot",
                                    "nodeType": "YulIdentifier",
                                    "src": "20728:21:38"
                                  },
                                  {
                                    "name": "memPointer",
                                    "nodeType": "YulIdentifier",
                                    "src": "20751:10:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20721:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20721:41:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20721:41:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ZeroSlot",
                                    "nodeType": "YulIdentifier",
                                    "src": "20829:8:38"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "20839:1:38",
                                    "type": "",
                                    "value": "0"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "20822:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "20822:19:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "20822:19:38"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 8164,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18222:11:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8164,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18625:11:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8048,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16777:35:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8060,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16916:43:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8054,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16993:40:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8051,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16858:40:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8039,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16597:33:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8045,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16713:31:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8057,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "17203:31:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8036,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16479:32:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8036,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "17153:32:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8033,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16529:34:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8042,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16657:31:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8161,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19337:14:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7995,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16210:21:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7995,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20728:21:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8167,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18972:26:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8104,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16058:23:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8098,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "15897:24:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8098,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16032:24:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8095,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "15923:26:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8101,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "15974:26:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7986,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "17817:7:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7986,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "18107:7:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8004,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16267:8:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8004,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20487:8:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8007,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16311:8:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8007,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20548:8:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8010,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16355:8:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8010,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20609:8:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8126,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20233:44:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8117,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20014:42:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8123,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20156:40:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8129,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20394:40:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8111,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19791:41:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8111,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20331:41:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8108,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19854:43:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8120,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20087:40:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8114,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19939:43:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7998,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20829:8:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7965,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16814:6:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7965,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20279:6:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7959,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16632:4:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7959,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20058:4:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7963,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16746:10:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7963,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20198:10:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7961,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16690:2:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7961,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20129:2:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7957,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "15864:5:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7957,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "16002:5:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7957,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "17111:5:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7957,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "19984:5:38",
                            "valueSize": 1
                          }
                        ],
                        "id": 7968,
                        "nodeType": "InlineAssembly",
                        "src": "15770:5081:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7955,
                    "nodeType": "StructuredDocumentation",
                    "src": "14901:613:38",
                    "text": " @dev Internal function to transfer ERC1155 tokens from a given\n      originator to a given recipient. Sufficient approvals must be set on\n      the contract performing the transfer and contract recipients must\n      implement onReceived to indicate that they are willing to accept the\n      transfer.\n @param token      The ERC1155 token to transfer.\n @param from       The originator of the transfer.\n @param to         The recipient of the transfer.\n @param identifier The id to transfer.\n @param amount     The amount to transfer."
                  },
                  "id": 7970,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_performERC1155Transfer",
                  "nameLocation": "15528:23:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7966,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7957,
                        "mutability": "mutable",
                        "name": "token",
                        "nameLocation": "15569:5:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7970,
                        "src": "15561:13:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7956,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15561:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7959,
                        "mutability": "mutable",
                        "name": "from",
                        "nameLocation": "15592:4:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7970,
                        "src": "15584:12:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7958,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15584:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7961,
                        "mutability": "mutable",
                        "name": "to",
                        "nameLocation": "15614:2:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7970,
                        "src": "15606:10:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 7960,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15606:7:38",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7963,
                        "mutability": "mutable",
                        "name": "identifier",
                        "nameLocation": "15634:10:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7970,
                        "src": "15626:18:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7962,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15626:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7965,
                        "mutability": "mutable",
                        "name": "amount",
                        "nameLocation": "15662:6:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7970,
                        "src": "15654:14:38",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7964,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "15654:7:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "15551:123:38"
                  },
                  "returnParameters": {
                    "id": 7967,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "15684:0:38"
                  },
                  "scope": 7981,
                  "src": "15519:5338:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 7979,
                    "nodeType": "Block",
                    "src": "21407:11059:38",
                    "statements": [
                      {
                        "AST": {
                          "nodeType": "YulBlock",
                          "src": "21497:10963:38",
                          "statements": [
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21511:32:38",
                              "value": {
                                "name": "batchTransfers.length",
                                "nodeType": "YulIdentifier",
                                "src": "21522:21:38"
                              },
                              "variables": [
                                {
                                  "name": "len",
                                  "nodeType": "YulTypedName",
                                  "src": "21515:3:38",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "21783:47:38",
                              "value": {
                                "name": "batchTransfers.offset",
                                "nodeType": "YulIdentifier",
                                "src": "21809:21:38"
                              },
                              "variables": [
                                {
                                  "name": "nextElementHeadPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "21787:18:38",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "nodeType": "YulVariableDeclaration",
                              "src": "22069:38:38",
                              "value": {
                                "name": "nextElementHeadPtr",
                                "nodeType": "YulIdentifier",
                                "src": "22089:18:38"
                              },
                              "variables": [
                                {
                                  "name": "arrayHeadPtr",
                                  "nodeType": "YulTypedName",
                                  "src": "22073:12:38",
                                  "type": ""
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "ConduitBatch1155Transfer_from_offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "22305:36:38"
                                  },
                                  {
                                    "name": "ERC1155_safeBatchTransferFrom_signature",
                                    "nodeType": "YulIdentifier",
                                    "src": "22359:39:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "22281:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22281:131:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "22281:131:38"
                            },
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "22580:9642:38",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "22817:127:38",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "arrayHeadPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "22860:12:38"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "nextElementHeadPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "22907:18:38"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "calldataload",
                                            "nodeType": "YulIdentifier",
                                            "src": "22894:12:38"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "22894:32:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "22835:3:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22835:109:38"
                                    },
                                    "variables": [
                                      {
                                        "name": "elementPtr",
                                        "nodeType": "YulTypedName",
                                        "src": "22821:10:38",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "23026:54:38",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "nextElementHeadPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "23052:18:38"
                                        },
                                        {
                                          "name": "OneWord",
                                          "nodeType": "YulIdentifier",
                                          "src": "23072:7:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "23048:3:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23048:32:38"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "nextElementHeadPtr",
                                        "nodeType": "YulIdentifier",
                                        "src": "23026:18:38"
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "BatchTransfer1155Params_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "23211:27:38"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "elementPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "23264:10:38"
                                            },
                                            {
                                              "name": "ConduitBatch1155Transfer_from_offset",
                                              "nodeType": "YulIdentifier",
                                              "src": "23276:36:38"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "23260:3:38"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23260:53:38"
                                        },
                                        {
                                          "name": "ConduitBatch1155Transfer_usable_head_size",
                                          "nodeType": "YulIdentifier",
                                          "src": "23335:41:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldatacopy",
                                        "nodeType": "YulIdentifier",
                                        "src": "23177:12:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23177:217:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23177:217:38"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "23469:128:38",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "elementPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "23524:10:38"
                                            },
                                            {
                                              "name": "ConduitBatch1155Transfer_ids_length_offset",
                                              "nodeType": "YulIdentifier",
                                              "src": "23536:42:38"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "23520:3:38"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23520:59:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "23486:12:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23486:111:38"
                                    },
                                    "variables": [
                                      {
                                        "name": "idsLength",
                                        "nodeType": "YulTypedName",
                                        "src": "23473:9:38",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "23772:64:38",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "TwoWords",
                                          "nodeType": "YulIdentifier",
                                          "src": "23801:8:38"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "idsLength",
                                              "nodeType": "YulIdentifier",
                                              "src": "23815:9:38"
                                            },
                                            {
                                              "name": "TwoWords",
                                              "nodeType": "YulIdentifier",
                                              "src": "23826:8:38"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mul",
                                            "nodeType": "YulIdentifier",
                                            "src": "23811:3:38"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "23811:24:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "23797:3:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23797:39:38"
                                    },
                                    "variables": [
                                      {
                                        "name": "idsAndAmountsSize",
                                        "nodeType": "YulTypedName",
                                        "src": "23776:17:38",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "BatchTransfer1155Params_data_head_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "23949:37:38"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "BatchTransfer1155Params_ids_length_offset",
                                              "nodeType": "YulIdentifier",
                                              "src": "24037:41:38"
                                            },
                                            {
                                              "name": "idsAndAmountsSize",
                                              "nodeType": "YulIdentifier",
                                              "src": "24104:17:38"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "24008:3:38"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24008:135:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "23921:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "23921:240:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "23921:240:38"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "BatchTransfer1155Params_data_length_basePtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "24307:43:38"
                                            },
                                            {
                                              "name": "idsAndAmountsSize",
                                              "nodeType": "YulIdentifier",
                                              "src": "24376:17:38"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "24278:3:38"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24278:137:38"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "24437:1:38",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "24250:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24250:206:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24250:206:38"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "24553:156:38",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "BatchTransfer1155Params_data_length_basePtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "24602:43:38"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "idsLength",
                                              "nodeType": "YulIdentifier",
                                              "src": "24671:9:38"
                                            },
                                            {
                                              "name": "TwoWords",
                                              "nodeType": "YulIdentifier",
                                              "src": "24682:8:38"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mul",
                                            "nodeType": "YulIdentifier",
                                            "src": "24667:3:38"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24667:24:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "24577:3:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24577:132:38"
                                    },
                                    "variables": [
                                      {
                                        "name": "transferDataSize",
                                        "nodeType": "YulTypedName",
                                        "src": "24557:16:38",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "name": "BatchTransfer1155Params_ids_length_ptr",
                                          "nodeType": "YulIdentifier",
                                          "src": "24840:38:38"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "elementPtr",
                                              "nodeType": "YulIdentifier",
                                              "src": "24904:10:38"
                                            },
                                            {
                                              "name": "ConduitBatch1155Transfer_ids_length_offset",
                                              "nodeType": "YulIdentifier",
                                              "src": "24916:42:38"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nodeType": "YulIdentifier",
                                            "src": "24900:3:38"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "24900:59:38"
                                        },
                                        {
                                          "name": "idsAndAmountsSize",
                                          "nodeType": "YulIdentifier",
                                          "src": "24981:17:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldatacopy",
                                        "nodeType": "YulIdentifier",
                                        "src": "24806:12:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "24806:210:38"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "24806:210:38"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "25106:167:38",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "ConduitBatch1155Transfer_amounts_length_baseOffset",
                                          "nodeType": "YulIdentifier",
                                          "src": "25160:50:38"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "name": "idsLength",
                                              "nodeType": "YulIdentifier",
                                              "src": "25236:9:38"
                                            },
                                            {
                                              "name": "OneWord",
                                              "nodeType": "YulIdentifier",
                                              "src": "25247:7:38"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mul",
                                            "nodeType": "YulIdentifier",
                                            "src": "25232:3:38"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "25232:23:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "25135:3:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25135:138:38"
                                    },
                                    "variables": [
                                      {
                                        "name": "expectedAmountsOffset",
                                        "nodeType": "YulTypedName",
                                        "src": "25110:21:38",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "25336:1345:38",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "idsLength",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "25504:9:38"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "elementPtr",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "25560:10:38"
                                                        },
                                                        {
                                                          "name": "expectedAmountsOffset",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "25572:21:38"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "25556:3:38"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "25556:38:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "calldataload",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "25543:12:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "25543:52:38"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "eq",
                                                "nodeType": "YulIdentifier",
                                                "src": "25472:2:38"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "25472:149:38"
                                            },
                                            {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "elementPtr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "25861:10:38"
                                                            },
                                                            {
                                                              "name": "ConduitBatch1155Transfer_ids_head_offset",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "25913:40:38"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "25816:3:38"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "25816:175:38"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "calldataload",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "25766:12:38"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "25766:259:38"
                                                    },
                                                    {
                                                      "name": "ConduitBatch1155Transfer_ids_length_offset",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "26059:42:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "25730:2:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "25730:401:38"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "arguments": [
                                                            {
                                                              "name": "elementPtr",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "26362:10:38"
                                                            },
                                                            {
                                                              "name": "ConduitBatch1155Transfer_amounts_head_offset",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "26414:44:38"
                                                            }
                                                          ],
                                                          "functionName": {
                                                            "name": "add",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "26317:3:38"
                                                          },
                                                          "nodeType": "YulFunctionCall",
                                                          "src": "26317:179:38"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "calldataload",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "26267:12:38"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "26267:263:38"
                                                    },
                                                    {
                                                      "name": "expectedAmountsOffset",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "26564:21:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "eq",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "26231:2:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "26231:384:38"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "and",
                                                "nodeType": "YulIdentifier",
                                                "src": "25647:3:38"
                                              },
                                              "nodeType": "YulFunctionCall",
                                              "src": "25647:994:38"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "and",
                                            "nodeType": "YulIdentifier",
                                            "src": "25387:3:38"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "25387:1276:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "25359:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "25359:1322:38"
                                    },
                                    "variables": [
                                      {
                                        "name": "invalidEncoding",
                                        "nodeType": "YulTypedName",
                                        "src": "25340:15:38",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "26788:373:38",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "Invalid1155BatchTransferEncoding_ptr",
                                                "nodeType": "YulIdentifier",
                                                "src": "26842:36:38"
                                              },
                                              {
                                                "name": "Invalid1155BatchTransferEncoding_selector",
                                                "nodeType": "YulIdentifier",
                                                "src": "26904:41:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "26810:6:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "26810:157:38"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "26810:157:38"
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "Invalid1155BatchTransferEncoding_ptr",
                                                "nodeType": "YulIdentifier",
                                                "src": "27020:36:38"
                                              },
                                              {
                                                "name": "Invalid1155BatchTransferEncoding_length",
                                                "nodeType": "YulIdentifier",
                                                "src": "27082:39:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "26988:6:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "26988:155:38"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "26988:155:38"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "name": "invalidEncoding",
                                      "nodeType": "YulIdentifier",
                                      "src": "26772:15:38"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "26769:392:38"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "27232:37:38",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "elementPtr",
                                          "nodeType": "YulIdentifier",
                                          "src": "27258:10:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "calldataload",
                                        "nodeType": "YulIdentifier",
                                        "src": "27245:12:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27245:24:38"
                                    },
                                    "variables": [
                                      {
                                        "name": "token",
                                        "nodeType": "YulTypedName",
                                        "src": "27236:5:38",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "27370:240:38",
                                      "statements": [
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "NoContract_error_sig_ptr",
                                                "nodeType": "YulIdentifier",
                                                "src": "27399:24:38"
                                              },
                                              {
                                                "name": "NoContract_error_signature",
                                                "nodeType": "YulIdentifier",
                                                "src": "27425:26:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "27392:6:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "27392:60:38"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "27392:60:38"
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "NoContract_error_token_ptr",
                                                "nodeType": "YulIdentifier",
                                                "src": "27480:26:38"
                                              },
                                              {
                                                "name": "token",
                                                "nodeType": "YulIdentifier",
                                                "src": "27508:5:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "27473:6:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "27473:41:38"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "27473:41:38"
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "NoContract_error_sig_ptr",
                                                "nodeType": "YulIdentifier",
                                                "src": "27542:24:38"
                                              },
                                              {
                                                "name": "NoContract_error_length",
                                                "nodeType": "YulIdentifier",
                                                "src": "27568:23:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "27535:6:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "27535:57:38"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "27535:57:38"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "arguments": [
                                            {
                                              "name": "token",
                                              "nodeType": "YulIdentifier",
                                              "src": "27362:5:38"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "extcodesize",
                                            "nodeType": "YulIdentifier",
                                            "src": "27350:11:38"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "27350:18:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "27343:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27343:26:38"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "27340:270:38"
                                  },
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "27689:318:38",
                                    "value": {
                                      "arguments": [
                                        {
                                          "arguments": [],
                                          "functionName": {
                                            "name": "gas",
                                            "nodeType": "YulIdentifier",
                                            "src": "27730:3:38"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "27730:5:38"
                                        },
                                        {
                                          "name": "token",
                                          "nodeType": "YulIdentifier",
                                          "src": "27757:5:38"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27784:1:38",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "name": "ConduitBatch1155Transfer_from_offset",
                                          "nodeType": "YulIdentifier",
                                          "src": "27807:36:38"
                                        },
                                        {
                                          "name": "transferDataSize",
                                          "nodeType": "YulIdentifier",
                                          "src": "27888:16:38"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27965:1:38",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "27988:1:38",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "call",
                                        "nodeType": "YulIdentifier",
                                        "src": "27704:4:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "27704:303:38"
                                    },
                                    "variables": [
                                      {
                                        "name": "success",
                                        "nodeType": "YulTypedName",
                                        "src": "27693:7:38",
                                        "type": ""
                                      }
                                    ]
                                  },
                                  {
                                    "body": {
                                      "nodeType": "YulBlock",
                                      "src": "28089:4119:38",
                                      "statements": [
                                        {
                                          "body": {
                                            "nodeType": "YulBlock",
                                            "src": "28260:2839:38",
                                            "statements": [
                                              {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "28558:53:38",
                                                "value": {
                                                  "arguments": [
                                                    {
                                                      "arguments": [],
                                                      "functionName": {
                                                        "name": "returndatasize",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "28585:14:38"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "28585:16:38"
                                                    },
                                                    {
                                                      "name": "OneWord",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "28603:7:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "div",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "28581:3:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "28581:30:38"
                                                },
                                                "variables": [
                                                  {
                                                    "name": "returnDataWords",
                                                    "nodeType": "YulTypedName",
                                                    "src": "28562:15:38",
                                                    "type": ""
                                                  }
                                                ]
                                              },
                                              {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "29232:48:38",
                                                "value": {
                                                  "arguments": [
                                                    {
                                                      "name": "transferDataSize",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "29254:16:38"
                                                    },
                                                    {
                                                      "name": "OneWord",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "29272:7:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "div",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "29250:3:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "29250:30:38"
                                                },
                                                "variables": [
                                                  {
                                                    "name": "msizeWords",
                                                    "nodeType": "YulTypedName",
                                                    "src": "29236:10:38",
                                                    "type": ""
                                                  }
                                                ]
                                              },
                                              {
                                                "nodeType": "YulVariableDeclaration",
                                                "src": "29379:45:38",
                                                "value": {
                                                  "arguments": [
                                                    {
                                                      "name": "CostPerWord",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "29395:11:38"
                                                    },
                                                    {
                                                      "name": "returnDataWords",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "29408:15:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mul",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "29391:3:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "29391:33:38"
                                                },
                                                "variables": [
                                                  {
                                                    "name": "cost",
                                                    "nodeType": "YulTypedName",
                                                    "src": "29383:4:38",
                                                    "type": ""
                                                  }
                                                ]
                                              },
                                              {
                                                "body": {
                                                  "nodeType": "YulBlock",
                                                  "src": "29557:944:38",
                                                  "statements": [
                                                    {
                                                      "nodeType": "YulAssignment",
                                                      "src": "29587:888:38",
                                                      "value": {
                                                        "arguments": [
                                                          {
                                                            "name": "cost",
                                                            "nodeType": "YulIdentifier",
                                                            "src": "29632:4:38"
                                                          },
                                                          {
                                                            "arguments": [
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "arguments": [
                                                                      {
                                                                        "name": "returnDataWords",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "29760:15:38"
                                                                      },
                                                                      {
                                                                        "name": "msizeWords",
                                                                        "nodeType": "YulIdentifier",
                                                                        "src": "29777:10:38"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "sub",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "29756:3:38"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "29756:32:38"
                                                                  },
                                                                  {
                                                                    "name": "CostPerWord",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "29830:11:38"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "mul",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "29711:3:38"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29711:168:38"
                                                              },
                                                              {
                                                                "arguments": [
                                                                  {
                                                                    "arguments": [
                                                                      {
                                                                        "arguments": [
                                                                          {
                                                                            "name": "returnDataWords",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30064:15:38"
                                                                          },
                                                                          {
                                                                            "name": "returnDataWords",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30129:15:38"
                                                                          }
                                                                        ],
                                                                        "functionName": {
                                                                          "name": "mul",
                                                                          "nodeType": "YulIdentifier",
                                                                          "src": "30011:3:38"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "30011:179:38"
                                                                      },
                                                                      {
                                                                        "arguments": [
                                                                          {
                                                                            "name": "msizeWords",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30240:10:38"
                                                                          },
                                                                          {
                                                                            "name": "msizeWords",
                                                                            "nodeType": "YulIdentifier",
                                                                            "src": "30252:10:38"
                                                                          }
                                                                        ],
                                                                        "functionName": {
                                                                          "name": "mul",
                                                                          "nodeType": "YulIdentifier",
                                                                          "src": "30236:3:38"
                                                                        },
                                                                        "nodeType": "YulFunctionCall",
                                                                        "src": "30236:27:38"
                                                                      }
                                                                    ],
                                                                    "functionName": {
                                                                      "name": "sub",
                                                                      "nodeType": "YulIdentifier",
                                                                      "src": "29962:3:38"
                                                                    },
                                                                    "nodeType": "YulFunctionCall",
                                                                    "src": "29962:343:38"
                                                                  },
                                                                  {
                                                                    "name": "MemoryExpansionCoefficient",
                                                                    "nodeType": "YulIdentifier",
                                                                    "src": "30347:26:38"
                                                                  }
                                                                ],
                                                                "functionName": {
                                                                  "name": "div",
                                                                  "nodeType": "YulIdentifier",
                                                                  "src": "29917:3:38"
                                                                },
                                                                "nodeType": "YulFunctionCall",
                                                                "src": "29917:494:38"
                                                              }
                                                            ],
                                                            "functionName": {
                                                              "name": "add",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "29670:3:38"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "29670:775:38"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "add",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "29595:3:38"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "29595:880:38"
                                                      },
                                                      "variableNames": [
                                                        {
                                                          "name": "cost",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "29587:4:38"
                                                        }
                                                      ]
                                                    }
                                                  ]
                                                },
                                                "condition": {
                                                  "arguments": [
                                                    {
                                                      "name": "returnDataWords",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "29528:15:38"
                                                    },
                                                    {
                                                      "name": "msizeWords",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "29545:10:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "gt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "29525:2:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "29525:31:38"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "29522:979:38"
                                              },
                                              {
                                                "body": {
                                                  "nodeType": "YulBlock",
                                                  "src": "30768:309:38",
                                                  "statements": [
                                                    {
                                                      "expression": {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "30891:1:38",
                                                            "type": "",
                                                            "value": "0"
                                                          },
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "30894:1:38",
                                                            "type": "",
                                                            "value": "0"
                                                          },
                                                          {
                                                            "arguments": [],
                                                            "functionName": {
                                                              "name": "returndatasize",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "30897:14:38"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "30897:16:38"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "returndatacopy",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "30876:14:38"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "30876:38:38"
                                                      },
                                                      "nodeType": "YulExpressionStatement",
                                                      "src": "30876:38:38"
                                                    },
                                                    {
                                                      "expression": {
                                                        "arguments": [
                                                          {
                                                            "kind": "number",
                                                            "nodeType": "YulLiteral",
                                                            "src": "31031:1:38",
                                                            "type": "",
                                                            "value": "0"
                                                          },
                                                          {
                                                            "arguments": [],
                                                            "functionName": {
                                                              "name": "returndatasize",
                                                              "nodeType": "YulIdentifier",
                                                              "src": "31034:14:38"
                                                            },
                                                            "nodeType": "YulFunctionCall",
                                                            "src": "31034:16:38"
                                                          }
                                                        ],
                                                        "functionName": {
                                                          "name": "revert",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "31024:6:38"
                                                        },
                                                        "nodeType": "YulFunctionCall",
                                                        "src": "31024:27:38"
                                                      },
                                                      "nodeType": "YulExpressionStatement",
                                                      "src": "31024:27:38"
                                                    }
                                                  ]
                                                },
                                                "condition": {
                                                  "arguments": [
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "cost",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "30738:4:38"
                                                        },
                                                        {
                                                          "name": "ExtraGasBuffer",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "30744:14:38"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "add",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "30734:3:38"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "30734:25:38"
                                                    },
                                                    {
                                                      "arguments": [],
                                                      "functionName": {
                                                        "name": "gas",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "30761:3:38"
                                                      },
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "30761:5:38"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "lt",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "30731:2:38"
                                                  },
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "30731:36:38"
                                                },
                                                "nodeType": "YulIf",
                                                "src": "30728:349:38"
                                              }
                                            ]
                                          },
                                          "condition": {
                                            "arguments": [],
                                            "functionName": {
                                              "name": "returndatasize",
                                              "nodeType": "YulIdentifier",
                                              "src": "28243:14:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "28243:16:38"
                                          },
                                          "nodeType": "YulIf",
                                          "src": "28240:2859:38"
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "31201:1:38",
                                                "type": "",
                                                "value": "0"
                                              },
                                              {
                                                "name": "ERC1155BatchTransferGenericFailure_error_signature",
                                                "nodeType": "YulIdentifier",
                                                "src": "31228:50:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "31169:6:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31169:131:38"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "31169:131:38"
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "ERC1155BatchTransferGenericFailure_token_ptr",
                                                "nodeType": "YulIdentifier",
                                                "src": "31369:44:38"
                                              },
                                              {
                                                "name": "token",
                                                "nodeType": "YulIdentifier",
                                                "src": "31415:5:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "31362:6:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31362:59:38"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "31362:59:38"
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "BatchTransfer1155Params_ids_head_ptr",
                                                "nodeType": "YulIdentifier",
                                                "src": "31547:36:38"
                                              },
                                              {
                                                "name": "ConduitBatch1155Transfer_amounts_head_offset",
                                                "nodeType": "YulIdentifier",
                                                "src": "31609:44:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "31515:6:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31515:160:38"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "31515:160:38"
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "name": "BatchTransfer1155Params_amounts_head_ptr",
                                                "nodeType": "YulIdentifier",
                                                "src": "31728:40:38"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "OneWord",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "31827:7:38"
                                                  },
                                                  {
                                                    "arguments": [
                                                      {
                                                        "name": "BatchTransfer1155Params_amounts_head_ptr",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "31870:40:38"
                                                      }
                                                    ],
                                                    "functionName": {
                                                      "name": "mload",
                                                      "nodeType": "YulIdentifier",
                                                      "src": "31864:5:38"
                                                    },
                                                    "nodeType": "YulFunctionCall",
                                                    "src": "31864:47:38"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "31794:3:38"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "31794:143:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mstore",
                                              "nodeType": "YulIdentifier",
                                              "src": "31696:6:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "31696:263:38"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "31696:263:38"
                                        },
                                        {
                                          "expression": {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "32091:1:38",
                                                "type": "",
                                                "value": "0"
                                              },
                                              {
                                                "arguments": [
                                                  {
                                                    "name": "transferDataSize",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "32122:16:38"
                                                  },
                                                  {
                                                    "name": "BatchTransfer1155Params_ptr",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "32140:27:38"
                                                  }
                                                ],
                                                "functionName": {
                                                  "name": "add",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "32118:3:38"
                                                },
                                                "nodeType": "YulFunctionCall",
                                                "src": "32118:50:38"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "revert",
                                              "nodeType": "YulIdentifier",
                                              "src": "32059:6:38"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "32059:131:38"
                                          },
                                          "nodeType": "YulExpressionStatement",
                                          "src": "32059:131:38"
                                        }
                                      ]
                                    },
                                    "condition": {
                                      "arguments": [
                                        {
                                          "name": "success",
                                          "nodeType": "YulIdentifier",
                                          "src": "28080:7:38"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "iszero",
                                        "nodeType": "YulIdentifier",
                                        "src": "28073:6:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "28073:15:38"
                                    },
                                    "nodeType": "YulIf",
                                    "src": "28070:4138:38"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "i",
                                    "nodeType": "YulIdentifier",
                                    "src": "22525:1:38"
                                  },
                                  {
                                    "name": "len",
                                    "nodeType": "YulIdentifier",
                                    "src": "22528:3:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "lt",
                                  "nodeType": "YulIdentifier",
                                  "src": "22522:2:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "22522:10:38"
                              },
                              "nodeType": "YulForLoop",
                              "post": {
                                "nodeType": "YulBlock",
                                "src": "22533:46:38",
                                "statements": [
                                  {
                                    "nodeType": "YulAssignment",
                                    "src": "22551:14:38",
                                    "value": {
                                      "arguments": [
                                        {
                                          "name": "i",
                                          "nodeType": "YulIdentifier",
                                          "src": "22560:1:38"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "22563:1:38",
                                          "type": "",
                                          "value": "1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "22556:3:38"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "22556:9:38"
                                    },
                                    "variableNames": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "22551:1:38"
                                      }
                                    ]
                                  }
                                ]
                              },
                              "pre": {
                                "nodeType": "YulBlock",
                                "src": "22479:42:38",
                                "statements": [
                                  {
                                    "nodeType": "YulVariableDeclaration",
                                    "src": "22497:10:38",
                                    "value": {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "22506:1:38",
                                      "type": "",
                                      "value": "0"
                                    },
                                    "variables": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulTypedName",
                                        "src": "22501:1:38",
                                        "type": ""
                                      }
                                    ]
                                  }
                                ]
                              },
                              "src": "22475:9747:38"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "FreeMemoryPointerSlot",
                                    "nodeType": "YulIdentifier",
                                    "src": "32402:21:38"
                                  },
                                  {
                                    "name": "DefaultFreeMemoryPointer",
                                    "nodeType": "YulIdentifier",
                                    "src": "32425:24:38"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "32395:6:38"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "32395:55:38"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "32395:55:38"
                            }
                          ]
                        },
                        "evmVersion": "london",
                        "externalReferences": [
                          {
                            "declaration": 8176,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "31728:40:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8176,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "31870:40:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8179,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "23949:37:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8182,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24307:43:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8182,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24602:43:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8173,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "31547:36:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8188,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24037:41:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8185,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24840:38:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8170,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "23211:27:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8170,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "32140:27:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8206,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "26414:44:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8206,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "31609:44:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8212,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25160:50:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8200,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "22305:36:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8200,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "23276:36:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8200,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "27807:36:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8203,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25913:40:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8209,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "23536:42:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8209,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24916:42:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8209,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "26059:42:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8197,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "23335:41:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8164,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "29395:11:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8164,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "29830:11:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8001,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "32425:24:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8133,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "31228:50:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8136,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "31369:44:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8064,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "22359:39:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8161,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "30744:14:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7995,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "32402:21:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8221,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "27082:39:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8218,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "26842:36:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8218,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "27020:36:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8225,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "26904:41:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8167,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "30347:26:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8104,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "27568:23:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8098,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "27399:24:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8098,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "27542:24:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8095,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "27425:26:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8101,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "27480:26:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7986,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "23072:7:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7986,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "25247:7:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7986,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "28603:7:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7986,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "29272:7:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7986,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "31827:7:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7989,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "23801:8:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7989,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "23826:8:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7989,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "24682:8:38",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7975,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "21522:21:38",
                            "suffix": "length",
                            "valueSize": 1
                          },
                          {
                            "declaration": 7975,
                            "isOffset": true,
                            "isSlot": false,
                            "src": "21809:21:38",
                            "suffix": "offset",
                            "valueSize": 1
                          }
                        ],
                        "id": 7978,
                        "nodeType": "InlineAssembly",
                        "src": "21488:10972:38"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 7971,
                    "nodeType": "StructuredDocumentation",
                    "src": "20863:425:38",
                    "text": " @dev Internal function to transfer ERC1155 tokens from a given\n      originator to a given recipient. Sufficient approvals must be set on\n      the contract performing the transfer and contract recipients must\n      implement onReceived to indicate that they are willing to accept the\n      transfer.\n @param batchTransfers The group of 1155 batch transfers to perform."
                  },
                  "id": 7980,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_performERC1155BatchTransfers",
                  "nameLocation": "21302:29:38",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 7976,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 7975,
                        "mutability": "mutable",
                        "name": "batchTransfers",
                        "nameLocation": "21377:14:38",
                        "nodeType": "VariableDeclaration",
                        "scope": 7980,
                        "src": "21341:50:38",
                        "stateVariable": false,
                        "storageLocation": "calldata",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ConduitBatch1155Transfer_$1482_calldata_ptr_$dyn_calldata_ptr",
                          "typeString": "struct ConduitBatch1155Transfer[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 7973,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 7972,
                              "name": "ConduitBatch1155Transfer",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 1482,
                              "src": "21341:24:38"
                            },
                            "referencedDeclaration": 1482,
                            "src": "21341:24:38",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ConduitBatch1155Transfer_$1482_storage_ptr",
                              "typeString": "struct ConduitBatch1155Transfer"
                            }
                          },
                          "id": 7974,
                          "nodeType": "ArrayTypeName",
                          "src": "21341:26:38",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_ConduitBatch1155Transfer_$1482_storage_$dyn_storage_ptr",
                            "typeString": "struct ConduitBatch1155Transfer[]"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "21331:66:38"
                  },
                  "returnParameters": {
                    "id": 7977,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "21407:0:38"
                  },
                  "scope": 7981,
                  "src": "21293:11173:38",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 7982,
              "src": "287:32181:38",
              "usedErrors": [
                2233,
                2236,
                2249,
                2264,
                2275,
                2280
              ]
            }
          ],
          "src": "32:32437:38"
        },
        "id": 38
      },
      "seaport/contracts/lib/TokenTransferrerConstants.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/TokenTransferrerConstants.sol",
          "exportedSymbols": {
            "BadReturnValueFromERC20OnTransfer_error_amount_ptr": [
              8155
            ],
            "BadReturnValueFromERC20OnTransfer_error_from_ptr": [
              8149
            ],
            "BadReturnValueFromERC20OnTransfer_error_length": [
              8158
            ],
            "BadReturnValueFromERC20OnTransfer_error_sig_ptr": [
              8143
            ],
            "BadReturnValueFromERC20OnTransfer_error_signature": [
              8140
            ],
            "BadReturnValueFromERC20OnTransfer_error_to_ptr": [
              8152
            ],
            "BadReturnValueFromERC20OnTransfer_error_token_ptr": [
              8146
            ],
            "BatchTransfer1155Params_amounts_head_ptr": [
              8176
            ],
            "BatchTransfer1155Params_amounts_length_baseOffset": [
              8191
            ],
            "BatchTransfer1155Params_data_head_ptr": [
              8179
            ],
            "BatchTransfer1155Params_data_length_baseOffset": [
              8194
            ],
            "BatchTransfer1155Params_data_length_basePtr": [
              8182
            ],
            "BatchTransfer1155Params_ids_head_ptr": [
              8173
            ],
            "BatchTransfer1155Params_ids_length_offset": [
              8188
            ],
            "BatchTransfer1155Params_ids_length_ptr": [
              8185
            ],
            "BatchTransfer1155Params_ptr": [
              8170
            ],
            "ConduitBatch1155Transfer_amounts_head_offset": [
              8206
            ],
            "ConduitBatch1155Transfer_amounts_length_baseOffset": [
              8212
            ],
            "ConduitBatch1155Transfer_calldata_baseSize": [
              8215
            ],
            "ConduitBatch1155Transfer_from_offset": [
              8200
            ],
            "ConduitBatch1155Transfer_ids_head_offset": [
              8203
            ],
            "ConduitBatch1155Transfer_ids_length_offset": [
              8209
            ],
            "ConduitBatch1155Transfer_usable_head_size": [
              8197
            ],
            "CostPerWord": [
              8164
            ],
            "DefaultFreeMemoryPointer": [
              8001
            ],
            "ERC1155BatchTransferGenericFailure_error_signature": [
              8133
            ],
            "ERC1155BatchTransferGenericFailure_token_ptr": [
              8136
            ],
            "ERC1155_safeBatchTransferFrom_selector": [
              8073
            ],
            "ERC1155_safeBatchTransferFrom_signature": [
              8064
            ],
            "ERC1155_safeTransferFrom_amount_ptr": [
              8048
            ],
            "ERC1155_safeTransferFrom_data_length_offset": [
              8060
            ],
            "ERC1155_safeTransferFrom_data_length_ptr": [
              8054
            ],
            "ERC1155_safeTransferFrom_data_offset_ptr": [
              8051
            ],
            "ERC1155_safeTransferFrom_from_ptr": [
              8039
            ],
            "ERC1155_safeTransferFrom_id_ptr": [
              8045
            ],
            "ERC1155_safeTransferFrom_length": [
              8057
            ],
            "ERC1155_safeTransferFrom_sig_ptr": [
              8036
            ],
            "ERC1155_safeTransferFrom_signature": [
              8033
            ],
            "ERC1155_safeTransferFrom_to_ptr": [
              8042
            ],
            "ERC20_transferFrom_amount_ptr": [
              8026
            ],
            "ERC20_transferFrom_from_ptr": [
              8020
            ],
            "ERC20_transferFrom_length": [
              8029
            ],
            "ERC20_transferFrom_sig_ptr": [
              8017
            ],
            "ERC20_transferFrom_signature": [
              8014
            ],
            "ERC20_transferFrom_to_ptr": [
              8023
            ],
            "ERC721_transferFrom_from_ptr": [
              8082
            ],
            "ERC721_transferFrom_id_ptr": [
              8088
            ],
            "ERC721_transferFrom_length": [
              8091
            ],
            "ERC721_transferFrom_sig_ptr": [
              8079
            ],
            "ERC721_transferFrom_signature": [
              8076
            ],
            "ERC721_transferFrom_to_ptr": [
              8085
            ],
            "ExtraGasBuffer": [
              8161
            ],
            "FreeMemoryPointerSlot": [
              7995
            ],
            "Invalid1155BatchTransferEncoding_length": [
              8221
            ],
            "Invalid1155BatchTransferEncoding_ptr": [
              8218
            ],
            "Invalid1155BatchTransferEncoding_selector": [
              8225
            ],
            "MemoryExpansionCoefficient": [
              8167
            ],
            "NoContract_error_length": [
              8104
            ],
            "NoContract_error_sig_ptr": [
              8098
            ],
            "NoContract_error_signature": [
              8095
            ],
            "NoContract_error_token_ptr": [
              8101
            ],
            "OneWord": [
              7986
            ],
            "Slot0x80": [
              8004
            ],
            "Slot0xA0": [
              8007
            ],
            "Slot0xC0": [
              8010
            ],
            "ThreeWords": [
              7992
            ],
            "TokenTransferGenericFailure_error_amount_ptr": [
              8126
            ],
            "TokenTransferGenericFailure_error_from_ptr": [
              8117
            ],
            "TokenTransferGenericFailure_error_id_ptr": [
              8123
            ],
            "TokenTransferGenericFailure_error_length": [
              8129
            ],
            "TokenTransferGenericFailure_error_sig_ptr": [
              8111
            ],
            "TokenTransferGenericFailure_error_signature": [
              8108
            ],
            "TokenTransferGenericFailure_error_to_ptr": [
              8120
            ],
            "TokenTransferGenericFailure_error_token_ptr": [
              8114
            ],
            "TwoWords": [
              7989
            ],
            "ZeroSlot": [
              7998
            ]
          },
          "id": 8226,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 7983,
              "literals": [
                "solidity",
                ">=",
                "0.8",
                ".7"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:24:39"
            },
            {
              "constant": true,
              "id": 7986,
              "mutability": "constant",
              "name": "OneWord",
              "nameLocation": "1808:7:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "1791:31:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 7984,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1791:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 7985,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1818:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 7989,
              "mutability": "constant",
              "name": "TwoWords",
              "nameLocation": "1841:8:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "1824:32:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 7987,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1824:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783430",
                "id": 7988,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1852:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_64_by_1",
                  "typeString": "int_const 64"
                },
                "value": "0x40"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 7992,
              "mutability": "constant",
              "name": "ThreeWords",
              "nameLocation": "1875:10:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "1858:34:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 7990,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1858:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783630",
                "id": 7991,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1888:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_96_by_1",
                  "typeString": "int_const 96"
                },
                "value": "0x60"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 7995,
              "mutability": "constant",
              "name": "FreeMemoryPointerSlot",
              "nameLocation": "1912:21:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "1895:45:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 7993,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1895:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783430",
                "id": 7994,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1936:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_64_by_1",
                  "typeString": "int_const 64"
                },
                "value": "0x40"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 7998,
              "mutability": "constant",
              "name": "ZeroSlot",
              "nameLocation": "1959:8:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "1942:32:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 7996,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1942:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783630",
                "id": 7997,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "1970:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_96_by_1",
                  "typeString": "int_const 96"
                },
                "value": "0x60"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8001,
              "mutability": "constant",
              "name": "DefaultFreeMemoryPointer",
              "nameLocation": "1993:24:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "1976:48:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 7999,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1976:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783830",
                "id": 8000,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2020:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_128_by_1",
                  "typeString": "int_const 128"
                },
                "value": "0x80"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8004,
              "mutability": "constant",
              "name": "Slot0x80",
              "nameLocation": "2044:8:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "2027:32:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8002,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2027:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783830",
                "id": 8003,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2055:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_128_by_1",
                  "typeString": "int_const 128"
                },
                "value": "0x80"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8007,
              "mutability": "constant",
              "name": "Slot0xA0",
              "nameLocation": "2078:8:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "2061:32:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8005,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2061:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786130",
                "id": 8006,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2089:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_160_by_1",
                  "typeString": "int_const 160"
                },
                "value": "0xa0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8010,
              "mutability": "constant",
              "name": "Slot0xC0",
              "nameLocation": "2112:8:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "2095:32:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8008,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2095:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786330",
                "id": 8009,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2123:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_192_by_1",
                  "typeString": "int_const 192"
                },
                "value": "0xc0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8014,
              "mutability": "constant",
              "name": "ERC20_transferFrom_signature",
              "nameLocation": "2215:28:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "2198:122:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8011,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2198:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307832336238373264643030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 8012,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2252:66:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_16156842317565293874272834530371880720966471053262404558597773956279093428224_by_1",
                      "typeString": "int_const 1615...(69 digits omitted)...8224"
                    },
                    "value": "0x23b872dd00000000000000000000000000000000000000000000000000000000"
                  }
                ],
                "id": 8013,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "2246:74:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_16156842317565293874272834530371880720966471053262404558597773956279093428224_by_1",
                  "typeString": "int_const 1615...(69 digits omitted)...8224"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8017,
              "mutability": "constant",
              "name": "ERC20_transferFrom_sig_ptr",
              "nameLocation": "2339:26:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "2322:49:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8015,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2322:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "307830",
                "id": 8016,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2368:3:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_0_by_1",
                  "typeString": "int_const 0"
                },
                "value": "0x0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8020,
              "mutability": "constant",
              "name": "ERC20_transferFrom_from_ptr",
              "nameLocation": "2390:27:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "2373:51:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8018,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2373:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783034",
                "id": 8019,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2420:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_4_by_1",
                  "typeString": "int_const 4"
                },
                "value": "0x04"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8023,
              "mutability": "constant",
              "name": "ERC20_transferFrom_to_ptr",
              "nameLocation": "2443:25:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "2426:49:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8021,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2426:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783234",
                "id": 8022,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2471:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_36_by_1",
                  "typeString": "int_const 36"
                },
                "value": "0x24"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8026,
              "mutability": "constant",
              "name": "ERC20_transferFrom_amount_ptr",
              "nameLocation": "2494:29:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "2477:53:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8024,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2477:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783434",
                "id": 8025,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2526:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_68_by_1",
                  "typeString": "int_const 68"
                },
                "value": "0x44"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8029,
              "mutability": "constant",
              "name": "ERC20_transferFrom_length",
              "nameLocation": "2549:25:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "2532:49:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8027,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2532:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783634",
                "id": 8028,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2577:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_100_by_1",
                  "typeString": "int_const 100"
                },
                "value": "0x64"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8033,
              "mutability": "constant",
              "name": "ERC1155_safeTransferFrom_signature",
              "nameLocation": "2720:34:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "2703:128:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8030,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2703:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307866323432343332613030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 8031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2763:66:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_109576784812748834340197573905731726730118698833493337707389013487240318287872_by_1",
                      "typeString": "int_const 1095...(70 digits omitted)...7872"
                    },
                    "value": "0xf242432a00000000000000000000000000000000000000000000000000000000"
                  }
                ],
                "id": 8032,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "2757:74:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_109576784812748834340197573905731726730118698833493337707389013487240318287872_by_1",
                  "typeString": "int_const 1095...(70 digits omitted)...7872"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8036,
              "mutability": "constant",
              "name": "ERC1155_safeTransferFrom_sig_ptr",
              "nameLocation": "2850:32:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "2833:55:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8034,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2833:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "307830",
                "id": 8035,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2885:3:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_0_by_1",
                  "typeString": "int_const 0"
                },
                "value": "0x0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8039,
              "mutability": "constant",
              "name": "ERC1155_safeTransferFrom_from_ptr",
              "nameLocation": "2907:33:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "2890:57:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8037,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2890:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783034",
                "id": 8038,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "2943:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_4_by_1",
                  "typeString": "int_const 4"
                },
                "value": "0x04"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8042,
              "mutability": "constant",
              "name": "ERC1155_safeTransferFrom_to_ptr",
              "nameLocation": "2966:31:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "2949:55:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8040,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "2949:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783234",
                "id": 8041,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3000:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_36_by_1",
                  "typeString": "int_const 36"
                },
                "value": "0x24"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8045,
              "mutability": "constant",
              "name": "ERC1155_safeTransferFrom_id_ptr",
              "nameLocation": "3023:31:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "3006:55:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8043,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3006:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783434",
                "id": 8044,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3057:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_68_by_1",
                  "typeString": "int_const 68"
                },
                "value": "0x44"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8048,
              "mutability": "constant",
              "name": "ERC1155_safeTransferFrom_amount_ptr",
              "nameLocation": "3080:35:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "3063:59:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8046,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3063:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783634",
                "id": 8047,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3118:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_100_by_1",
                  "typeString": "int_const 100"
                },
                "value": "0x64"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8051,
              "mutability": "constant",
              "name": "ERC1155_safeTransferFrom_data_offset_ptr",
              "nameLocation": "3141:40:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "3124:64:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8049,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3124:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783834",
                "id": 8050,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3184:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_132_by_1",
                  "typeString": "int_const 132"
                },
                "value": "0x84"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8054,
              "mutability": "constant",
              "name": "ERC1155_safeTransferFrom_data_length_ptr",
              "nameLocation": "3207:40:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "3190:64:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8052,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3190:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786134",
                "id": 8053,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3250:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_164_by_1",
                  "typeString": "int_const 164"
                },
                "value": "0xa4"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8057,
              "mutability": "constant",
              "name": "ERC1155_safeTransferFrom_length",
              "nameLocation": "3273:31:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "3256:55:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8055,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3256:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786334",
                "id": 8056,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3307:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_196_by_1",
                  "typeString": "int_const 196"
                },
                "value": "0xc4"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8060,
              "mutability": "constant",
              "name": "ERC1155_safeTransferFrom_data_length_offset",
              "nameLocation": "3351:43:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "3334:67:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8058,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3334:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786130",
                "id": 8059,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3397:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_160_by_1",
                  "typeString": "int_const 160"
                },
                "value": "0xa0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8064,
              "mutability": "constant",
              "name": "ERC1155_safeBatchTransferFrom_signature",
              "nameLocation": "3528:39:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "3511:133:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8061,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3511:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307832656232633264363030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 8062,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3576:66:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_21122234520580670415450416725259358303340482176740656504059893016123987197952_by_1",
                      "typeString": "int_const 2112...(69 digits omitted)...7952"
                    },
                    "value": "0x2eb2c2d600000000000000000000000000000000000000000000000000000000"
                  }
                ],
                "id": 8063,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "3570:74:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_21122234520580670415450416725259358303340482176740656504059893016123987197952_by_1",
                  "typeString": "int_const 2112...(69 digits omitted)...7952"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8073,
              "mutability": "constant",
              "name": "ERC1155_safeBatchTransferFrom_selector",
              "nameLocation": "3663:38:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "3647:119:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes4",
                "typeString": "bytes4"
              },
              "typeName": {
                "id": 8065,
                "name": "bytes4",
                "nodeType": "ElementaryTypeName",
                "src": "3647:6:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes4",
                  "typeString": "bytes4"
                }
              },
              "value": {
                "arguments": [
                  {
                    "arguments": [
                      {
                        "id": 8070,
                        "name": "ERC1155_safeBatchTransferFrom_signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8064,
                        "src": "3724:39:39",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 8069,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3716:7:39",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_bytes32_$",
                        "typeString": "type(bytes32)"
                      },
                      "typeName": {
                        "id": 8068,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3716:7:39",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 8071,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3716:48:39",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "expression": {
                  "argumentTypes": [
                    {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  ],
                  "id": 8067,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "nodeType": "ElementaryTypeNameExpression",
                  "src": "3704:6:39",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_bytes4_$",
                    "typeString": "type(bytes4)"
                  },
                  "typeName": {
                    "id": 8066,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "3704:6:39",
                    "typeDescriptions": {}
                  }
                },
                "id": 8072,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "typeConversion",
                "lValueRequested": false,
                "names": [],
                "nodeType": "FunctionCall",
                "src": "3704:62:39",
                "tryCall": false,
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes4",
                  "typeString": "bytes4"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8076,
              "mutability": "constant",
              "name": "ERC721_transferFrom_signature",
              "nameLocation": "3786:29:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "3769:77:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8074,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3769:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "id": 8075,
                "name": "ERC20_transferFrom_signature",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": 8014,
                "src": "3818:28:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8079,
              "mutability": "constant",
              "name": "ERC721_transferFrom_sig_ptr",
              "nameLocation": "3865:27:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "3848:50:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8077,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3848:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "307830",
                "id": 8078,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3895:3:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_0_by_1",
                  "typeString": "int_const 0"
                },
                "value": "0x0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8082,
              "mutability": "constant",
              "name": "ERC721_transferFrom_from_ptr",
              "nameLocation": "3917:28:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "3900:52:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8080,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3900:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783034",
                "id": 8081,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "3948:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_4_by_1",
                  "typeString": "int_const 4"
                },
                "value": "0x04"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8085,
              "mutability": "constant",
              "name": "ERC721_transferFrom_to_ptr",
              "nameLocation": "3971:26:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "3954:50:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8083,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "3954:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783234",
                "id": 8084,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4000:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_36_by_1",
                  "typeString": "int_const 36"
                },
                "value": "0x24"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8088,
              "mutability": "constant",
              "name": "ERC721_transferFrom_id_ptr",
              "nameLocation": "4023:26:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "4006:50:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8086,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4006:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783434",
                "id": 8087,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4052:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_68_by_1",
                  "typeString": "int_const 68"
                },
                "value": "0x44"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8091,
              "mutability": "constant",
              "name": "ERC721_transferFrom_length",
              "nameLocation": "4075:26:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "4058:50:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8089,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4058:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783634",
                "id": 8090,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4104:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_100_by_1",
                  "typeString": "int_const 100"
                },
                "value": "0x64"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8095,
              "mutability": "constant",
              "name": "NoContract_error_signature",
              "nameLocation": "4199:26:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "4182:120:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8092,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4182:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307835663135643637323030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 8093,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4234:66:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_43008304450922786202210492095377626797441506865803949691986084171659119427584_by_1",
                      "typeString": "int_const 4300...(69 digits omitted)...7584"
                    },
                    "value": "0x5f15d67200000000000000000000000000000000000000000000000000000000"
                  }
                ],
                "id": 8094,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "4228:74:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_43008304450922786202210492095377626797441506865803949691986084171659119427584_by_1",
                  "typeString": "int_const 4300...(69 digits omitted)...7584"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8098,
              "mutability": "constant",
              "name": "NoContract_error_sig_ptr",
              "nameLocation": "4321:24:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "4304:47:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8096,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4304:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "307830",
                "id": 8097,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4348:3:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_0_by_1",
                  "typeString": "int_const 0"
                },
                "value": "0x0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8101,
              "mutability": "constant",
              "name": "NoContract_error_token_ptr",
              "nameLocation": "4370:26:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "4353:49:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8099,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4353:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "307834",
                "id": 8100,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4399:3:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_4_by_1",
                  "typeString": "int_const 4"
                },
                "value": "0x4"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8104,
              "mutability": "constant",
              "name": "NoContract_error_length",
              "nameLocation": "4421:23:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "4404:47:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8102,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4404:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783234",
                "id": 8103,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4447:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_36_by_1",
                  "typeString": "int_const 36"
                },
                "value": "0x24"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8108,
              "mutability": "constant",
              "name": "TokenTransferGenericFailure_error_signature",
              "nameLocation": "4598:43:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "4581:137:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8105,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4581:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307866343836626338373030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 8106,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4650:66:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_110602393728903298954583666965654358082204038726121260616145960492056870649856_by_1",
                      "typeString": "int_const 1106...(70 digits omitted)...9856"
                    },
                    "value": "0xf486bc8700000000000000000000000000000000000000000000000000000000"
                  }
                ],
                "id": 8107,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "4644:74:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_110602393728903298954583666965654358082204038726121260616145960492056870649856_by_1",
                  "typeString": "int_const 1106...(70 digits omitted)...9856"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8111,
              "mutability": "constant",
              "name": "TokenTransferGenericFailure_error_sig_ptr",
              "nameLocation": "4737:41:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "4720:64:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8109,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4720:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "307830",
                "id": 8110,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4781:3:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_0_by_1",
                  "typeString": "int_const 0"
                },
                "value": "0x0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8114,
              "mutability": "constant",
              "name": "TokenTransferGenericFailure_error_token_ptr",
              "nameLocation": "4803:43:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "4786:66:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8112,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4786:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "307834",
                "id": 8113,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4849:3:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_4_by_1",
                  "typeString": "int_const 4"
                },
                "value": "0x4"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8117,
              "mutability": "constant",
              "name": "TokenTransferGenericFailure_error_from_ptr",
              "nameLocation": "4871:42:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "4854:66:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8115,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4854:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783234",
                "id": 8116,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4916:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_36_by_1",
                  "typeString": "int_const 36"
                },
                "value": "0x24"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8120,
              "mutability": "constant",
              "name": "TokenTransferGenericFailure_error_to_ptr",
              "nameLocation": "4939:40:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "4922:64:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8118,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4922:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783434",
                "id": 8119,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "4982:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_68_by_1",
                  "typeString": "int_const 68"
                },
                "value": "0x44"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8123,
              "mutability": "constant",
              "name": "TokenTransferGenericFailure_error_id_ptr",
              "nameLocation": "5005:40:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "4988:64:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8121,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "4988:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783634",
                "id": 8122,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "5048:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_100_by_1",
                  "typeString": "int_const 100"
                },
                "value": "0x64"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8126,
              "mutability": "constant",
              "name": "TokenTransferGenericFailure_error_amount_ptr",
              "nameLocation": "5071:44:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "5054:68:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8124,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "5054:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783834",
                "id": 8125,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "5118:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_132_by_1",
                  "typeString": "int_const 132"
                },
                "value": "0x84"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8129,
              "mutability": "constant",
              "name": "TokenTransferGenericFailure_error_length",
              "nameLocation": "5163:40:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "5146:64:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8127,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "5146:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786134",
                "id": 8128,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "5206:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_164_by_1",
                  "typeString": "int_const 164"
                },
                "value": "0xa4"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8133,
              "mutability": "constant",
              "name": "ERC1155BatchTransferGenericFailure_error_signature",
              "nameLocation": "5230:50:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "5213:144:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8130,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "5213:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307861666334343565323030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 8131,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5289:66:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_79501532840214056618875980936328268319366216792329069890481479576950077915136_by_1",
                      "typeString": "int_const 7950...(69 digits omitted)...5136"
                    },
                    "value": "0xafc445e200000000000000000000000000000000000000000000000000000000"
                  }
                ],
                "id": 8132,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "5283:74:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_79501532840214056618875980936328268319366216792329069890481479576950077915136_by_1",
                  "typeString": "int_const 7950...(69 digits omitted)...5136"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8136,
              "mutability": "constant",
              "name": "ERC1155BatchTransferGenericFailure_token_ptr",
              "nameLocation": "5376:44:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "5359:68:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8134,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "5359:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783034",
                "id": 8135,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "5423:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_4_by_1",
                  "typeString": "int_const 4"
                },
                "value": "0x04"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8140,
              "mutability": "constant",
              "name": "BadReturnValueFromERC20OnTransfer_error_signature",
              "nameLocation": "5556:49:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "5539:143:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8137,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "5539:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307839383839313932333030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 8138,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5614:66:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_68993784519787932800265262788752310095870803544120403744274516456007463337984_by_1",
                      "typeString": "int_const 6899...(69 digits omitted)...7984"
                    },
                    "value": "0x9889192300000000000000000000000000000000000000000000000000000000"
                  }
                ],
                "id": 8139,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "5608:74:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_68993784519787932800265262788752310095870803544120403744274516456007463337984_by_1",
                  "typeString": "int_const 6899...(69 digits omitted)...7984"
                }
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8143,
              "mutability": "constant",
              "name": "BadReturnValueFromERC20OnTransfer_error_sig_ptr",
              "nameLocation": "5701:47:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "5684:70:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8141,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "5684:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "307830",
                "id": 8142,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "5751:3:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_0_by_1",
                  "typeString": "int_const 0"
                },
                "value": "0x0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8146,
              "mutability": "constant",
              "name": "BadReturnValueFromERC20OnTransfer_error_token_ptr",
              "nameLocation": "5773:49:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "5756:72:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8144,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "5756:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "307834",
                "id": 8145,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "5825:3:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_4_by_1",
                  "typeString": "int_const 4"
                },
                "value": "0x4"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8149,
              "mutability": "constant",
              "name": "BadReturnValueFromERC20OnTransfer_error_from_ptr",
              "nameLocation": "5847:48:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "5830:72:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8147,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "5830:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783234",
                "id": 8148,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "5898:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_36_by_1",
                  "typeString": "int_const 36"
                },
                "value": "0x24"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8152,
              "mutability": "constant",
              "name": "BadReturnValueFromERC20OnTransfer_error_to_ptr",
              "nameLocation": "5921:46:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "5904:70:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8150,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "5904:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783434",
                "id": 8151,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "5970:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_68_by_1",
                  "typeString": "int_const 68"
                },
                "value": "0x44"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8155,
              "mutability": "constant",
              "name": "BadReturnValueFromERC20OnTransfer_error_amount_ptr",
              "nameLocation": "5993:50:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "5976:74:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8153,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "5976:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783634",
                "id": 8154,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6046:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_100_by_1",
                  "typeString": "int_const 100"
                },
                "value": "0x64"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8158,
              "mutability": "constant",
              "name": "BadReturnValueFromERC20OnTransfer_error_length",
              "nameLocation": "6091:46:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "6074:70:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8156,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6074:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783834",
                "id": 8157,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6140:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_132_by_1",
                  "typeString": "int_const 132"
                },
                "value": "0x84"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8161,
              "mutability": "constant",
              "name": "ExtraGasBuffer",
              "nameLocation": "6164:14:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "6147:38:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8159,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6147:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 8160,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6181:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8164,
              "mutability": "constant",
              "name": "CostPerWord",
              "nameLocation": "6204:11:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "6187:32:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8162,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6187:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "33",
                "id": 8163,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6218:1:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_3_by_1",
                  "typeString": "int_const 3"
                },
                "value": "3"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8167,
              "mutability": "constant",
              "name": "MemoryExpansionCoefficient",
              "nameLocation": "6238:26:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "6221:51:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8165,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6221:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078323030",
                "id": 8166,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6267:5:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_512_by_1",
                  "typeString": "int_const 512"
                },
                "value": "0x200"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8170,
              "mutability": "constant",
              "name": "BatchTransfer1155Params_ptr",
              "nameLocation": "6398:27:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "6381:51:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8168,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6381:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783234",
                "id": 8169,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6428:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_36_by_1",
                  "typeString": "int_const 36"
                },
                "value": "0x24"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8173,
              "mutability": "constant",
              "name": "BatchTransfer1155Params_ids_head_ptr",
              "nameLocation": "6451:36:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "6434:60:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8171,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6434:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783434",
                "id": 8172,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6490:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_68_by_1",
                  "typeString": "int_const 68"
                },
                "value": "0x44"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8176,
              "mutability": "constant",
              "name": "BatchTransfer1155Params_amounts_head_ptr",
              "nameLocation": "6513:40:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "6496:64:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8174,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6496:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783834",
                "id": 8175,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6556:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_132_by_1",
                  "typeString": "int_const 132"
                },
                "value": "0x84"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8179,
              "mutability": "constant",
              "name": "BatchTransfer1155Params_data_head_ptr",
              "nameLocation": "6579:37:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "6562:61:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8177,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6562:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786134",
                "id": 8178,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6619:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_164_by_1",
                  "typeString": "int_const 164"
                },
                "value": "0xa4"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8182,
              "mutability": "constant",
              "name": "BatchTransfer1155Params_data_length_basePtr",
              "nameLocation": "6642:43:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "6625:68:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8180,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6625:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "3078313034",
                "id": 8181,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6688:5:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_260_by_1",
                  "typeString": "int_const 260"
                },
                "value": "0x104"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8185,
              "mutability": "constant",
              "name": "BatchTransfer1155Params_ids_length_ptr",
              "nameLocation": "6713:38:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "6696:62:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8183,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6696:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786334",
                "id": 8184,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6754:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_196_by_1",
                  "typeString": "int_const 196"
                },
                "value": "0xc4"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8188,
              "mutability": "constant",
              "name": "BatchTransfer1155Params_ids_length_offset",
              "nameLocation": "6778:41:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "6761:65:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8186,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6761:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786130",
                "id": 8187,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6822:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_160_by_1",
                  "typeString": "int_const 160"
                },
                "value": "0xa0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8191,
              "mutability": "constant",
              "name": "BatchTransfer1155Params_amounts_length_baseOffset",
              "nameLocation": "6845:49:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "6828:73:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8189,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6828:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786330",
                "id": 8190,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6897:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_192_by_1",
                  "typeString": "int_const 192"
                },
                "value": "0xc0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8194,
              "mutability": "constant",
              "name": "BatchTransfer1155Params_data_length_baseOffset",
              "nameLocation": "6920:46:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "6903:70:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8192,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6903:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786530",
                "id": 8193,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "6969:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_224_by_1",
                  "typeString": "int_const 224"
                },
                "value": "0xe0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8197,
              "mutability": "constant",
              "name": "ConduitBatch1155Transfer_usable_head_size",
              "nameLocation": "6993:41:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "6976:65:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8195,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "6976:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783830",
                "id": 8196,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7037:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_128_by_1",
                  "typeString": "int_const 128"
                },
                "value": "0x80"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8200,
              "mutability": "constant",
              "name": "ConduitBatch1155Transfer_from_offset",
              "nameLocation": "7061:36:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "7044:60:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8198,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7044:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783230",
                "id": 8199,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7100:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_32_by_1",
                  "typeString": "int_const 32"
                },
                "value": "0x20"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8203,
              "mutability": "constant",
              "name": "ConduitBatch1155Transfer_ids_head_offset",
              "nameLocation": "7123:40:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "7106:64:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8201,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7106:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783630",
                "id": 8202,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7166:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_96_by_1",
                  "typeString": "int_const 96"
                },
                "value": "0x60"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8206,
              "mutability": "constant",
              "name": "ConduitBatch1155Transfer_amounts_head_offset",
              "nameLocation": "7189:44:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "7172:68:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8204,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7172:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783830",
                "id": 8205,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7236:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_128_by_1",
                  "typeString": "int_const 128"
                },
                "value": "0x80"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8209,
              "mutability": "constant",
              "name": "ConduitBatch1155Transfer_ids_length_offset",
              "nameLocation": "7259:42:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "7242:66:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8207,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7242:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786130",
                "id": 8208,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7304:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_160_by_1",
                  "typeString": "int_const 160"
                },
                "value": "0xa0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8212,
              "mutability": "constant",
              "name": "ConduitBatch1155Transfer_amounts_length_baseOffset",
              "nameLocation": "7327:50:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "7310:74:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8210,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7310:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786330",
                "id": 8211,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7380:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_192_by_1",
                  "typeString": "int_const 192"
                },
                "value": "0xc0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8215,
              "mutability": "constant",
              "name": "ConduitBatch1155Transfer_calldata_baseSize",
              "nameLocation": "7403:42:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "7386:66:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8213,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7386:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30786330",
                "id": 8214,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7448:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_192_by_1",
                  "typeString": "int_const 192"
                },
                "value": "0xc0"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8218,
              "mutability": "constant",
              "name": "Invalid1155BatchTransferEncoding_ptr",
              "nameLocation": "7472:36:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "7455:60:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8216,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7455:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783030",
                "id": 8217,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7511:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_0_by_1",
                  "typeString": "int_const 0"
                },
                "value": "0x00"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8221,
              "mutability": "constant",
              "name": "Invalid1155BatchTransferEncoding_length",
              "nameLocation": "7534:39:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "7517:63:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8219,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7517:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "hexValue": "30783034",
                "id": 8220,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "kind": "number",
                "lValueRequested": false,
                "nodeType": "Literal",
                "src": "7576:4:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_4_by_1",
                  "typeString": "int_const 4"
                },
                "value": "0x04"
              },
              "visibility": "internal"
            },
            {
              "constant": true,
              "id": 8225,
              "mutability": "constant",
              "name": "Invalid1155BatchTransferEncoding_selector",
              "nameLocation": "7599:41:39",
              "nodeType": "VariableDeclaration",
              "scope": 8226,
              "src": "7582:135:39",
              "stateVariable": false,
              "storageLocation": "default",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              },
              "typeName": {
                "id": 8222,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "7582:7:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "value": {
                "components": [
                  {
                    "hexValue": "307865626132303834633030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030",
                    "id": 8223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7649:66:39",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_106579805904488420557082595712554375541441034432625840267987479138441579462656_by_1",
                      "typeString": "int_const 1065...(70 digits omitted)...2656"
                    },
                    "value": "0xeba2084c00000000000000000000000000000000000000000000000000000000"
                  }
                ],
                "id": 8224,
                "isConstant": false,
                "isInlineArray": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "TupleExpression",
                "src": "7643:74:39",
                "typeDescriptions": {
                  "typeIdentifier": "t_rational_106579805904488420557082595712554375541441034432625840267987479138441579462656_by_1",
                  "typeString": "int_const 1065...(70 digits omitted)...2656"
                }
              },
              "visibility": "internal"
            }
          ],
          "src": "32:7687:39"
        },
        "id": 39
      },
      "seaport/contracts/lib/Verifiers.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/Verifiers.sol",
          "exportedSymbols": {
            "Assertions": [
              2594
            ],
            "OrderStatus": [
              4040
            ],
            "SignatureVerification": [
              7917
            ],
            "Verifiers": [
              8379
            ]
          },
          "id": 8380,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8227,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:40"
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationStructs.sol",
              "file": "./ConsiderationStructs.sol",
              "id": 8229,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8380,
              "sourceUnit": 4076,
              "src": "57:57:40",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8228,
                    "name": "OrderStatus",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4040,
                    "src": "66:11:40",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/Assertions.sol",
              "file": "./Assertions.sol",
              "id": 8231,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8380,
              "sourceUnit": 2595,
              "src": "116:46:40",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8230,
                    "name": "Assertions",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2594,
                    "src": "125:10:40",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/SignatureVerification.sol",
              "file": "./SignatureVerification.sol",
              "id": 8233,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8380,
              "sourceUnit": 7918,
              "src": "164:68:40",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8232,
                    "name": "SignatureVerification",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7917,
                    "src": "173:21:40",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 8235,
                    "name": "Assertions",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2594,
                    "src": "370:10:40"
                  },
                  "id": 8236,
                  "nodeType": "InheritanceSpecifier",
                  "src": "370:10:40"
                },
                {
                  "baseName": {
                    "id": 8237,
                    "name": "SignatureVerification",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 7917,
                    "src": "382:21:40"
                  },
                  "id": 8238,
                  "nodeType": "InheritanceSpecifier",
                  "src": "382:21:40"
                }
              ],
              "canonicalName": "Verifiers",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 8234,
                "nodeType": "StructuredDocumentation",
                "src": "234:113:40",
                "text": " @title Verifiers\n @author 0age\n @notice Verifiers contains functions for performing verifications."
              },
              "fullyImplemented": true,
              "id": 8379,
              "linearizedBaseContracts": [
                8379,
                7917,
                5505,
                2227,
                2594,
                2281,
                5561,
                7768,
                2209,
                5465,
                3384,
                1924
              ],
              "name": "Verifiers",
              "nameLocation": "357:9:40",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 8247,
                    "nodeType": "Block",
                    "src": "832:2:40",
                    "statements": []
                  },
                  "documentation": {
                    "id": 8239,
                    "nodeType": "StructuredDocumentation",
                    "src": "410:348:40",
                    "text": " @dev Derive and set hashes, reference chainId, and associated domain\n      separator during deployment.\n @param conduitController A contract that deploys conduits, or proxies\n                          that may optionally be used to transfer approved\n                          ERC20/721/1155 tokens."
                  },
                  "id": 8248,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [
                    {
                      "arguments": [
                        {
                          "id": 8244,
                          "name": "conduitController",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8241,
                          "src": "813:17:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "id": 8245,
                      "kind": "baseConstructorSpecifier",
                      "modifierName": {
                        "id": 8243,
                        "name": "Assertions",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 2594,
                        "src": "802:10:40"
                      },
                      "nodeType": "ModifierInvocation",
                      "src": "802:29:40"
                    }
                  ],
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8242,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8241,
                        "mutability": "mutable",
                        "name": "conduitController",
                        "nameLocation": "783:17:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8248,
                        "src": "775:25:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8240,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "775:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "774:27:40"
                  },
                  "returnParameters": {
                    "id": 8246,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "832:0:40"
                  },
                  "scope": 8379,
                  "src": "763:71:40",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 8283,
                    "nodeType": "Block",
                    "src": "1481:483:40",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 8268,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8260,
                              "name": "startTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8251,
                              "src": "1574:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "expression": {
                                "id": 8261,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "1586:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 8262,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "src": "1586:15:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1574:27:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8267,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 8264,
                              "name": "endTime",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8253,
                              "src": "1605:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "expression": {
                                "id": 8265,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "1616:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 8266,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "src": "1616:15:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1605:26:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1574:57:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8278,
                        "nodeType": "IfStatement",
                        "src": "1570:314:40",
                        "trueBody": {
                          "id": 8277,
                          "nodeType": "Block",
                          "src": "1633:251:40",
                          "statements": [
                            {
                              "condition": {
                                "id": 8269,
                                "name": "revertOnInvalid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8255,
                                "src": "1724:15:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 8274,
                              "nodeType": "IfStatement",
                              "src": "1720:74:40",
                              "trueBody": {
                                "id": 8273,
                                "nodeType": "Block",
                                "src": "1741:53:40",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [],
                                      "expression": {
                                        "argumentTypes": [],
                                        "id": 8270,
                                        "name": "InvalidTime",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1859,
                                        "src": "1766:11:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$__$returns$__$",
                                          "typeString": "function () pure"
                                        }
                                      },
                                      "id": 8271,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1766:13:40",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 8272,
                                    "nodeType": "RevertStatement",
                                    "src": "1759:20:40"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "hexValue": "66616c7365",
                                "id": 8275,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1868:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 8259,
                              "id": 8276,
                              "nodeType": "Return",
                              "src": "1861:12:40"
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 8281,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8279,
                            "name": "valid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8258,
                            "src": "1945:5:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 8280,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1953:4:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1945:12:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8282,
                        "nodeType": "ExpressionStatement",
                        "src": "1945:12:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8249,
                    "nodeType": "StructuredDocumentation",
                    "src": "840:492:40",
                    "text": " @dev Internal view function to ensure that the current time falls within\n      an order's valid timespan.\n @param startTime       The time at which the order becomes active.\n @param endTime         The time at which the order becomes inactive.\n @param revertOnInvalid A boolean indicating whether to revert if the\n                        order is not active.\n @return valid A boolean indicating whether the order is active."
                  },
                  "id": 8284,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_verifyTime",
                  "nameLocation": "1346:11:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8256,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8251,
                        "mutability": "mutable",
                        "name": "startTime",
                        "nameLocation": "1375:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8284,
                        "src": "1367:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8250,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1367:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8253,
                        "mutability": "mutable",
                        "name": "endTime",
                        "nameLocation": "1402:7:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8284,
                        "src": "1394:15:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8252,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1394:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8255,
                        "mutability": "mutable",
                        "name": "revertOnInvalid",
                        "nameLocation": "1424:15:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8284,
                        "src": "1419:20:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8254,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1419:4:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1357:88:40"
                  },
                  "returnParameters": {
                    "id": 8259,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8258,
                        "mutability": "mutable",
                        "name": "valid",
                        "nameLocation": "1474:5:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8284,
                        "src": "1469:10:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8257,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "1469:4:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1468:12:40"
                  },
                  "scope": 8379,
                  "src": "1337:627:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8315,
                    "nodeType": "Block",
                    "src": "2769:439:40",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 8297,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 8294,
                            "name": "offerer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8287,
                            "src": "2852:7:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "expression": {
                              "id": 8295,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2863:3:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8296,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "2863:10:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2852:21:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8300,
                        "nodeType": "IfStatement",
                        "src": "2848:58:40",
                        "trueBody": {
                          "id": 8299,
                          "nodeType": "Block",
                          "src": "2875:31:40",
                          "statements": [
                            {
                              "functionReturnParameters": 8293,
                              "id": 8298,
                              "nodeType": "Return",
                              "src": "2889:7:40"
                            }
                          ]
                        }
                      },
                      {
                        "assignments": [
                          8302
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8302,
                            "mutability": "mutable",
                            "name": "digest",
                            "nameLocation": "3004:6:40",
                            "nodeType": "VariableDeclaration",
                            "scope": 8315,
                            "src": "2996:14:40",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            "typeName": {
                              "id": 8301,
                              "name": "bytes32",
                              "nodeType": "ElementaryTypeName",
                              "src": "2996:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8308,
                        "initialValue": {
                          "arguments": [
                            {
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "id": 8304,
                                "name": "_domainSeparator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5421,
                                "src": "3033:16:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$",
                                  "typeString": "function () view returns (bytes32)"
                                }
                              },
                              "id": 8305,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3033:18:40",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 8306,
                              "name": "orderHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8289,
                              "src": "3053:9:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 8303,
                            "name": "_deriveEIP712Digest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5464,
                            "src": "3013:19:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$",
                              "typeString": "function (bytes32,bytes32) pure returns (bytes32)"
                            }
                          },
                          "id": 8307,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3013:50:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2996:67:40"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8310,
                              "name": "offerer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8287,
                              "src": "3174:7:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 8311,
                              "name": "digest",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8302,
                              "src": "3183:6:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "id": 8312,
                              "name": "signature",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8291,
                              "src": "3191:9:40",
                              "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": 8309,
                            "name": "_assertValidSignature",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7871,
                            "src": "3152:21:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (address,bytes32,bytes memory) view"
                            }
                          },
                          "id": 8313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3152:49:40",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8314,
                        "nodeType": "ExpressionStatement",
                        "src": "3152:49:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8285,
                    "nodeType": "StructuredDocumentation",
                    "src": "1970:664:40",
                    "text": " @dev Internal view function to verify the signature of an order. An\n      ERC-1271 fallback will be attempted if either the signature length\n      is not 32 or 33 bytes or if the recovered signer does not match the\n      supplied offerer. Note that in cases where a 32 or 33 byte signature\n      is supplied, only standard ECDSA signatures that recover to a\n      non-zero address are supported.\n @param offerer   The offerer for the order.\n @param orderHash The order hash.\n @param signature A signature from the offerer indicating that the order\n                  has been approved."
                  },
                  "id": 8316,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_verifySignature",
                  "nameLocation": "2648:16:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8292,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8287,
                        "mutability": "mutable",
                        "name": "offerer",
                        "nameLocation": "2682:7:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8316,
                        "src": "2674:15:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8286,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2674:7:40",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8289,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "2707:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8316,
                        "src": "2699:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 8288,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "2699:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8291,
                        "mutability": "mutable",
                        "name": "signature",
                        "nameLocation": "2739:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8316,
                        "src": "2726:22:40",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes"
                        },
                        "typeName": {
                          "id": 8290,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "2726:5:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "2664:90:40"
                  },
                  "returnParameters": {
                    "id": 8293,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "2769:0:40"
                  },
                  "scope": 8379,
                  "src": "2639:569:40",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8377,
                    "nodeType": "Block",
                    "src": "4188:1258:40",
                    "statements": [
                      {
                        "condition": {
                          "expression": {
                            "id": 8331,
                            "name": "orderStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8322,
                            "src": "4259:11:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                              "typeString": "struct OrderStatus memory"
                            }
                          },
                          "id": 8332,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "isCancelled",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4035,
                          "src": "4259:23:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8343,
                        "nodeType": "IfStatement",
                        "src": "4255:301:40",
                        "trueBody": {
                          "id": 8342,
                          "nodeType": "Block",
                          "src": "4284:272:40",
                          "statements": [
                            {
                              "condition": {
                                "id": 8333,
                                "name": "revertOnInvalid",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8326,
                                "src": "4375:15:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "id": 8339,
                              "nodeType": "IfStatement",
                              "src": "4371:88:40",
                              "trueBody": {
                                "id": 8338,
                                "nodeType": "Block",
                                "src": "4392:67:40",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 8335,
                                          "name": "orderHash",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8319,
                                          "src": "4434:9:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 8334,
                                        "name": "OrderIsCancelled",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1901,
                                        "src": "4417:16:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                          "typeString": "function (bytes32) pure"
                                        }
                                      },
                                      "id": 8336,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4417:27:40",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 8337,
                                    "nodeType": "RevertStatement",
                                    "src": "4410:34:40"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "hexValue": "66616c7365",
                                "id": 8340,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4540:5:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 8330,
                              "id": 8341,
                              "nodeType": "Return",
                              "src": "4533:12:40"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint120",
                            "typeString": "uint120"
                          },
                          "id": 8347,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 8344,
                              "name": "orderStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8322,
                              "src": "4620:11:40",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                                "typeString": "struct OrderStatus memory"
                              }
                            },
                            "id": 8345,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "numerator",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4037,
                            "src": "4620:21:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint120",
                              "typeString": "uint120"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "hexValue": "30",
                            "id": 8346,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4645:1:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4620:26:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8372,
                        "nodeType": "IfStatement",
                        "src": "4616:748:40",
                        "trueBody": {
                          "id": 8371,
                          "nodeType": "Block",
                          "src": "4648:716:40",
                          "statements": [
                            {
                              "condition": {
                                "id": 8348,
                                "name": "onlyAllowUnused",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8324,
                                "src": "4746:15:40",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint120",
                                    "typeString": "uint120"
                                  },
                                  "id": 8358,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 8354,
                                      "name": "orderStatus",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8322,
                                      "src": "5002:11:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                                        "typeString": "struct OrderStatus memory"
                                      }
                                    },
                                    "id": 8355,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "numerator",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4037,
                                    "src": "5002:21:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "expression": {
                                      "id": 8356,
                                      "name": "orderStatus",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8322,
                                      "src": "5027:11:40",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                                        "typeString": "struct OrderStatus memory"
                                      }
                                    },
                                    "id": 8357,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "denominator",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4039,
                                    "src": "5027:23:40",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint120",
                                      "typeString": "uint120"
                                    }
                                  },
                                  "src": "5002:48:40",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "id": 8369,
                                "nodeType": "IfStatement",
                                "src": "4998:356:40",
                                "trueBody": {
                                  "id": 8368,
                                  "nodeType": "Block",
                                  "src": "5052:302:40",
                                  "statements": [
                                    {
                                      "condition": {
                                        "id": 8359,
                                        "name": "revertOnInvalid",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8326,
                                        "src": "5151:15:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "id": 8365,
                                      "nodeType": "IfStatement",
                                      "src": "5147:98:40",
                                      "trueBody": {
                                        "id": 8364,
                                        "nodeType": "Block",
                                        "src": "5168:77:40",
                                        "statements": [
                                          {
                                            "errorCall": {
                                              "arguments": [
                                                {
                                                  "id": 8361,
                                                  "name": "orderHash",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 8319,
                                                  "src": "5216:9:40",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_bytes32",
                                                    "typeString": "bytes32"
                                                  }
                                                ],
                                                "id": 8360,
                                                "name": "OrderAlreadyFilled",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1856,
                                                "src": "5197:18:40",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                                  "typeString": "function (bytes32) pure"
                                                }
                                              },
                                              "id": 8362,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "5197:29:40",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_tuple$__$",
                                                "typeString": "tuple()"
                                              }
                                            },
                                            "id": 8363,
                                            "nodeType": "RevertStatement",
                                            "src": "5190:36:40"
                                          }
                                        ]
                                      }
                                    },
                                    {
                                      "expression": {
                                        "hexValue": "66616c7365",
                                        "id": 8366,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "bool",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5334:5:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "value": "false"
                                      },
                                      "functionReturnParameters": 8330,
                                      "id": 8367,
                                      "nodeType": "Return",
                                      "src": "5327:12:40"
                                    }
                                  ]
                                }
                              },
                              "id": 8370,
                              "nodeType": "IfStatement",
                              "src": "4742:612:40",
                              "trueBody": {
                                "id": 8353,
                                "nodeType": "Block",
                                "src": "4763:229:40",
                                "statements": [
                                  {
                                    "errorCall": {
                                      "arguments": [
                                        {
                                          "id": 8350,
                                          "name": "orderHash",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8319,
                                          "src": "4889:9:40",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 8349,
                                        "name": "OrderPartiallyFilled",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1906,
                                        "src": "4868:20:40",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                          "typeString": "function (bytes32) pure"
                                        }
                                      },
                                      "id": 8351,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4868:31:40",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 8352,
                                    "nodeType": "RevertStatement",
                                    "src": "4861:38:40"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      },
                      {
                        "expression": {
                          "id": 8375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 8373,
                            "name": "valid",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8329,
                            "src": "5427:5:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 8374,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5435:4:40",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "5427:12:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8376,
                        "nodeType": "ExpressionStatement",
                        "src": "5427:12:40"
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8317,
                    "nodeType": "StructuredDocumentation",
                    "src": "3214:773:40",
                    "text": " @dev Internal pure function to validate that a given order is fillable\n      and not cancelled based on the order status.\n @param orderHash       The order hash.\n @param orderStatus     The status of the order, including whether it has\n                        been cancelled and the fraction filled.\n @param onlyAllowUnused A boolean flag indicating whether partial fills\n                        are supported by the calling function.\n @param revertOnInvalid A boolean indicating whether to revert if the\n                        order has been cancelled or filled beyond the\n                        allowable amount.\n @return valid A boolean indicating whether the order is valid."
                  },
                  "id": 8378,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_verifyOrderStatus",
                  "nameLocation": "4001:18:40",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8327,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8319,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "4037:9:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8378,
                        "src": "4029:17:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 8318,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4029:7:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8322,
                        "mutability": "mutable",
                        "name": "orderStatus",
                        "nameLocation": "4075:11:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8378,
                        "src": "4056:30:40",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_OrderStatus_$4040_memory_ptr",
                          "typeString": "struct OrderStatus"
                        },
                        "typeName": {
                          "id": 8321,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 8320,
                            "name": "OrderStatus",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4040,
                            "src": "4056:11:40"
                          },
                          "referencedDeclaration": 4040,
                          "src": "4056:11:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_OrderStatus_$4040_storage_ptr",
                            "typeString": "struct OrderStatus"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8324,
                        "mutability": "mutable",
                        "name": "onlyAllowUnused",
                        "nameLocation": "4101:15:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8378,
                        "src": "4096:20:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8323,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4096:4:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8326,
                        "mutability": "mutable",
                        "name": "revertOnInvalid",
                        "nameLocation": "4131:15:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8378,
                        "src": "4126:20:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8325,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4126:4:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4019:133:40"
                  },
                  "returnParameters": {
                    "id": 8330,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8329,
                        "mutability": "mutable",
                        "name": "valid",
                        "nameLocation": "4181:5:40",
                        "nodeType": "VariableDeclaration",
                        "scope": 8378,
                        "src": "4176:10:40",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8328,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "4176:4:40",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4175:12:40"
                  },
                  "scope": 8379,
                  "src": "3992:1454:40",
                  "stateMutability": "pure",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 8380,
              "src": "348:5100:40",
              "usedErrors": [
                1856,
                1859,
                1866,
                1869,
                1874,
                1883,
                1886,
                1893,
                1896,
                1901,
                1906,
                1909,
                1912,
                1917,
                1920,
                1923,
                2208,
                2217,
                2220,
                2223,
                2226,
                2233,
                2236,
                2249,
                2264,
                2275,
                2280
              ]
            }
          ],
          "src": "32:5417:40"
        },
        "id": 40
      },
      "seaport/contracts/lib/ZoneInteraction.sol": {
        "ast": {
          "absolutePath": "seaport/contracts/lib/ZoneInteraction.sol",
          "exportedSymbols": {
            "AccumulatorArmed": [
              3772
            ],
            "AccumulatorDisarmed": [
              3769
            ],
            "Accumulator_array_length_ptr": [
              3784
            ],
            "Accumulator_array_offset": [
              3790
            ],
            "Accumulator_array_offset_ptr": [
              3781
            ],
            "Accumulator_conduitKey_ptr": [
              3775
            ],
            "Accumulator_itemSizeOffsetDifference": [
              3787
            ],
            "Accumulator_selector_ptr": [
              3778
            ],
            "AdditionalRecipients_size": [
              3530
            ],
            "AdvancedOrder": [
              4031
            ],
            "AdvancedOrder_numerator_offset": [
              3482
            ],
            "BasicOrder_additionalRecipients_data_cdPtr": [
              3621
            ],
            "BasicOrder_additionalRecipients_head_cdPtr": [
              3612
            ],
            "BasicOrder_additionalRecipients_head_ptr": [
              3678
            ],
            "BasicOrder_additionalRecipients_length_cdPtr": [
              3618
            ],
            "BasicOrder_basicOrderType_cdPtr": [
              3597
            ],
            "BasicOrder_considerationAmount_cdPtr": [
              3582
            ],
            "BasicOrder_considerationHashesArray_ptr": [
              3518
            ],
            "BasicOrder_considerationItem_endAmount_ptr": [
              3642
            ],
            "BasicOrder_considerationItem_identifier_ptr": [
              3636
            ],
            "BasicOrder_considerationItem_itemType_ptr": [
              3630
            ],
            "BasicOrder_considerationItem_startAmount_ptr": [
              3639
            ],
            "BasicOrder_considerationItem_token_ptr": [
              3633
            ],
            "BasicOrder_considerationItem_typeHash_ptr": [
              3627
            ],
            "BasicOrder_considerationToken_cdPtr": [
              3579
            ],
            "BasicOrder_endAmount_cdPtr": [
              3515
            ],
            "BasicOrder_fulfillerConduit_cdPtr": [
              3606
            ],
            "BasicOrder_offerAmount_cdPtr": [
              3594
            ],
            "BasicOrder_offerItem_endAmount_ptr": [
              3654
            ],
            "BasicOrder_offerItem_itemType_ptr": [
              3648
            ],
            "BasicOrder_offerItem_token_ptr": [
              3651
            ],
            "BasicOrder_offerItem_typeHash_ptr": [
              3645
            ],
            "BasicOrder_offerToken_cdPtr": [
              3591
            ],
            "BasicOrder_offererConduit_cdPtr": [
              3603
            ],
            "BasicOrder_offerer_cdPtr": [
              3585
            ],
            "BasicOrder_order_considerationHashes_ptr": [
              3666
            ],
            "BasicOrder_order_nonce_ptr": [
              3675
            ],
            "BasicOrder_order_offerHashes_ptr": [
              3663
            ],
            "BasicOrder_order_offerer_ptr": [
              3660
            ],
            "BasicOrder_order_orderType_ptr": [
              3669
            ],
            "BasicOrder_order_startTime_ptr": [
              3672
            ],
            "BasicOrder_order_typeHash_ptr": [
              3657
            ],
            "BasicOrder_parameters_cdPtr": [
              3576
            ],
            "BasicOrder_parameters_ptr": [
              3624
            ],
            "BasicOrder_signature_cdPtr": [
              3615
            ],
            "BasicOrder_signature_ptr": [
              3681
            ],
            "BasicOrder_startTime_cdPtr": [
              3600
            ],
            "BasicOrder_totalOriginalAdditionalRecipients_cdPtr": [
              3609
            ],
            "BasicOrder_zone_cdPtr": [
              3588
            ],
            "Common_amount_offset": [
              3413
            ],
            "Common_identifier_offset": [
              3410
            ],
            "Common_token_offset": [
              3407
            ],
            "Conduit_execute_ConduitTransfer_length": [
              3739
            ],
            "Conduit_execute_ConduitTransfer_length_ptr": [
              3745
            ],
            "Conduit_execute_ConduitTransfer_offset_ptr": [
              3742
            ],
            "Conduit_execute_ConduitTransfer_ptr": [
              3736
            ],
            "Conduit_execute_signature": [
              3733
            ],
            "Conduit_execute_transferAmount_ptr": [
              3763
            ],
            "Conduit_execute_transferFrom_ptr": [
              3754
            ],
            "Conduit_execute_transferIdentifier_ptr": [
              3760
            ],
            "Conduit_execute_transferItemType_ptr": [
              3748
            ],
            "Conduit_execute_transferTo_ptr": [
              3757
            ],
            "Conduit_execute_transferToken_ptr": [
              3751
            ],
            "Conduit_transferItem_amount_ptr": [
              3808
            ],
            "Conduit_transferItem_from_ptr": [
              3799
            ],
            "Conduit_transferItem_identifier_ptr": [
              3805
            ],
            "Conduit_transferItem_size": [
              3793
            ],
            "Conduit_transferItem_to_ptr": [
              3802
            ],
            "Conduit_transferItem_token_ptr": [
              3796
            ],
            "ConsiderItem_recipient_offset": [
              3431
            ],
            "ConsiderationItem_recipient_offset": [
              3428
            ],
            "CostPerWord": [
              3708
            ],
            "Create2AddressDerivation_length": [
              3717
            ],
            "Create2AddressDerivation_ptr": [
              3714
            ],
            "CriteriaResolver": [
              4053
            ],
            "DefaultFreeMemoryPointer": [
              3506
            ],
            "EIP2098_allButHighestBitMask": [
              3685
            ],
            "EIP712_ConsiderationItem_size": [
              3527
            ],
            "EIP712_DigestPayload_size": [
              3539
            ],
            "EIP712_DomainSeparator_offset": [
              3533
            ],
            "EIP712_OfferItem_size": [
              3524
            ],
            "EIP712_OrderHash_offset": [
              3536
            ],
            "EIP712_Order_size": [
              3521
            ],
            "EIP_712_PREFIX": [
              3702
            ],
            "Execution_conduit_offset": [
              3437
            ],
            "Execution_offerer_offset": [
              3434
            ],
            "ExtraGasBuffer": [
              3705
            ],
            "FiveWords": [
              3497
            ],
            "FourWords": [
              3494
            ],
            "FreeMemoryPointerSlot": [
              3500
            ],
            "Fulfillment_itemIndex_offset": [
              3479
            ],
            "InvalidFulfillmentComponentData_error_len": [
              3444
            ],
            "InvalidFulfillmentComponentData_error_signature": [
              3441
            ],
            "LowLevelHelpers": [
              5505
            ],
            "MaskOverByteTwelve": [
              3721
            ],
            "MaskOverFirstFourBytes": [
              3729
            ],
            "MaskOverLastTwentyBytes": [
              3725
            ],
            "MemoryExpansionCoefficient": [
              3711
            ],
            "MissingItemAmount_error_len": [
              3464
            ],
            "MissingItemAmount_error_signature": [
              3461
            ],
            "NameLengthPtr": [
              3389
            ],
            "NameWithLength": [
              3392
            ],
            "NoContract_error_length": [
              3698
            ],
            "NoContract_error_sig_ptr": [
              3692
            ],
            "NoContract_error_signature": [
              3689
            ],
            "NoContract_error_token_ptr": [
              3695
            ],
            "OneConduitExecute_size": [
              3766
            ],
            "OneWord": [
              3485
            ],
            "OrderFulfilled_baseOffset": [
              3552
            ],
            "OrderFulfilled_baseSize": [
              3545
            ],
            "OrderFulfilled_consideration_body_offset": [
              3573
            ],
            "OrderFulfilled_consideration_head_offset": [
              3570
            ],
            "OrderFulfilled_consideration_length_baseOffset": [
              3555
            ],
            "OrderFulfilled_fulfiller_offset": [
              3561
            ],
            "OrderFulfilled_offer_body_offset": [
              3567
            ],
            "OrderFulfilled_offer_head_offset": [
              3564
            ],
            "OrderFulfilled_offer_length_baseOffset": [
              3558
            ],
            "OrderFulfilled_selector": [
              3549
            ],
            "OrderParameters_conduit_offset": [
              3473
            ],
            "OrderParameters_consideration_head_offset": [
              3470
            ],
            "OrderParameters_nonce_offset": [
              3476
            ],
            "OrderParameters_offer_head_offset": [
              3467
            ],
            "OrderType": [
              3815
            ],
            "Panic_arithmetic": [
              3457
            ],
            "Panic_error_length": [
              3454
            ],
            "Panic_error_offset": [
              3451
            ],
            "Panic_error_signature": [
              3448
            ],
            "ReceivedItem_CommonParams_size": [
              3425
            ],
            "ReceivedItem_amount_offset": [
              3419
            ],
            "ReceivedItem_recipient_offset": [
              3422
            ],
            "ReceivedItem_size": [
              3416
            ],
            "Slot0x80": [
              3509
            ],
            "Slot0xA0": [
              3512
            ],
            "ThreeWords": [
              3491
            ],
            "TwoWords": [
              3488
            ],
            "Version": [
              3395
            ],
            "Version_length": [
              3398
            ],
            "ZeroSlot": [
              3503
            ],
            "ZoneInteraction": [
              8592
            ],
            "ZoneInteractionErrors": [
              2290
            ],
            "ZoneInterface": [
              2328
            ],
            "_ENTERED": [
              3404
            ],
            "_NOT_ENTERED": [
              3401
            ],
            "receivedItemsHash_ptr": [
              3542
            ]
          },
          "id": 8593,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8381,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:41"
            },
            {
              "absolutePath": "seaport/contracts/interfaces/ZoneInterface.sol",
              "file": "../interfaces/ZoneInterface.sol",
              "id": 8383,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8593,
              "sourceUnit": 2329,
              "src": "57:64:41",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8382,
                    "name": "ZoneInterface",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2328,
                    "src": "66:13:41",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationEnums.sol",
              "file": "./ConsiderationEnums.sol",
              "id": 8385,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8593,
              "sourceUnit": 3858,
              "src": "123:53:41",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8384,
                    "name": "OrderType",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 3815,
                    "src": "132:9:41",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationStructs.sol",
              "file": "./ConsiderationStructs.sol",
              "id": 8388,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8593,
              "sourceUnit": 4076,
              "src": "197:77:41",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8386,
                    "name": "AdvancedOrder",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4031,
                    "src": "206:13:41",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                },
                {
                  "foreign": {
                    "id": 8387,
                    "name": "CriteriaResolver",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4053,
                    "src": "221:16:41",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/ConsiderationConstants.sol",
              "file": "./ConsiderationConstants.sol",
              "id": 8389,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8593,
              "sourceUnit": 3809,
              "src": "276:38:41",
              "symbolAliases": [],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/interfaces/ZoneInteractionErrors.sol",
              "file": "../interfaces/ZoneInteractionErrors.sol",
              "id": 8391,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8593,
              "sourceUnit": 2291,
              "src": "335:84:41",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8390,
                    "name": "ZoneInteractionErrors",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2290,
                    "src": "348:21:41",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "absolutePath": "seaport/contracts/lib/LowLevelHelpers.sol",
              "file": "./LowLevelHelpers.sol",
              "id": 8393,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8593,
              "sourceUnit": 5506,
              "src": "421:56:41",
              "symbolAliases": [
                {
                  "foreign": {
                    "id": 8392,
                    "name": "LowLevelHelpers",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 5505,
                    "src": "430:15:41",
                    "typeDescriptions": {}
                  },
                  "nameLocation": "-1:-1:-1"
                }
              ],
              "unitAlias": ""
            },
            {
              "abstract": false,
              "baseContracts": [
                {
                  "baseName": {
                    "id": 8395,
                    "name": "ZoneInteractionErrors",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 2290,
                    "src": "634:21:41"
                  },
                  "id": 8396,
                  "nodeType": "InheritanceSpecifier",
                  "src": "634:21:41"
                },
                {
                  "baseName": {
                    "id": 8397,
                    "name": "LowLevelHelpers",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 5505,
                    "src": "657:15:41"
                  },
                  "id": 8398,
                  "nodeType": "InheritanceSpecifier",
                  "src": "657:15:41"
                }
              ],
              "canonicalName": "ZoneInteraction",
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": {
                "id": 8394,
                "nodeType": "StructuredDocumentation",
                "src": "479:126:41",
                "text": " @title ZoneInteraction\n @author 0age\n @notice ZoneInteraction contains logic related to interacting with zones."
              },
              "fullyImplemented": true,
              "id": 8592,
              "linearizedBaseContracts": [
                8592,
                5505,
                2290
              ],
              "name": "ZoneInteraction",
              "nameLocation": "615:15:41",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 8438,
                    "nodeType": "Block",
                    "src": "1471:350:41",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 8428,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 8423,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8418,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 8415,
                                    "name": "orderType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8406,
                                    "src": "1586:9:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_OrderType_$3815",
                                      "typeString": "enum OrderType"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_OrderType_$3815",
                                      "typeString": "enum OrderType"
                                    }
                                  ],
                                  "id": 8414,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1578:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 8413,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1578:7:41",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 8416,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1578:18:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 8417,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1599:1:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "1578:22:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 8422,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 8419,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "1616:3:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 8420,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "1616:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 8421,
                                "name": "zone",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8410,
                                "src": "1630:4:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1616:18:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1578:56:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 8427,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 8424,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1650:3:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8425,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "1650:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "id": 8426,
                              "name": "offerer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8408,
                              "src": "1664:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1650:21:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "1578:93:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8437,
                        "nodeType": "IfStatement",
                        "src": "1561:254:41",
                        "trueBody": {
                          "id": 8436,
                          "nodeType": "Block",
                          "src": "1682:133:41",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 8430,
                                    "name": "zone",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8410,
                                    "src": "1769:4:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8431,
                                    "name": "orderHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8401,
                                    "src": "1775:9:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "id": 8432,
                                    "name": "offerer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8408,
                                    "src": "1786:7:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "id": 8433,
                                    "name": "zoneHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8403,
                                    "src": "1795:8:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 8429,
                                  "name": "_callIsValidOrder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8473,
                                  "src": "1751:17:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_address_$_t_bytes32_$returns$__$",
                                    "typeString": "function (address,bytes32,address,bytes32) view"
                                  }
                                },
                                "id": 8434,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1751:53:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8435,
                              "nodeType": "ExpressionStatement",
                              "src": "1751:53:41"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8399,
                    "nodeType": "StructuredDocumentation",
                    "src": "679:593:41",
                    "text": " @dev Internal view function to determine if an order has a restricted\n      order type and, if so, to ensure that either the offerer or the zone\n      are the fulfiller or that a staticcall to `isValidOrder` on the zone\n      returns a magic value indicating that the order is currently valid.\n @param orderHash The hash of the order.\n @param zoneHash  The hash to provide upon calling the zone.\n @param orderType The type of the order.\n @param offerer   The offerer in question.\n @param zone      The zone in question."
                  },
                  "id": 8439,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_assertRestrictedBasicOrderValidity",
                  "nameLocation": "1286:35:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8411,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8401,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "1339:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8439,
                        "src": "1331:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 8400,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1331:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8403,
                        "mutability": "mutable",
                        "name": "zoneHash",
                        "nameLocation": "1366:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8439,
                        "src": "1358:16:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 8402,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1358:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8406,
                        "mutability": "mutable",
                        "name": "orderType",
                        "nameLocation": "1394:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8439,
                        "src": "1384:19:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_OrderType_$3815",
                          "typeString": "enum OrderType"
                        },
                        "typeName": {
                          "id": 8405,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 8404,
                            "name": "OrderType",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3815,
                            "src": "1384:9:41"
                          },
                          "referencedDeclaration": 3815,
                          "src": "1384:9:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_OrderType_$3815",
                            "typeString": "enum OrderType"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8408,
                        "mutability": "mutable",
                        "name": "offerer",
                        "nameLocation": "1421:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8439,
                        "src": "1413:15:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8407,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1413:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8410,
                        "mutability": "mutable",
                        "name": "zone",
                        "nameLocation": "1446:4:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8439,
                        "src": "1438:12:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8409,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1438:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1321:135:41"
                  },
                  "returnParameters": {
                    "id": 8412,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1471:0:41"
                  },
                  "scope": 8592,
                  "src": "1277:544:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8472,
                    "nodeType": "Block",
                    "src": "1974:474:41",
                    "statements": [
                      {
                        "assignments": [
                          8451
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 8451,
                            "mutability": "mutable",
                            "name": "success",
                            "nameLocation": "2040:7:41",
                            "nodeType": "VariableDeclaration",
                            "scope": 8472,
                            "src": "2035:12:41",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "typeName": {
                              "id": 8450,
                              "name": "bool",
                              "nodeType": "ElementaryTypeName",
                              "src": "2035:4:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 8466,
                        "initialValue": {
                          "arguments": [
                            {
                              "id": 8453,
                              "name": "zone",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8441,
                              "src": "2075:4:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "expression": {
                                      "id": 8456,
                                      "name": "ZoneInterface",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2328,
                                      "src": "2133:13:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ZoneInterface_$2328_$",
                                        "typeString": "type(contract ZoneInterface)"
                                      }
                                    },
                                    "id": 8457,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "isValidOrder",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 2308,
                                    "src": "2133:26:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_declaration_view$_t_bytes32_$_t_address_$_t_address_$_t_bytes32_$returns$_t_bytes4_$",
                                      "typeString": "function ZoneInterface.isValidOrder(bytes32,address,address,bytes32) view returns (bytes4)"
                                    }
                                  },
                                  "id": 8458,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "selector",
                                  "nodeType": "MemberAccess",
                                  "src": "2133:35:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  }
                                },
                                {
                                  "id": 8459,
                                  "name": "orderHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8443,
                                  "src": "2186:9:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 8460,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "2213:3:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 8461,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "2213:10:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 8462,
                                  "name": "offerer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8445,
                                  "src": "2241:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 8463,
                                  "name": "zoneHash",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8447,
                                  "src": "2266:8:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes4",
                                    "typeString": "bytes4"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "expression": {
                                  "id": 8454,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "2093:3:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 8455,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodeWithSelector",
                                "nodeType": "MemberAccess",
                                "src": "2093:22:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function (bytes4) pure returns (bytes memory)"
                                }
                              },
                              "id": 8464,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2093:195:41",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 8452,
                            "name": "_staticcall",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5481,
                            "src": "2050:11:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (address,bytes memory) view returns (bool)"
                            }
                          },
                          "id": 8465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2050:248:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2035:263:41"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8468,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8451,
                              "src": "2422:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "id": 8469,
                              "name": "orderHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8443,
                              "src": "2431:9:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 8467,
                            "name": "_assertIsValidOrderStaticcallSuccess",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8591,
                            "src": "2385:36:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bool_$_t_bytes32_$returns$__$",
                              "typeString": "function (bool,bytes32) view"
                            }
                          },
                          "id": 8470,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2385:56:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8471,
                        "nodeType": "ExpressionStatement",
                        "src": "2385:56:41"
                      }
                    ]
                  },
                  "id": 8473,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_callIsValidOrder",
                  "nameLocation": "1836:17:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8448,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8441,
                        "mutability": "mutable",
                        "name": "zone",
                        "nameLocation": "1871:4:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8473,
                        "src": "1863:12:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8440,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1863:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8443,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "1893:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8473,
                        "src": "1885:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 8442,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1885:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8445,
                        "mutability": "mutable",
                        "name": "offerer",
                        "nameLocation": "1920:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8473,
                        "src": "1912:15:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8444,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1912:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8447,
                        "mutability": "mutable",
                        "name": "zoneHash",
                        "nameLocation": "1945:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8473,
                        "src": "1937:16:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 8446,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "1937:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "1853:106:41"
                  },
                  "returnParameters": {
                    "id": 8449,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "1974:0:41"
                  },
                  "scope": 8592,
                  "src": "1827:621:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8559,
                    "nodeType": "Block",
                    "src": "4495:1338:41",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 8513,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 8508,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8503,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "arguments": [
                                  {
                                    "id": 8500,
                                    "name": "orderType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8491,
                                    "src": "4610:9:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_OrderType_$3815",
                                      "typeString": "enum OrderType"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_OrderType_$3815",
                                      "typeString": "enum OrderType"
                                    }
                                  ],
                                  "id": 8499,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4602:7:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 8498,
                                    "name": "uint256",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4602:7:41",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 8501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4602:18:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 8502,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4623:1:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "4602:22:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 8507,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "expression": {
                                  "id": 8504,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "4640:3:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 8505,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "src": "4640:10:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "id": 8506,
                                "name": "zone",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8495,
                                "src": "4654:4:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4640:18:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "4602:56:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 8512,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 8509,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4674:3:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 8510,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "4674:10:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "id": 8511,
                              "name": "offerer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8493,
                              "src": "4688:7:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4674:21:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4602:93:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8558,
                        "nodeType": "IfStatement",
                        "src": "4585:1242:41",
                        "trueBody": {
                          "id": 8557,
                          "nodeType": "Block",
                          "src": "4706:1121:41",
                          "statements": [
                            {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 8523,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8518,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "expression": {
                                        "id": 8514,
                                        "name": "advancedOrder",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8477,
                                        "src": "4810:13:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                          "typeString": "struct AdvancedOrder memory"
                                        }
                                      },
                                      "id": 8515,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "extraData",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4030,
                                      "src": "4810:23:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 8516,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "4810:30:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 8517,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4844:1:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "4810:35:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 8522,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "expression": {
                                      "id": 8519,
                                      "name": "criteriaResolvers",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8481,
                                      "src": "4865:17:41",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct CriteriaResolver memory[] memory"
                                      }
                                    },
                                    "id": 8520,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "src": "4865:24:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "30",
                                    "id": 8521,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4893:1:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "src": "4865:29:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "4810:84:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "id": 8555,
                                "nodeType": "Block",
                                "src": "5060:757:41",
                                "statements": [
                                  {
                                    "assignments": [
                                      8533
                                    ],
                                    "declarations": [
                                      {
                                        "constant": false,
                                        "id": 8533,
                                        "mutability": "mutable",
                                        "name": "success",
                                        "nameLocation": "5242:7:41",
                                        "nodeType": "VariableDeclaration",
                                        "scope": 8555,
                                        "src": "5237:12:41",
                                        "stateVariable": false,
                                        "storageLocation": "default",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        },
                                        "typeName": {
                                          "id": 8532,
                                          "name": "bool",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "5237:4:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "visibility": "internal"
                                      }
                                    ],
                                    "id": 8549,
                                    "initialValue": {
                                      "arguments": [
                                        {
                                          "id": 8535,
                                          "name": "zone",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8495,
                                          "src": "5285:4:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "expression": {
                                                "expression": {
                                                  "id": 8538,
                                                  "name": "ZoneInterface",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 2328,
                                                  "src": "5359:13:41",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_contract$_ZoneInterface_$2328_$",
                                                    "typeString": "type(contract ZoneInterface)"
                                                  }
                                                },
                                                "id": 8539,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberName": "isValidOrderIncludingExtraData",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 2327,
                                                "src": "5359:44:41",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_declaration_view$_t_bytes32_$_t_address_$_t_struct$_AdvancedOrder_$4031_calldata_ptr_$_t_array$_t_bytes32_$dyn_calldata_ptr_$_t_array$_t_struct$_CriteriaResolver_$4053_calldata_ptr_$dyn_calldata_ptr_$returns$_t_bytes4_$",
                                                  "typeString": "function ZoneInterface.isValidOrderIncludingExtraData(bytes32,address,struct AdvancedOrder calldata,bytes32[] calldata,struct CriteriaResolver calldata[] calldata) view returns (bytes4)"
                                                }
                                              },
                                              "id": 8540,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "memberName": "selector",
                                              "nodeType": "MemberAccess",
                                              "src": "5359:53:41",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                              }
                                            },
                                            {
                                              "id": 8541,
                                              "name": "orderHash",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8486,
                                              "src": "5438:9:41",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 8542,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -15,
                                                "src": "5473:3:41",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_magic_message",
                                                  "typeString": "msg"
                                                }
                                              },
                                              "id": 8543,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "sender",
                                              "nodeType": "MemberAccess",
                                              "src": "5473:10:41",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              }
                                            },
                                            {
                                              "id": 8544,
                                              "name": "advancedOrder",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8477,
                                              "src": "5509:13:41",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                                "typeString": "struct AdvancedOrder memory"
                                              }
                                            },
                                            {
                                              "id": 8545,
                                              "name": "priorOrderHashes",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8484,
                                              "src": "5548:16:41",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                "typeString": "bytes32[] memory"
                                              }
                                            },
                                            {
                                              "id": 8546,
                                              "name": "criteriaResolvers",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8481,
                                              "src": "5590:17:41",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct CriteriaResolver memory[] memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes4",
                                                "typeString": "bytes4"
                                              },
                                              {
                                                "typeIdentifier": "t_bytes32",
                                                "typeString": "bytes32"
                                              },
                                              {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                              },
                                              {
                                                "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                                                "typeString": "struct AdvancedOrder memory"
                                              },
                                              {
                                                "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                                                "typeString": "bytes32[] memory"
                                              },
                                              {
                                                "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                                                "typeString": "struct CriteriaResolver memory[] memory"
                                              }
                                            ],
                                            "expression": {
                                              "id": 8536,
                                              "name": "abi",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": -1,
                                              "src": "5311:3:41",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_magic_abi",
                                                "typeString": "abi"
                                              }
                                            },
                                            "id": 8537,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "memberName": "encodeWithSelector",
                                            "nodeType": "MemberAccess",
                                            "src": "5311:22:41",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                              "typeString": "function (bytes4) pure returns (bytes memory)"
                                            }
                                          },
                                          "id": 8547,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "5311:318:41",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes_memory_ptr",
                                            "typeString": "bytes memory"
                                          }
                                        ],
                                        "id": 8534,
                                        "name": "_staticcall",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5481,
                                        "src": "5252:11:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                                          "typeString": "function (address,bytes memory) view returns (bool)"
                                        }
                                      },
                                      "id": 8548,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5252:395:41",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "5237:410:41"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 8551,
                                          "name": "success",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8533,
                                          "src": "5783:7:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        {
                                          "id": 8552,
                                          "name": "orderHash",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8486,
                                          "src": "5792:9:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 8550,
                                        "name": "_assertIsValidOrderStaticcallSuccess",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8591,
                                        "src": "5746:36:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_bool_$_t_bytes32_$returns$__$",
                                          "typeString": "function (bool,bytes32) view"
                                        }
                                      },
                                      "id": 8553,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5746:56:41",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 8554,
                                    "nodeType": "ExpressionStatement",
                                    "src": "5746:56:41"
                                  }
                                ]
                              },
                              "id": 8556,
                              "nodeType": "IfStatement",
                              "src": "4789:1028:41",
                              "trueBody": {
                                "id": 8531,
                                "nodeType": "Block",
                                "src": "4909:145:41",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "id": 8525,
                                          "name": "zone",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8495,
                                          "src": "5004:4:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 8526,
                                          "name": "orderHash",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8486,
                                          "src": "5010:9:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "id": 8527,
                                          "name": "offerer",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8493,
                                          "src": "5021:7:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "id": 8528,
                                          "name": "zoneHash",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8488,
                                          "src": "5030:8:41",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        ],
                                        "id": 8524,
                                        "name": "_callIsValidOrder",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8473,
                                        "src": "4986:17:41",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$_t_address_$_t_bytes32_$returns$__$",
                                          "typeString": "function (address,bytes32,address,bytes32) view"
                                        }
                                      },
                                      "id": 8529,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4986:53:41",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$__$",
                                        "typeString": "tuple()"
                                      }
                                    },
                                    "id": 8530,
                                    "nodeType": "ExpressionStatement",
                                    "src": "4986:53:41"
                                  }
                                ]
                              }
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8474,
                    "nodeType": "StructuredDocumentation",
                    "src": "2454:1699:41",
                    "text": " @dev Internal view function to determine whether an order is a restricted\n      order and, if so, to ensure that it was either submitted by the\n      offerer or the zone for the order, or that the zone returns the\n      expected magic value upon performing a staticcall to `isValidOrder`\n      or `isValidOrderIncludingExtraData` depending on whether the order\n      fulfillment specifies extra data or criteria resolvers.\n @param advancedOrder     The advanced order in question.\n @param criteriaResolvers An array where each element contains a reference\n                          to a specific offer or consideration, a token\n                          identifier, and a proof that the supplied token\n                          identifier is contained in the order's merkle\n                          root. Note that a criteria of zero indicates\n                          that any (transferrable) token identifier is\n                          valid and that no proof needs to be supplied.\n @param priorOrderHashes  The order hashes of each order supplied prior to\n                          the current order as part of a \"match\" variety\n                          of order fulfillment (e.g. this array will be\n                          empty for single or \"fulfill available\").\n @param orderHash         The hash of the order.\n @param zoneHash          The hash to provide upon calling the zone.\n @param orderType         The type of the order.\n @param offerer           The offerer in question.\n @param zone              The zone in question."
                  },
                  "id": 8560,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_assertRestrictedAdvancedOrderValidity",
                  "nameLocation": "4167:38:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8496,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8477,
                        "mutability": "mutable",
                        "name": "advancedOrder",
                        "nameLocation": "4236:13:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8560,
                        "src": "4215:34:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AdvancedOrder_$4031_memory_ptr",
                          "typeString": "struct AdvancedOrder"
                        },
                        "typeName": {
                          "id": 8476,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 8475,
                            "name": "AdvancedOrder",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 4031,
                            "src": "4215:13:41"
                          },
                          "referencedDeclaration": 4031,
                          "src": "4215:13:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AdvancedOrder_$4031_storage_ptr",
                            "typeString": "struct AdvancedOrder"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8481,
                        "mutability": "mutable",
                        "name": "criteriaResolvers",
                        "nameLocation": "4285:17:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8560,
                        "src": "4259:43:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct CriteriaResolver[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8479,
                            "nodeType": "UserDefinedTypeName",
                            "pathNode": {
                              "id": 8478,
                              "name": "CriteriaResolver",
                              "nodeType": "IdentifierPath",
                              "referencedDeclaration": 4053,
                              "src": "4259:16:41"
                            },
                            "referencedDeclaration": 4053,
                            "src": "4259:16:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CriteriaResolver_$4053_storage_ptr",
                              "typeString": "struct CriteriaResolver"
                            }
                          },
                          "id": 8480,
                          "nodeType": "ArrayTypeName",
                          "src": "4259:18:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_CriteriaResolver_$4053_storage_$dyn_storage_ptr",
                            "typeString": "struct CriteriaResolver[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8484,
                        "mutability": "mutable",
                        "name": "priorOrderHashes",
                        "nameLocation": "4329:16:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8560,
                        "src": "4312:33:41",
                        "stateVariable": false,
                        "storageLocation": "memory",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                          "typeString": "bytes32[]"
                        },
                        "typeName": {
                          "baseType": {
                            "id": 8482,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "4312:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 8483,
                          "nodeType": "ArrayTypeName",
                          "src": "4312:9:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                            "typeString": "bytes32[]"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8486,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "4363:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8560,
                        "src": "4355:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 8485,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4355:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8488,
                        "mutability": "mutable",
                        "name": "zoneHash",
                        "nameLocation": "4390:8:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8560,
                        "src": "4382:16:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 8487,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "4382:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8491,
                        "mutability": "mutable",
                        "name": "orderType",
                        "nameLocation": "4418:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8560,
                        "src": "4408:19:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_OrderType_$3815",
                          "typeString": "enum OrderType"
                        },
                        "typeName": {
                          "id": 8490,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 8489,
                            "name": "OrderType",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 3815,
                            "src": "4408:9:41"
                          },
                          "referencedDeclaration": 3815,
                          "src": "4408:9:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_OrderType_$3815",
                            "typeString": "enum OrderType"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8493,
                        "mutability": "mutable",
                        "name": "offerer",
                        "nameLocation": "4445:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8560,
                        "src": "4437:15:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8492,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4437:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8495,
                        "mutability": "mutable",
                        "name": "zone",
                        "nameLocation": "4470:4:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8560,
                        "src": "4462:12:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 8494,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4462:7:41",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "4205:275:41"
                  },
                  "returnParameters": {
                    "id": 8497,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "4495:0:41"
                  },
                  "scope": 8592,
                  "src": "4158:1675:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 8590,
                    "nodeType": "Block",
                    "src": "6417:518:41",
                    "statements": [
                      {
                        "condition": {
                          "id": 8569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "6464:8:41",
                          "subExpression": {
                            "id": 8568,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8563,
                            "src": "6465:7:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8578,
                        "nodeType": "IfStatement",
                        "src": "6460:256:41",
                        "trueBody": {
                          "id": 8577,
                          "nodeType": "Block",
                          "src": "6474:242:41",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "id": 8570,
                                  "name": "_revertWithReasonIfOneIsReturned",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5487,
                                  "src": "6553:32:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$__$returns$__$",
                                    "typeString": "function () view"
                                  }
                                },
                                "id": 8571,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6553:34:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8572,
                              "nodeType": "ExpressionStatement",
                              "src": "6553:34:41"
                            },
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 8574,
                                    "name": "orderHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8565,
                                    "src": "6695:9:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 8573,
                                  "name": "InvalidRestrictedOrder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2289,
                                  "src": "6672:22:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32) pure"
                                  }
                                },
                                "id": 8575,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6672:33:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8576,
                              "nodeType": "RevertStatement",
                              "src": "6665:40:41"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "arguments": [
                            {
                              "expression": {
                                "expression": {
                                  "id": 8580,
                                  "name": "ZoneInterface",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2328,
                                  "src": "6826:13:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_ZoneInterface_$2328_$",
                                    "typeString": "type(contract ZoneInterface)"
                                  }
                                },
                                "id": 8581,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "isValidOrder",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 2308,
                                "src": "6826:26:41",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_declaration_view$_t_bytes32_$_t_address_$_t_address_$_t_bytes32_$returns$_t_bytes4_$",
                                  "typeString": "function ZoneInterface.isValidOrder(bytes32,address,address,bytes32) view returns (bytes4)"
                                }
                              },
                              "id": 8582,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "src": "6826:35:41",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            ],
                            "id": 8579,
                            "name": "_doesNotMatchMagic",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5504,
                            "src": "6807:18:41",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_bytes4_$returns$_t_bool_$",
                              "typeString": "function (bytes4) pure returns (bool)"
                            }
                          },
                          "id": 8583,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6807:55:41",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8589,
                        "nodeType": "IfStatement",
                        "src": "6803:126:41",
                        "trueBody": {
                          "id": 8588,
                          "nodeType": "Block",
                          "src": "6864:65:41",
                          "statements": [
                            {
                              "errorCall": {
                                "arguments": [
                                  {
                                    "id": 8585,
                                    "name": "orderHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8565,
                                    "src": "6908:9:41",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 8584,
                                  "name": "InvalidRestrictedOrder",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2289,
                                  "src": "6885:22:41",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32) pure"
                                  }
                                },
                                "id": 8586,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6885:33:41",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 8587,
                              "nodeType": "RevertStatement",
                              "src": "6878:40:41"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "documentation": {
                    "id": 8561,
                    "nodeType": "StructuredDocumentation",
                    "src": "5839:458:41",
                    "text": " @dev Internal view function to ensure that a staticcall to `isValidOrder`\n      or `isValidOrderIncludingExtraData` as part of validating a\n      restricted order that was not submitted by the named offerer or zone\n      was successful and returned the required magic value.\n @param success   A boolean indicating the status of the staticcall.\n @param orderHash The order hash of the order in question."
                  },
                  "id": 8591,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "_assertIsValidOrderStaticcallSuccess",
                  "nameLocation": "6311:36:41",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 8566,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8563,
                        "mutability": "mutable",
                        "name": "success",
                        "nameLocation": "6362:7:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8591,
                        "src": "6357:12:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 8562,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "6357:4:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 8565,
                        "mutability": "mutable",
                        "name": "orderHash",
                        "nameLocation": "6387:9:41",
                        "nodeType": "VariableDeclaration",
                        "scope": 8591,
                        "src": "6379:17:41",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 8564,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "6379:7:41",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "6347:55:41"
                  },
                  "returnParameters": {
                    "id": 8567,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "6417:0:41"
                  },
                  "scope": 8592,
                  "src": "6302:633:41",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "internal"
                }
              ],
              "scope": 8593,
              "src": "606:6331:41",
              "usedErrors": [
                2289
              ]
            }
          ],
          "src": "32:6906:41"
        },
        "id": 41
      },
      "src/contracts/Conduit.sol": {
        "ast": {
          "absolutePath": "src/contracts/Conduit.sol",
          "exportedSymbols": {
            "Conduit": [
              739
            ],
            "ConduitBatch1155Transfer": [
              1482
            ],
            "ConduitInterface": [
              1801
            ],
            "ConduitItemType": [
              1451
            ],
            "ConduitTransfer": [
              1469
            ],
            "TokenTransferrer": [
              7981
            ]
          },
          "id": 8596,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8594,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:42"
            },
            {
              "absolutePath": "seaport/contracts/conduit/Conduit.sol",
              "file": "seaport/contracts/conduit/Conduit.sol",
              "id": 8595,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8596,
              "sourceUnit": 740,
              "src": "57:47:42",
              "symbolAliases": [],
              "unitAlias": ""
            }
          ],
          "src": "32:73:42"
        },
        "id": 42
      },
      "src/contracts/ConduitController.sol": {
        "ast": {
          "absolutePath": "src/contracts/ConduitController.sol",
          "exportedSymbols": {
            "Conduit": [
              739
            ],
            "ConduitController": [
              1444
            ],
            "ConduitControllerInterface": [
              1733
            ],
            "ConduitInterface": [
              1801
            ]
          },
          "id": 8599,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8597,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:43"
            },
            {
              "absolutePath": "seaport/contracts/conduit/ConduitController.sol",
              "file": "seaport/contracts/conduit/ConduitController.sol",
              "id": 8598,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8599,
              "sourceUnit": 1445,
              "src": "57:57:43",
              "symbolAliases": [],
              "unitAlias": ""
            }
          ],
          "src": "32:83:43"
        },
        "id": 43
      },
      "src/contracts/Seaport.sol": {
        "ast": {
          "absolutePath": "src/contracts/Seaport.sol",
          "exportedSymbols": {
            "Consideration": [
              408
            ],
            "Seaport": [
              445
            ]
          },
          "id": 8602,
          "license": "MIT",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 8600,
              "literals": [
                "solidity",
                "0.8",
                ".13"
              ],
              "nodeType": "PragmaDirective",
              "src": "32:23:44"
            },
            {
              "absolutePath": "seaport/contracts/Seaport.sol",
              "file": "seaport/contracts/Seaport.sol",
              "id": 8601,
              "nameLocation": "-1:-1:-1",
              "nodeType": "ImportDirective",
              "scope": 8602,
              "sourceUnit": 446,
              "src": "57:39:44",
              "symbolAliases": [],
              "unitAlias": ""
            }
          ],
          "src": "32:65:44"
        },
        "id": 44
      }
    }
  }
}
